kolla-ansible/ansible/roles/nova-cell/tasks/precheck.yml
Ivan Halomi 4ce47e2250 Refactor of kolla_container_facts
Refactor that prepares kolla_container_facts
module for introducing more actions that will be moved
from kolla_container module and kolla_container_volume_facts.

This change is based on a discussion about adding a new action
to kolla_container module that retrieves all names of the running
containers. It was agreed that kolla-ansible should follow Ansible's
direction of splitting modules between action modules and facts
modules. Because of this, kolla_container_facts needs to be able
to handle different requests for data about containers or volumes.

Change-Id: Ieaec8f64922e4e5a2199db2d6983518b124cb4aa
Signed-off-by: Ivan Halomi <ivan.halomi@tietoevry.com>
2024-08-12 09:54:05 +02:00

133 lines
3.9 KiB
YAML

---
- import_role:
name: service-precheck
vars:
service_precheck_services: "{{ nova_cell_services }}"
service_name: "{{ project_name }}"
- name: Get container facts
become: true
kolla_container_facts:
action: get_containers
container_engine: "{{ kolla_container_engine }}"
name:
- nova_libvirt
- nova_novncproxy
- nova_serialproxy
- nova_spicehtml5proxy
- nova_ssh
check_mode: false
register: container_facts
- name: Checking available compute nodes in inventory
vars:
nova_compute_ironic: "{{ nova_cell_services['nova-compute-ironic'] }}"
fail:
msg: >
At least 1 compute node required in inventory when ironic is disabled.
when:
- groups[nova_cell_compute_group] | length < 1
- not nova_compute_ironic.enabled | bool
- name: Checking free port for Nova NoVNC Proxy
vars:
service: "{{ nova_cell_services['nova-novncproxy'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_novncproxy_listen_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['nova_novncproxy'] is not defined
- service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova Serial Proxy
vars:
service: "{{ nova_cell_services['nova-serialproxy'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_serialproxy_listen_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['nova_serialproxy'] is not defined
- service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova Spice HTML5 Proxy
vars:
service: "{{ nova_cell_services['nova-spicehtml5proxy'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_spicehtml5proxy_listen_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['nova_spicehtml5proxy'] is not defined
- service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova SSH (API interface)
vars:
service: "{{ nova_cell_services['nova-ssh'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_ssh_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['nova_ssh'] is not defined
- service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova SSH (migration interface)
vars:
service: "{{ nova_cell_services['nova-ssh'] }}"
wait_for:
host: "{{ migration_interface_address }}"
port: "{{ nova_ssh_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- migration_interface_address != api_interface_address
- container_facts['nova_ssh'] is not defined
- service | service_enabled_and_mapped_to_host
- name: Checking free port for Nova Libvirt
vars:
service: "{{ nova_cell_services['nova-libvirt'] }}"
wait_for:
host: "{{ api_interface_address }}"
port: "{{ nova_libvirt_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['nova_libvirt'] is not defined
- service | service_enabled_and_mapped_to_host
- name: Checking that host libvirt is not running
vars:
service: "{{ nova_cell_services['nova-libvirt'] }}"
stat: path=/var/run/libvirt/libvirt-sock
register: result
failed_when: result.stat.exists
when:
- container_facts['nova_libvirt'] is not defined
- service | service_enabled_and_mapped_to_host
- name: Checking that nova_libvirt container is not running
vars:
nova_libvirt: "{{ nova_cell_services['nova-libvirt'] }}"
fail:
msg: >-
The nova_libvirt container is running, however it has been disabled via
the 'enable_nova_libvirt_container' flag. Stop and remove the container
manually, taking care to migrate any state to the host libvirt daemon.
when:
- container_facts['nova_libvirt'] is defined
- not nova_libvirt.enabled | bool
- inventory_hostname in groups[nova_libvirt.group]