kayobe/ansible/network-connectivity.yml
Mark Goddard 5e9affb62c Infra VMs: fix some playbook host patterns
The infra-vms group was not added to some playbook host patterns where
it should have been. This change fixes that.

TrivialFix

Change-Id: I5df2918035df7577627fd2bd68417beddbcbf848
2021-11-15 20:54:19 +00:00

85 lines
2.8 KiB
YAML

---
- name: Check network connectivity between hosts
hosts: seed:seed-hypervisor:overcloud:infra-vms
vars:
# Set this to an external IP address to check.
nc_external_ip: 8.8.8.8
# Set this to an external hostname to check.
nc_external_hostname: google.com
# Number of bytes to subtract from MTU to allow for ICMP (8 bytes) and IP
# (20 bytes) headers.
icmp_overhead_bytes: 28
tasks:
- name: Display next action
debug:
msg: >
Checking whether hosts have access to an external IP address,
{{ nc_external_ip }}.
run_once: True
- name: Ensure an external IP is reachable
command: ping -c1 {{ nc_external_ip }}
changed_when: False
- name: Display next action
debug:
msg: >
Checking whether hosts have access to an external hostname,
{{ nc_external_hostname }}.
run_once: True
- name: Ensure an external host is reachable
command: ping -c1 {{ nc_external_hostname }}
changed_when: False
- name: Display next action
debug:
msg: >
Checking whether hosts have access to any configured gateways.
run_once: True
- name: Ensure the gateway is reachable
command: >
ping {{ item | net_gateway }} -c1 -M do {% if mtu %} -s {{ mtu | int - icmp_overhead_bytes }}{% endif %}
with_items: "{{ network_interfaces }}"
when:
- item | net_ip
- item | net_gateway
changed_when: False
vars:
mtu: "{{ item | net_mtu }}"
# For each network on this host, pick a random remote host also on the
# network and try to ping it. Set the packet size according to the
# network's MTU.
- name: Display next action
debug:
msg: >
Checking whether hosts have access to other hosts on the same
network.
run_once: True
- name: Ensure hosts on the same network are reachable
command: >
ping {{ remote_ip }} -c1 -M do {% if mtu %} -s {{ mtu | int - icmp_overhead_bytes }}{% endif %}
with_items: "{{ network_interfaces }}"
when:
- item | net_ip
- remote_hosts | length > 0
changed_when: False
vars:
# Select other hosts targeted by this play which have this network
# interface (item).
remote_hosts: >
{{ hostvars.values() |
selectattr('inventory_hostname', 'is_in', play_hosts) |
selectattr('network_interfaces', 'defined') |
selectattr('network_interfaces', 'issuperset', [item]) |
rejectattr('inventory_hostname', 'equalto', inventory_hostname) |
map(attribute='inventory_hostname') |
list }}
remote_host: "{{ remote_hosts | random }}"
remote_ip: "{{ item | net_ip(remote_host) }}"
mtu: "{{ item | net_mtu }}"