Mark Goddard 46aeb9843f Fix prechecks in check mode
When running in check mode, some prechecks previously failed because
they use the command module which is silently not run in check mode.
Other prechecks were not running correctly in check mode due to e.g.
looking for a string in empty command output or not querying which
containers are running.

This change fixes these issues.

Closes-Bug: #2002657
Change-Id: I5219cb42c48d5444943a2d48106dc338aa08fa7c
2023-01-12 14:27:36 +00:00

76 lines
2.1 KiB
YAML

---
- import_role:
name: service-precheck
vars:
service_precheck_services: "{{ ironic_services }}"
service_name: "{{ project_name }}"
- name: Get container facts
become: true
kolla_container_facts:
container_engine: "{{ kolla_container_engine }}"
name:
- ironic_api
- ironic_inspector
- ironic_http
check_mode: false
register: container_facts
- name: Checking free port for Ironic API
wait_for:
host: "{{ api_interface_address }}"
port: "{{ ironic_api_listen_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['ironic_api'] is not defined
- inventory_hostname in groups['ironic-api']
- name: Checking free port for Ironic Inspector
wait_for:
host: "{{ api_interface_address }}"
port: "{{ ironic_inspector_listen_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['ironic_inspector'] is not defined
- inventory_hostname in groups['ironic-inspector']
- name: Checking free port for Ironic HTTP server
wait_for:
host: "{{ api_interface_address }}"
port: "{{ ironic_http_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- container_facts['ironic_http'] is not defined
- inventory_hostname in groups['ironic-http']
- name: Checking ironic-agent files exist for Ironic Inspector
stat:
path: "{{ node_custom_config }}/ironic/{{ item }}"
delegate_to: localhost
run_once: True
register: result
failed_when: not result.stat.exists
when:
# Only required when Ironic inspector is in use.
- groups['ironic-inspector'] | length > 0
- (not ironic_dnsmasq_serve_ipxe | bool and inventory_hostname in groups['ironic-tftp']) or
(ironic_dnsmasq_serve_ipxe | bool and inventory_hostname in groups['ironic-http'])
- not enable_ironic_pxe_uefi | bool
with_items:
- "ironic-agent.kernel"
- "ironic-agent.initramfs"
- name: Ensure ironic_dnsmasq_dhcp_ranges is configured
fail:
msg: >
ironic_dnsmasq_dhcp_ranges must be a list
connection: local
run_once: True
when: not ironic_dnsmasq_dhcp_ranges is sequence