kayobe/ansible/overcloud-etc-hosts-fixup.yml
Mark Goddard 92d70e70eb Extend /etc/hosts fixup playbook for the loopback IP
On Vagrant in particular, we get an entry for 127.0.0.1 for the server's hostname.
This will cause rabbitmq checks to fail, blocking upgrades.
2017-11-22 17:01:30 +00:00

58 lines
2.3 KiB
YAML

---
# For some currently unknown reason, overcloud hosts end up with multiple
# entries in /etc/hosts that map their own hostname to their provisioning
# network IP address, in addition to one that maps their own hostname to their
# internal network IP address. This causes RabbitMQ upgrades to fail, as
# RabbitMQ expects the system's hostname to resolve to the IP address on
# which it is listening. As a workaround, we remove the stale entries from
# /etc/hosts. See https://github.com/stackhpc/kayobe/issues/14.
- name: Ensure overcloud hosts' /etc/hosts does not contain provisioning network IP
hosts: overcloud
tasks:
- name: Ensure overcloud hosts' /etc/hosts does not contain provisioning network or loopback IPs
lineinfile:
dest: /etc/hosts
regexp: "^{{ item }}[ \t]*{{ inventory_hostname }}"
state: absent
with_items:
- "127.0.0.1"
- "{{ provision_oc_net_name | net_ip }}"
when: provision_oc_net_name | net_ip != None
become: True
- name: Ensure rabbitmq containers' /etc/hosts does not contain provisioning network or loopback IPs
hosts: overcloud
vars:
rabbitmq_containers:
- rabbitmq
- outward_rabbitmq
tasks:
- block:
- name: Check whether rabbitmq container is running
command: docker inspect -f {{ '{{.Id}}' }} {{ item }}
changed_when: False
failed_when: False
with_items: "{{ rabbitmq_containers }}"
register: ps_result
- name: Ensure rabbitmq containers' /etc/hosts does not contain provisioning network or loopback IPs
command: >
docker exec -u root {{ item.0.item }}
bash -c
'cp /etc/hosts /tmp/hosts &&
sed -i -e "/^{{ item.1 }}[ \t]*{{ inventory_hostname }}/d" /tmp/hosts &&
if ! diff -q /tmp/hosts /etc/hosts >/dev/null; then
cp /tmp/hosts /etc/hosts &&
echo changed
fi &&
rm /tmp/hosts'
changed_when: "'changed' in sed_result.stdout"
with_nested:
- "{{ ps_result.results }}"
- - "127.0.0.1"
- "{{ provision_oc_net_name | net_ip }}"
when: item.0.rc == 0
register: sed_result
when: provision_oc_net_name | net_ip != None