88de8feb7b
replace harcode 'internal' with {{ openstack_interface }} Change-Id: I885622967ffde2a7a1a08fedbde2eb0e4e330e22
79 lines
3.3 KiB
YAML
79 lines
3.3 KiB
YAML
---
|
|
# We need to wait for all expected compute services to register before running
|
|
# cells v2 host discovery. This includes virtualised compute services and
|
|
# ironic compute services.
|
|
# Work with --limit by including only hosts in ansible_play_batch.
|
|
- name: Build a list of expected compute service hosts
|
|
vars:
|
|
# For virt, use ansible_nodename rather than inventory_hostname, since this
|
|
# is similar to what nova uses internally as its default for the
|
|
# [DEFAULT] host config option.
|
|
virt_compute_service_hosts: >-
|
|
{{ virt_computes_in_batch |
|
|
map('extract', hostvars, 'ansible_nodename') |
|
|
list }}
|
|
# For ironic, use {{ansible_hostname}}-ironic since this is what we
|
|
# configure for [DEFAULT] host in nova.conf.
|
|
ironic_compute_service_hosts: >-
|
|
{{ ironic_computes_in_batch |
|
|
map('extract', hostvars, 'ansible_hostname') |
|
|
map('regex_replace', '^(.*)$', '\1-ironic') |
|
|
list }}
|
|
set_fact:
|
|
expected_compute_service_hosts: "{{ virt_compute_service_hosts + ironic_compute_service_hosts }}"
|
|
delegate_to: "{{ groups[nova_cell_conductor_group][0] }}"
|
|
|
|
- name: Waiting for nova-compute services to register themselves
|
|
become: true
|
|
command: >
|
|
docker exec kolla_toolbox openstack
|
|
--os-interface {{ openstack_interface }}
|
|
--os-auth-url {{ keystone_admin_url }}
|
|
--os-identity-api-version 3
|
|
--os-project-domain-name {{ openstack_auth.domain_name }}
|
|
--os-project-name {{ openstack_auth.project_name }}
|
|
--os-username {{ openstack_auth.username }}
|
|
--os-password {{ keystone_admin_password }}
|
|
--os-user-domain-name {{ openstack_auth.domain_name }}
|
|
--os-region-name {{ openstack_region_name }}
|
|
{% if openstack_cacert != '' %}--os-cacert {{ openstack_cacert }}{% endif %}
|
|
compute service list --format json --column Host --service nova-compute
|
|
register: nova_compute_services
|
|
changed_when: false
|
|
retries: 20
|
|
delay: 10
|
|
until:
|
|
- nova_compute_services is success
|
|
# A list containing the 'Host' field of compute services that have
|
|
# registered themselves. Don't exclude compute services that are disabled
|
|
# since these could have been explicitly disabled by the operator. While we
|
|
# could exclude services that are down, the nova-manage cell_v2
|
|
# discover_hosts does not do this so let's not block on it here.
|
|
# NOTE(mgoddard): Cannot factor this out into an intermediary variable
|
|
# before ansible 2.8, due to
|
|
# https://bugs.launchpad.net/kolla-ansible/+bug/1835817.
|
|
- (nova_compute_services.stdout |
|
|
from_json |
|
|
map(attribute='Host') |
|
|
list)
|
|
is superset(expected_compute_service_hosts)
|
|
delegate_to: "{{ groups[nova_cell_conductor_group][0] }}"
|
|
|
|
- import_tasks: get_cell_settings.yml
|
|
delegate_to: "{{ groups[nova_cell_conductor_group][0] }}"
|
|
|
|
- name: Fail if cell settings not found
|
|
fail:
|
|
msg: >-
|
|
Unable to find settings for {{ nova_cell_name or 'the default cell' }}.
|
|
when: not nova_cell_settings
|
|
delegate_to: "{{ groups[nova_cell_conductor_group][0] }}"
|
|
|
|
# TODO(yoctozepto): no need to do --by-service if ironic not used
|
|
- name: Discover nova hosts
|
|
become: true
|
|
command: >
|
|
docker exec nova_conductor nova-manage cell_v2 discover_hosts --by-service --cell_uuid {{ nova_cell_settings.cell_uuid }}
|
|
changed_when: False
|
|
delegate_to: "{{ groups[nova_cell_conductor_group][0] }}"
|