60750a2796
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
59 lines
1.9 KiB
YAML
59 lines
1.9 KiB
YAML
---
|
|
# Copyright 2014, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# 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"
|
|
import_playbook: common-playbooks/haproxy-service-config.yml
|
|
vars:
|
|
service_group:
|
|
- nova_api_os_compute
|
|
- nova_api_metadata
|
|
- nova_console
|
|
- nova_ironic_console
|
|
service_variable: "nova_haproxy_services"
|
|
when: groups['nova_all'] | length > 0
|
|
tags:
|
|
- haproxy-service-config
|
|
|
|
- name: Install nova-conductor services
|
|
import_playbook: common-playbooks/nova.yml
|
|
vars:
|
|
nova_hosts: "nova_conductor:nova_scheduler:nova_api_os_compute:nova_api_metadata:nova_console"
|
|
nova_serial: "{{ nova_conductor_serial | default(['1', '100%']) }}"
|
|
|
|
- name: Install nova compute
|
|
import_playbook: common-playbooks/nova.yml
|
|
vars:
|
|
nova_hosts: "nova_compute:!nova_conductor:!nova_scheduler:!nova_api_os_compute:!nova_api_metadata:!nova_console"
|
|
nova_serial: "{{ nova_compute_serial | default('100%') }}"
|