49fb55f182
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
40 lines
1.1 KiB
YAML
40 lines
1.1 KiB
YAML
---
|
|
- import_role:
|
|
name: service-precheck
|
|
vars:
|
|
service_precheck_services: "{{ qdrouterd_services }}"
|
|
service_name: "{{ project_name }}"
|
|
|
|
- name: Get container facts
|
|
become: true
|
|
kolla_container_facts:
|
|
name:
|
|
- qdrouterd
|
|
register: container_facts
|
|
|
|
- name: Checking free port for Qdrouterd
|
|
wait_for:
|
|
host: "{{ api_interface_address }}"
|
|
port: "{{ qdrouterd_port }}"
|
|
connect_timeout: 1
|
|
timeout: 1
|
|
state: stopped
|
|
when:
|
|
- container_facts['qdrouterd'] is not defined
|
|
- inventory_hostname in groups['qdrouterd']
|
|
|
|
- name: Check if all qdrouterd hostnames are resolvable
|
|
vars:
|
|
nss_database: "{{ 'ahostsv4' if api_address_family == 'ipv4' else 'ahostsv6' }}"
|
|
command: "getent {{ nss_database }} {{ hostvars[item]['ansible_hostname'] }}"
|
|
changed_when: false
|
|
register: qdrouterd_hostnames
|
|
with_items: "{{ groups['qdrouterd'] }}"
|
|
|
|
- name: Check if hostname resolves to IP address of api_interface
|
|
fail:
|
|
msg: "Hostname has to resolve to IP address of api_interface"
|
|
with_items: "{{ qdrouterd_hostnames.results }}"
|
|
when:
|
|
- "item.stdout.find('api' | kolla_address(item['item'])) == -1"
|