7a384b9ce4
A temporary file is removed by multiple test hosts, which all have connection=local. This leads to a race between multiple executions of the file module on localhost. Add run_once. Change-Id: I976122f72bdca7f91cbfcd81fca431b81a6b6aef
153 lines
5.7 KiB
YAML
153 lines
5.7 KiB
YAML
---
|
|
- name: Test kolla-ansible-host-vars role extras
|
|
hosts: localhost
|
|
connection: local
|
|
tasks:
|
|
- name: Add a controller host to the inventory
|
|
add_host:
|
|
name: test-controller
|
|
groups: controllers
|
|
ansible_host: "1.2.3.5"
|
|
kolla_network_interface: "eth0"
|
|
kolla_external_vip_interface: "eth1"
|
|
kolla_api_interface: "eth2"
|
|
kolla_storage_interface: "eth3"
|
|
kolla_cluster_interface: "eth4"
|
|
kolla_dns_interface: "eth5"
|
|
kolla_neutron_external_interfaces: "eth6,eth7"
|
|
kolla_neutron_bridge_names: "br0,br1"
|
|
kolla_provision_interface: "eth8"
|
|
kolla_inspector_dnsmasq_interface: "eth9"
|
|
kolla_tunnel_interface: "eth10"
|
|
kolla_swift_storage_interface: "eth13"
|
|
kolla_swift_replication_interface: "eth14"
|
|
|
|
- name: Add a compute host to the inventory
|
|
add_host:
|
|
name: test-compute
|
|
groups: compute
|
|
ansible_host: "1.2.3.6"
|
|
kolla_network_interface: "eth0"
|
|
kolla_api_interface: "eth2"
|
|
kolla_storage_interface: "eth3"
|
|
kolla_neutron_external_interfaces: "eth4,eth5"
|
|
kolla_neutron_bridge_names: "br0,br1"
|
|
kolla_tunnel_interface: "eth6"
|
|
|
|
- name: Test kolla-ansible-host-vars role extras
|
|
hosts: controllers:compute
|
|
connection: local
|
|
gather_facts: no
|
|
tasks:
|
|
- name: Create a temporary directory
|
|
tempfile:
|
|
state: directory
|
|
register: tempfile_result
|
|
delegate_to: localhost
|
|
run_once: true
|
|
|
|
- block:
|
|
- name: Test the kolla-ansible-host-vars role with default values
|
|
include_role:
|
|
name: ../../kolla-ansible-host-vars
|
|
vars:
|
|
kolla_ansible_pass_through_host_vars:
|
|
- "ansible_host"
|
|
- "ansible_port"
|
|
- "ansible_ssh_private_key_file"
|
|
- "kolla_network_interface"
|
|
- "kolla_api_interface"
|
|
- "kolla_storage_interface"
|
|
- "kolla_cluster_interface"
|
|
- "kolla_swift_storage_interface"
|
|
- "kolla_swift_replication_interface"
|
|
- "kolla_provision_interface"
|
|
- "kolla_inspector_dnsmasq_interface"
|
|
- "kolla_dns_interface"
|
|
- "kolla_tunnel_interface"
|
|
- "kolla_external_vip_interface"
|
|
- "kolla_neutron_external_interfaces"
|
|
- "kolla_neutron_bridge_names"
|
|
kolla_ansible_pass_through_host_vars_map:
|
|
kolla_network_interface: "network_interface"
|
|
kolla_api_interface: "api_interface"
|
|
kolla_storage_interface: "storage_interface"
|
|
kolla_cluster_interface: "cluster_interface"
|
|
kolla_swift_storage_interface: "swift_storage_interface"
|
|
kolla_swift_replication_interface: "swift_replication_interface"
|
|
kolla_provision_interface: "provision_interface"
|
|
kolla_inspector_dnsmasq_interface: "ironic_dnsmasq_interface"
|
|
kolla_dns_interface: "dns_interface"
|
|
kolla_tunnel_interface: "tunnel_interface"
|
|
kolla_neutron_external_interfaces: "neutron_external_interface"
|
|
kolla_neutron_bridge_names: "neutron_bridge_name"
|
|
kolla_ansible_inventory_path: "{{ temp_path }}"
|
|
|
|
- name: Check whether inventory host vars files exist
|
|
stat:
|
|
path: "{{ temp_path ~ '/host_vars/' ~ inventory_hostname }}"
|
|
register: host_vars_stat
|
|
|
|
- name: Validate inventory host vars files
|
|
assert:
|
|
that:
|
|
- host_vars_stat.stat.exists
|
|
- host_vars_stat.stat.size > 0
|
|
msg: >
|
|
Inventory file {{ temp_path ~ '/host_vars/' ~ inventory_hostname }} was not found.
|
|
|
|
- name: Read inventory host vars files
|
|
slurp:
|
|
src: "{{ host_vars_stat.stat.path }}"
|
|
register: host_vars_slurp
|
|
|
|
- name: Validate inventory host vars file contents
|
|
assert:
|
|
that:
|
|
- host_vars_content is defined
|
|
- host_vars_content == expected_contents[inventory_hostname]
|
|
vars:
|
|
host_vars_content: "{{ host_vars_slurp.content | b64decode }}"
|
|
expected_contents:
|
|
test-controller: |
|
|
---
|
|
ansible_host: "1.2.3.5"
|
|
network_interface: "eth0"
|
|
api_interface: "eth2"
|
|
storage_interface: "eth3"
|
|
cluster_interface: "eth4"
|
|
swift_storage_interface: "eth13"
|
|
swift_replication_interface: "eth14"
|
|
provision_interface: "eth8"
|
|
ironic_dnsmasq_interface: "eth9"
|
|
dns_interface: "eth5"
|
|
tunnel_interface: "eth10"
|
|
kolla_external_vip_interface: "eth1"
|
|
neutron_external_interface: "eth6,eth7"
|
|
neutron_bridge_name: "br0,br1"
|
|
test-compute: |
|
|
---
|
|
ansible_host: "1.2.3.6"
|
|
network_interface: "eth0"
|
|
api_interface: "eth2"
|
|
storage_interface: "eth3"
|
|
tunnel_interface: "eth6"
|
|
neutron_external_interface: "eth4,eth5"
|
|
neutron_bridge_name: "br0,br1"
|
|
|
|
always:
|
|
- name: Ensure the temporary directory is removed
|
|
file:
|
|
path: "{{ temp_path }}"
|
|
state: absent
|
|
run_once: true
|
|
|
|
- name: Refresh the inventory
|
|
meta: refresh_inventory
|
|
rescue:
|
|
- name: Flag that a failure occurred
|
|
set_fact:
|
|
test_failures: "{{ test_failures | default(0) | int + 1 }}"
|
|
vars:
|
|
temp_path: "{{ tempfile_result.path }}"
|