Gather facts before including common-playbooks
For nova, neutron and cinder, haproxy service is configured before playbooks from common-playbooks/ are included(and facts for these hosts are gathered). Eventually, haproxy config tasks are executed without common facts. It may lead to several corner cases. For example, after facts cache expires and user runs os-nova-install.yml, haproxy config('Create haproxy service config files' task) will fail because `haproxy_service_configs` uses `nova_console_type` variable which needs `ansible_facts['architecture']`. It can be easily reproduced with: ``` rm -rf /etc/openstack_deploy/ansible_facts/ && \ openstack-ansible /opt/openstack-ansible/playbooks/os-nova-install.yml ``` As a solution, this change gathers facts at the beginning of os-<service>-install.yml playbooks, instead of doing this inside common-playbooks/<service>.yml. This bug was not detected by CI because during deployment process, hardware facts are gathered for all hosts (at least) by security-hardening.yml. As long as they exists in cache everything works fine. Change-Id: I27073a1bf85294ff65bde24cae939f28f5c69bd7
This commit is contained in:
parent
ea0bbd2c58
commit
60750a2796
@ -13,25 +13,6 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- name: Gather cinder facts
|
|
||||||
hosts: "{{ cinder_hosts }}"
|
|
||||||
gather_facts: false
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
tasks:
|
|
||||||
- name: Gather minimal facts for cinder
|
|
||||||
setup:
|
|
||||||
gather_subset:
|
|
||||||
- "!all"
|
|
||||||
- min
|
|
||||||
when: osa_gather_facts | default(True)
|
|
||||||
|
|
||||||
- name: Gather additional facts for cinder
|
|
||||||
setup:
|
|
||||||
gather_subset: "{{ cinder_gather_subset | default('processor_count') }}"
|
|
||||||
filter: "{{ cinder_gather_filter | default('ansible_processor*') }}"
|
|
||||||
when: osa_gather_facts | default(True)
|
|
||||||
|
|
||||||
- name: Install cinder services
|
- name: Install cinder services
|
||||||
hosts: "{{ cinder_hosts }}"
|
hosts: "{{ cinder_hosts }}"
|
||||||
serial: "{{ cinder_serial }}"
|
serial: "{{ cinder_serial }}"
|
||||||
|
@ -13,25 +13,6 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- name: Gather neutron facts
|
|
||||||
hosts: "{{ neutron_hosts }}"
|
|
||||||
gather_facts: false
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
tasks:
|
|
||||||
- name: Gather minimal facts for neutron
|
|
||||||
setup:
|
|
||||||
gather_subset:
|
|
||||||
- "!all"
|
|
||||||
- min
|
|
||||||
when: osa_gather_facts | default(True)
|
|
||||||
|
|
||||||
- name: Gather additional facts for neutron
|
|
||||||
setup:
|
|
||||||
gather_subset: "{{ neutron_gather_subset | default('processor_count') }}"
|
|
||||||
filter: "{{ neutron_gather_filter | default('ansible_processor*') }}"
|
|
||||||
when: osa_gather_facts | default(True)
|
|
||||||
|
|
||||||
- name: Install neutron services
|
- name: Install neutron services
|
||||||
hosts: "{{ neutron_hosts }}"
|
hosts: "{{ neutron_hosts }}"
|
||||||
serial: "{{ neutron_serial }}"
|
serial: "{{ neutron_serial }}"
|
||||||
|
@ -13,25 +13,6 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- name: Gather nova facts
|
|
||||||
hosts: "{{ nova_hosts }}"
|
|
||||||
gather_facts: false
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
tasks:
|
|
||||||
- name: Gather minimal facts for nova
|
|
||||||
setup:
|
|
||||||
gather_subset:
|
|
||||||
- "!all"
|
|
||||||
- min
|
|
||||||
when: osa_gather_facts | default(True)
|
|
||||||
|
|
||||||
- name: Gather additional facts for nova
|
|
||||||
setup:
|
|
||||||
gather_subset: "{{ nova_gather_subset | default('processor_count') }}"
|
|
||||||
filter: "{{ nova_gather_filter | default('ansible_processor*') }}"
|
|
||||||
when: osa_gather_facts | default(True)
|
|
||||||
|
|
||||||
- name: Install nova services
|
- name: Install nova services
|
||||||
hosts: "{{ nova_hosts }}"
|
hosts: "{{ nova_hosts }}"
|
||||||
serial: "{{ nova_serial }}"
|
serial: "{{ nova_serial }}"
|
||||||
|
@ -13,22 +13,37 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
- name: Gather cinder facts
|
||||||
|
hosts: cinder_all
|
||||||
|
gather_facts: false
|
||||||
|
tags:
|
||||||
|
- always
|
||||||
|
tasks:
|
||||||
|
- name: Gather minimal facts for cinder
|
||||||
|
setup:
|
||||||
|
gather_subset:
|
||||||
|
- "!all"
|
||||||
|
- min
|
||||||
|
when: osa_gather_facts | default(True)
|
||||||
|
|
||||||
|
- name: Gather additional facts for cinder
|
||||||
|
setup:
|
||||||
|
gather_subset: "{{ cinder_gather_subset | default('processor_count') }}"
|
||||||
|
filter: "{{ cinder_gather_filter | default('ansible_processor*') }}"
|
||||||
|
when: osa_gather_facts | default(True)
|
||||||
|
|
||||||
- name: Install cinder scheduler services
|
- name: Install cinder scheduler services
|
||||||
import_playbook: common-playbooks/cinder.yml
|
import_playbook: common-playbooks/cinder.yml
|
||||||
vars:
|
vars:
|
||||||
cinder_hosts: "cinder_scheduler:!cinder_api"
|
cinder_hosts: "cinder_scheduler:!cinder_api"
|
||||||
cinder_serial: "{{ cinder_scheduler_serial | default(['1', '100%']) }}"
|
cinder_serial: "{{ cinder_scheduler_serial | default(['1', '100%']) }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install cinder volume services
|
- name: Install cinder volume services
|
||||||
import_playbook: common-playbooks/cinder.yml
|
import_playbook: common-playbooks/cinder.yml
|
||||||
vars:
|
vars:
|
||||||
cinder_hosts: "cinder_volume:!cinder_scheduler:!cinder_api"
|
cinder_hosts: "cinder_volume:!cinder_scheduler:!cinder_api"
|
||||||
cinder_serial: "{{ cinder_backend_serial | default(['1', '100%']) }}"
|
cinder_serial: "{{ cinder_backend_serial | default(['1', '100%']) }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install cinder backup services
|
- name: Install cinder backup services
|
||||||
import_playbook: common-playbooks/cinder.yml
|
import_playbook: common-playbooks/cinder.yml
|
||||||
vars:
|
vars:
|
||||||
|
@ -13,6 +13,25 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
- name: Gather neutron facts
|
||||||
|
hosts: neutron_all
|
||||||
|
gather_facts: false
|
||||||
|
tags:
|
||||||
|
- always
|
||||||
|
tasks:
|
||||||
|
- name: Gather minimal facts for neutron
|
||||||
|
setup:
|
||||||
|
gather_subset:
|
||||||
|
- "!all"
|
||||||
|
- min
|
||||||
|
when: osa_gather_facts | default(True)
|
||||||
|
|
||||||
|
- name: Gather additional facts for neutron
|
||||||
|
setup:
|
||||||
|
gather_subset: "{{ neutron_gather_subset | default('processor_count') }}"
|
||||||
|
filter: "{{ neutron_gather_filter | default('ansible_processor*') }}"
|
||||||
|
when: osa_gather_facts | default(True)
|
||||||
|
|
||||||
- name: Configure Neutron dynamic host groupings
|
- name: Configure Neutron dynamic host groupings
|
||||||
hosts: localhost
|
hosts: localhost
|
||||||
gather_facts: no
|
gather_facts: no
|
||||||
@ -40,16 +59,12 @@
|
|||||||
neutron_hosts: "neutron_server"
|
neutron_hosts: "neutron_server"
|
||||||
neutron_serial: "{{ neutron_server_serial | default(['1', '100%']) }}"
|
neutron_serial: "{{ neutron_server_serial | default(['1', '100%']) }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install neutron L2 agents
|
- name: Install neutron L2 agents
|
||||||
import_playbook: common-playbooks/neutron.yml
|
import_playbook: common-playbooks/neutron.yml
|
||||||
vars:
|
vars:
|
||||||
neutron_hosts: "neutron_linuxbridge_agent:neutron_openvswitch_agent:!neutron_server"
|
neutron_hosts: "neutron_linuxbridge_agent:neutron_openvswitch_agent:!neutron_server"
|
||||||
neutron_serial: "{{ neutron_agent_serial | default('50%') }}"
|
neutron_serial: "{{ neutron_agent_serial | default('50%') }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- name: Install all other neutron agents
|
- name: Install all other neutron agents
|
||||||
import_playbook: common-playbooks/neutron.yml
|
import_playbook: common-playbooks/neutron.yml
|
||||||
vars:
|
vars:
|
||||||
|
@ -13,6 +13,25 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
- name: Gather nova facts
|
||||||
|
hosts: nova_all
|
||||||
|
gather_facts: false
|
||||||
|
tags:
|
||||||
|
- always
|
||||||
|
tasks:
|
||||||
|
- name: Gather minimal facts for nova
|
||||||
|
setup:
|
||||||
|
gather_subset:
|
||||||
|
- "!all"
|
||||||
|
- min
|
||||||
|
when: osa_gather_facts | default(True)
|
||||||
|
|
||||||
|
- name: Gather additional facts for nova
|
||||||
|
setup:
|
||||||
|
gather_subset: "{{ nova_gather_subset | default('processor_count') }}"
|
||||||
|
filter: "{{ nova_gather_filter | default('ansible_processor*') }}"
|
||||||
|
when: osa_gather_facts | default(True)
|
||||||
|
|
||||||
- name: "Config haproxy service"
|
- name: "Config haproxy service"
|
||||||
import_playbook: common-playbooks/haproxy-service-config.yml
|
import_playbook: common-playbooks/haproxy-service-config.yml
|
||||||
vars:
|
vars:
|
||||||
@ -32,7 +51,6 @@
|
|||||||
nova_hosts: "nova_conductor:nova_scheduler:nova_api_os_compute:nova_api_metadata:nova_console"
|
nova_hosts: "nova_conductor:nova_scheduler:nova_api_os_compute:nova_api_metadata:nova_console"
|
||||||
nova_serial: "{{ nova_conductor_serial | default(['1', '100%']) }}"
|
nova_serial: "{{ nova_conductor_serial | default(['1', '100%']) }}"
|
||||||
|
|
||||||
|
|
||||||
- name: Install nova compute
|
- name: Install nova compute
|
||||||
import_playbook: common-playbooks/nova.yml
|
import_playbook: common-playbooks/nova.yml
|
||||||
vars:
|
vars:
|
||||||
|
Loading…
Reference in New Issue
Block a user