kolla-ansible/ansible/roles/ironic/tasks/precheck.yml
Mark Goddard 49fb55f182 Add Ansible group check to prechecks
We assume that all groups are present in the inventory, and quite obtuse
errors can result if any are not.

This change adds a precheck that checks for the presence of all expected
groups in the inventory for each service. It also introduces a common
service-precheck role that we can use for other common prechecks.

Change-Id: Ia0af1e7df4fff7f07cd6530e5b017db8fba530b3
Partially-Implements: blueprint improve-prechecks
2020-02-28 16:23:14 +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:
name:
- ironic_api
- ironic_inspector
- ironic_ipxe
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 iPXE
wait_for:
host: "{{ api_interface_address }}"
port: "{{ ironic_ipxe_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- enable_ironic_ipxe | bool
- container_facts['ironic_ipxe'] is not defined
- inventory_hostname in groups['ironic-ipxe']
- 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 enable_ironic_ipxe | bool and inventory_hostname in groups['ironic-pxe']) or
(enable_ironic_ipxe | bool and inventory_hostname in groups['ironic-ipxe'])
- not enable_ironic_pxe_uefi | bool
with_items:
- "ironic-agent.kernel"
- "ironic-agent.initramfs"
- name: Ensure dnsmasq_dhcp_range configured for Ironic Dnsmasq
fail:
msg: >
ironic_dnsmasq_dhcp_range must be set when enable ironic
connection: local
run_once: True
when:
- ironic_dnsmasq_dhcp_range is none