
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.
58 lines
2.3 KiB
YAML
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
|