Use more permissive regex to remove the offending 127.0.1.1

line from /etc/hosts

Ubuntu always uses 127.0.1.1 for that with some tricky sauce
around `hostname` depending on whether it contains '.' or not.
And when I mean `hostname` it's the one returned by `hostname`
command with no arguments.

ansible_hostname is always a single word so we can match on that.

I did not want to remove just any 127.0.1.1 in case someone
is using it for other purposes. :-)

Change-Id: I8bd3d42a5e3bd0f63336ed60a0af90d52b1650d6
Closes-bug: #1862739
This commit is contained in:
Radosław Piliszek 2020-02-12 12:08:28 +01:00
parent 3269b13ddd
commit adbe115e39
2 changed files with 14 additions and 5 deletions

View File

@ -8,14 +8,16 @@
become: True
when: customize_etc_hosts | bool
# NOTE(mgoddard): Ubuntu includes a line in /etc/hosts that makes the local
# hostname and nodename (if different) point to 127.0.1.1. This can break
# NOTE(mgoddard): Ubuntu may include a line in /etc/hosts that makes the local
# hostname and fqdn point to 127.0.1.1. This can break
# RabbitMQ, which expects the hostname to resolve to the API network address.
# Remove these troublesome entries.
- name: Ensure hostname does not point to loopback in /etc/hosts
# Remove the troublesome entry.
# see https://bugs.launchpad.net/kolla-ansible/+bug/1837699
# and https://bugs.launchpad.net/kolla-ansible/+bug/1862739
- name: Ensure hostname does not point to 127.0.1.1 in /etc/hosts
lineinfile:
dest: /etc/hosts
regexp: "^127.\\d+.\\d+.\\d+(\\s+{{ ansible_nodename }})?\\s+{{ ansible_hostname }}$"
regexp: "^127.0.1.1\\b.*\\s{{ ansible_hostname }}\\b"
state: absent
become: True
when: customize_etc_hosts | bool

View File

@ -0,0 +1,7 @@
---
fixes:
- |
Use more permissive regex to remove the offending 127.0.1.1 line
from /etc/hosts.
`LP#1862739
<https://bugs.launchpad.net/kolla-ansible/+bug/1862739>`__