kolla-ansible/ansible/roles/nova/tasks/do_reconfigure.yml
Jeffrey Zhang 792e2c1f26 Fix the nova reconfigure in the multinode env
Checking the fix condition first in the when clause rather than the
dynamic condition. Otherwise it will raise issue, especially in
multinode env.

For example use

  when:
    - nova_console == 'novnc'
    - inventory_hostname in groups['nova-novncproxy']

rather than

  when:
    - inventory_hostname in groups['nova-novncproxy']
    - nova_console == 'novnc'

Because the nova-novncproxy groups may do not exist.

Change-Id: I1e76ee239908a17a4c2ffd9a18c570fbc485172e
Closes-Bug: #1563643
2016-03-30 16:57:42 +08:00

310 lines
10 KiB
YAML

---
- name: Ensuring the nova libvirt, conductor, api, consoleauth and scheduler containers are up
kolla_docker:
name: "{{ item.name }}"
action: "get_container_state"
register: container_state
failed_when: container_state.Running == false
when: inventory_hostname in groups[item.group]
with_items:
- { name: nova_libvirt, group: compute }
- { name: nova_conductor, group: nova-conductor }
- { name: nova_api, group: nova-api }
- { name: nova_consoleauth, group: nova-consoleauth }
- { name: nova_scheduler, group: nova-scheduler }
- name: Ensuring the nova_compute container is up
kolla_docker:
name: "nova_compute"
action: "get_container_state"
register: container_state
failed_when: container_state.Running == false
when:
- not enable_nova_fake | bool
- inventory_hostname in groups['compute']
- name: Ensuring the nova_compute_ironic container is up
kolla_docker:
name: "nova_compute_ironic"
action: "get_container_state"
register: container_state
failed_when: container_state.Running == false
when:
- enable_ironic | bool
- inventory_hostname in groups['nova-compute-ironic']
- name: Ensuring the nova_novncproxy container is up
kolla_docker:
name: "nova_novncproxy"
action: "get_container_state"
register: container_state
failed_when: container_state.Running == false
when:
- nova_console == 'novnc'
- inventory_hostname in groups['nova-novncproxy']
- name: Ensuring the nova_spicehtml5proxy container is up
kolla_docker:
name: "nova_spicehtml5proxy"
action: "get_container_state"
register: container_state
failed_when: container_state.Running == false
when:
- nova_console == 'spice'
- inventory_hostname in groups['nova-spicehtml5proxy']
- include: config.yml
- name: Check the configs for nova libvirt, conductor, api, consoleauth and scheduler containers
command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check
changed_when: false
failed_when: false
register: check_results
when: inventory_hostname in groups[item.group]
with_items:
- { name: nova_libvirt, group: compute }
- { name: nova_conductor, group: nova-conductor }
- { name: nova_api, group: nova-api }
- { name: nova_consoleauth, group: nova-consoleauth }
- { name: nova_scheduler, group: nova-scheduler }
- name: Check the configs in the nova_compute container
command: docker exec nova_compute /usr/local/bin/kolla_set_configs --check
changed_when: false
failed_when: false
register: nova_compute_check_result
when:
- not enable_nova_fake | bool
- inventory_hostname in groups['compute']
- name: Check the configs in the nova_compute_ironic container
command: docker exec nova_compute_ironic /usr/local/bin/kolla_set_configs --check
changed_when: false
failed_when: false
register: nova_compute_ironic_check_result
when:
- enable_ironic | bool
- inventory_hostname in groups['nova-compute-ironic']
- name: Check the configs in the nova_novncproxy container
command: docker exec nova_novncproxy /usr/local/bin/kolla_set_configs --check
changed_when: false
failed_when: false
register: nova_novncproxy_check_result
when:
- nova_console == 'novnc'
- inventory_hostname in groups['nova-novncproxy']
- name: Check the configs in the nova_spicehtml5proxy container
command: docker exec nova_spicehtml5proxy /usr/local/bin/kolla_set_configs --check
changed_when: false
failed_when: false
register: nova_spicehtml5proxy_check_result
when:
- nova_console == 'spice'
- inventory_hostname in groups['nova-spicehtml5proxy']
# NOTE(jeffrey4l): when config_strategy == 'COPY_ALWAYS'
# and container env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE',
# just remove the container and start again
- name: Containers config strategy for nova libvirt, conductor, api, consoleauth and scheduler containers
kolla_docker:
name: "{{ item.name }}"
action: "get_container_env"
register: container_envs
when: inventory_hostname in groups[item.group]
with_items:
- { name: nova_libvirt, group: compute }
- { name: nova_conductor, group: nova-conductor }
- { name: nova_api, group: nova-api }
- { name: nova_consoleauth, group: nova-consoleauth }
- { name: nova_scheduler, group: nova-scheduler }
- name: Container config strategy for nova_compute
kolla_docker:
name: nova_compute
action: "get_container_env"
register: nova_compute_container_env
when:
- not enable_nova_fake | bool
- inventory_hostname in groups['compute']
- name: Container config strategy for nova_compute_ironic
kolla_docker:
name: nova_compute_ironic
action: "get_container_env"
register: nova_compute_ironic_container_env
when:
- enable_ironic | bool
- inventory_hostname in groups['nova-compute-ironic']
- name: Container config strategy for nova_novncproxy
kolla_docker:
name: nova_novncproxy
action: "get_container_env"
register: nova_novncproxy_container_env
when:
- nova_console == 'novnc'
- inventory_hostname in groups['nova-novncproxy']
- name: Container config strategy for nova_spicehtml5proxy
kolla_docker:
name: nova_spicehtml5proxy
action: "get_container_env"
register: nova_spicehtml5proxy_container_env
when:
- nova_console == 'spice'
- inventory_hostname in groups['nova-spicehtml5proxy']
- name: Remove the nova libvirt, conductor, api, consoleauth and scheduler containers
kolla_docker:
name: "{{ item[0]['name'] }}"
action: "remove_container"
register: remove_containers
when:
- inventory_hostname in groups[item[0]['group']]
- config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
- item[2]['rc'] == 1
with_together:
- [{ name: nova_libvirt, group: compute },
{ name: nova_conductor, group: nova-conductor },
{ name: nova_api, group: nova-api },
{ name: nova_consoleauth, group: nova-consoleauth },
{ name: nova_scheduler, group: nova-scheduler }]
- container_envs.results
- check_results.results
- name: Remove nova_compute container
kolla_docker:
name: nova_compute
action: "remove_container"
register: remove_nova_compute_container
when:
- not enable_nova_fake | bool
- inventory_hostname in groups['compute']
- config_strategy == 'COPY_ONCE' or nova_compute_container_env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
- nova_compute_check_result['rc'] == 1
- name: Remove nova_compute_ironic container
kolla_docker:
name: nova_compute_ironic
action: "remove_container"
register: remove_nova_compute_ironic_container
when:
- enable_ironic | bool
- inventory_hostname in groups['nova-compute-ironic']
- config_strategy == 'COPY_ONCE' or nova_compute_ironic_container_env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
- nova_compute_ironic_check_result['rc'] == 1
- name: Remove nova_novncproxy container
kolla_docker:
name: nova_novncproxy
action: "remove_container"
register: remove_nova_novncproxy_container
when:
- nova_console == 'novnc'
- inventory_hostname in groups['nova-novncproxy']
- config_strategy == 'COPY_ONCE' or nova_novncproxy_container_env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
- nova_novncproxy_check_result['rc'] == 1
- name: Remove nova_spicehtml5proxy container
kolla_docker:
name: nova_spicehtml5proxy
action: "remove_container"
register: remove_nova_spicehtml5proxy_container
when:
- nova_console == 'spice'
- inventory_hostname in groups['nova-spicehtml5proxy']
- config_strategy == 'COPY_ONCE' or nova_spicehtml5proxy_container_env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
- nova_spicehtml5proxy_check_result['rc'] == 1
- include: start.yml
when: remove_containers.changed
- include: start.yml
when:
- not enable_nova_fake | bool
- remove_nova_compute_container.changed
- include: start.yml
when:
- enable_ironic | bool
- remove_nova_compute_ironic_container.changed
- include: start.yml
when:
- enable_ironic | bool
- remove_nova_compute_ironic_container.changed
- include: start.yml
when:
- nova_console == 'novnc'
- remove_nova_novncproxy_container.changed
- include: start.yml
when:
- nova_console == 'spice'
- remove_nova_spicehtml5proxy_container.changed
- name: Restart the nova libvirt, conductor, api, consoleauth and scheduler containers
kolla_docker:
name: "{{ item[0]['name'] }}"
action: "restart_container"
when:
- config_strategy == 'COPY_ALWAYS'
- inventory_hostname in groups[item[0]['group']]
- item[1]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
- item[2]['rc'] == 1
with_together:
- [{ name: nova_libvirt, group: compute },
{ name: nova_conductor, group: nova-conductor },
{ name: nova_api, group: nova-api },
{ name: nova_consoleauth, group: nova-consoleauth },
{ name: nova_scheduler, group: nova-scheduler }]
- container_envs.results
- check_results.results
- name: Restart the nova_compute container
kolla_docker:
name: "nova_compute"
action: "restart_container"
when:
- not enable_nova_fake | bool
- config_strategy == 'COPY_ALWAYS'
- inventory_hostname in groups['compute']
- nova_compute_container_env['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
- nova_compute_check_result['rc'] == 1
- name: Restart the nova_compute_ironic container
kolla_docker:
name: "nova_compute_ironic"
action: "restart_container"
when:
- enable_ironic | bool
- config_strategy == 'COPY_ALWAYS'
- inventory_hostname in groups['nova-compute-ironic']
- nova_compute_ironic_container_env['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
- nova_compute_ironic_check_result['rc'] == 1
- name: Restart the nova_novncproxy container
kolla_docker:
name: "nova_novncproxy"
action: "restart_container"
when:
- nova_console == 'novnc'
- config_strategy == 'COPY_ALWAYS'
- inventory_hostname in groups['nova-novncproxy']
- nova_novncproxy_container_env['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
- nova_novncproxy_check_result['rc'] == 1
- name: Restart the nova_spicehtml5proxy container
kolla_docker:
name: "nova_spicehtml5proxy"
action: "restart_container"
when:
- nova_console == 'spice'
- config_strategy == 'COPY_ALWAYS'
- inventory_hostname in groups['nova-spicehtml5proxy']
- nova_spicehtml5proxy_container_env['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
- nova_spicehtml5proxy_check_result['rc'] == 1