From b8574291fc3a2f5d7e1bf509801dae966faccba6 Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Thu, 22 Sep 2016 13:57:52 +0100 Subject: [PATCH] Force Ansible to use dynamic includes Ansible 2.1.1 introduces a regression in the way conditional includes are handled which results in every task in the included file being evaluated even if the condition for the include is not met. This extends the run time significantly for a deployment. This patch forces all conditional includes to be dynamic. Change-Id: I634d7ba7c7d59b21cffd3cddfdc28717bbe91a86 Related-Bug: https://github.com/ansible/ansible/issues/17687 --- tasks/ironic_api_install.yml | 1 + tasks/ironic_conductor_install.yml | 2 ++ tasks/ironic_init_common.yml | 2 ++ tasks/ironic_install.yml | 1 + tasks/main.yml | 24 ++++++++++++------------ 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/tasks/ironic_api_install.yml b/tasks/ironic_api_install.yml index 2f0d7575..f1fee844 100644 --- a/tasks/ironic_api_install.yml +++ b/tasks/ironic_api_install.yml @@ -14,6 +14,7 @@ # limitations under the License. - include: ironic_install_apt.yml + static: no when: - ansible_pkg_mgr == 'apt' vars: diff --git a/tasks/ironic_conductor_install.yml b/tasks/ironic_conductor_install.yml index bf45f55e..36e16e6e 100644 --- a/tasks/ironic_conductor_install.yml +++ b/tasks/ironic_conductor_install.yml @@ -14,12 +14,14 @@ # limitations under the License. - include: ironic_install_apt.yml + static: no when: - ansible_pkg_mgr == 'apt' vars: apt_pkgs: "{{ ironic_conductor_distro_packages }}" - include: ironic_install_apt.yml + static: no when: - ansible_pkg_mgr == 'apt' - ironic_standalone diff --git a/tasks/ironic_init_common.yml b/tasks/ironic_init_common.yml index 7511025c..13a6cb5c 100644 --- a/tasks/ironic_init_common.yml +++ b/tasks/ironic_init_common.yml @@ -14,9 +14,11 @@ # limitations under the License. - include: ironic_init_upstart.yml + static: no when: pid1_name == "init" - include: ironic_init_systemd.yml + static: no when: pid1_name == "systemd" - name: Load service diff --git a/tasks/ironic_install.yml b/tasks/ironic_install.yml index 42de2cc9..960472cd 100644 --- a/tasks/ironic_install.yml +++ b/tasks/ironic_install.yml @@ -24,6 +24,7 @@ - ironic_developer_mode | bool - include: ironic_install_apt.yml + static: no when: - ansible_pkg_mgr == 'apt' - ironic_developer_mode | bool diff --git a/tasks/main.yml b/tasks/main.yml index 83cd050e..549d7ae7 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -45,14 +45,14 @@ - ironic-install - include: ironic_api_install.yml - when: > - inventory_hostname in groups['ironic_api'] + static: no + when: inventory_hostname in groups['ironic_api'] tags: - ironic-install - include: ironic_conductor_install.yml - when: > - inventory_hostname in groups['ironic_conductor'] + static: no + when: inventory_hostname in groups['ironic_conductor'] tags: - ironic-install @@ -62,20 +62,20 @@ - ironic-config - include: ironic_api_post_install.yml - when: > - inventory_hostname in groups['ironic_api'] + static: no + when: inventory_hostname in groups['ironic_api'] tags: - ironic-config - include: ironic_conductor_post_install.yml - when: > - inventory_hostname in groups['ironic_conductor'] + static: no + when: inventory_hostname in groups['ironic_conductor'] tags: - ironic-config - include: ironic_db_setup.yml - when: > - inventory_hostname == groups['ironic_conductor'][0] + static: no + when: inventory_hostname == groups['ironic_conductor'][0] tags: - ironic-install @@ -84,7 +84,7 @@ - ironic-install - include: ironic_service_setup.yml - when: > - inventory_hostname == groups['ironic_api'][0] + static: no + when: inventory_hostname == groups['ironic_api'][0] tags: - ironic-install