c33e08c3fa
The hosts(5) manpage clearly states that the first entry is the "canonical name", or FQDN (Fully-Qualified Domain Name): IP_address canonical_hostname [aliases...] By using the alias as a first entry, `hostname -f` does not return the correct domain which breaks all sorts of unrelated functionality (it has impact over email server configuration, for example).
57 lines
2.4 KiB
YAML
57 lines
2.4 KiB
YAML
---
|
|
- name: Hosts | populate inventory into hosts file
|
|
blockinfile:
|
|
dest: /etc/hosts
|
|
block: |-
|
|
{% for item in (groups['k8s-cluster'] + groups['etcd'] + groups['calico-rr']|default([]))|unique -%}{{ hostvars[item]['access_ip'] | default(hostvars[item]['ip'] | default(hostvars[item]['ansible_default_ipv4']['address'])) }}{% if (item != hostvars[item]['ansible_hostname']) %} {{ hostvars[item]['ansible_hostname'] }}.{{ dns_domain }} {{ hostvars[item]['ansible_hostname'] }}{% endif %} {{ item }} {{ item }}.{{ dns_domain }}
|
|
{% endfor %}
|
|
state: present
|
|
create: yes
|
|
backup: yes
|
|
unsafe_writes: yes
|
|
marker: "# Ansible inventory hosts {mark}"
|
|
when: populate_inventory_to_hosts_file
|
|
|
|
- name: Hosts | populate kubernetes loadbalancer address into hosts file
|
|
lineinfile:
|
|
dest: /etc/hosts
|
|
regexp: ".*{{ apiserver_loadbalancer_domain_name }}$"
|
|
line: "{{ loadbalancer_apiserver.address }} {{ apiserver_loadbalancer_domain_name }}"
|
|
state: present
|
|
backup: yes
|
|
unsafe_writes: yes
|
|
when:
|
|
- loadbalancer_apiserver is defined
|
|
- loadbalancer_apiserver.address is defined
|
|
|
|
- name: Hosts | Retrieve hosts file content
|
|
slurp:
|
|
src: /etc/hosts
|
|
register: etc_hosts_content
|
|
|
|
- name: Hosts | Extract existing entries for localhost from hosts file
|
|
set_fact:
|
|
etc_hosts_localhosts_dict: >-
|
|
{%- set splitted = (item | regex_replace('[ \t]+', ' ')|regex_replace('#.*$')|trim).split( ' ') -%}
|
|
{{ etc_hosts_localhosts_dict|default({}) | combine({splitted[0]: splitted[1::] }) }}
|
|
with_items: "{{ (etc_hosts_content['content'] | b64decode).split('\n') }}"
|
|
when:
|
|
- etc_hosts_content.content is defined
|
|
- (item|match('^::1 .*') or item|match('^127.0.0.1 .*'))
|
|
|
|
- name: Hosts | Update target hosts file entries dict with required entries
|
|
set_fact:
|
|
etc_hosts_localhosts_dict_target: >-
|
|
{%- set target_entries = (etc_hosts_localhosts_dict|default({})).get(item.key, []) | difference(item.value.get('unexpected' ,[])) -%}
|
|
{{ etc_hosts_localhosts_dict_target|default({}) | combine({item.key: (target_entries + item.value.expected)|unique}) }}
|
|
with_dict: "{{ etc_hosts_localhost_entries }}"
|
|
|
|
- name: Hosts | Update (if necessary) hosts file
|
|
lineinfile:
|
|
dest: /etc/hosts
|
|
line: "{{ item.key }} {{ item.value|join(' ') }}"
|
|
regexp: "^{{ item.key }}.*$"
|
|
state: present
|
|
backup: yes
|
|
unsafe_writes: yes
|
|
with_dict: "{{ etc_hosts_localhosts_dict_target }}"
|