Added role to manage the hosts file

This commit is contained in:
Ryan Cavicchioni 2019-11-15 20:43:08 -06:00
parent 31400a85ac
commit ef924eaf5d
Signed by: ryanc
GPG Key ID: 877EEDAF9245103D
3 changed files with 73 additions and 0 deletions

View File

@ -0,0 +1,32 @@
---
hostsfile_loopback:
127.0.0.1:
- localhost
- localhost.localdomain
- localhost4
- localhost4.localdomain4
::1:
- localhost
- localhost.localdomain
- localhost6
- localhost6.localdomain4
- ip6-localhost
- ip6-loopback
hostsfile_self:
"{{ ansible_default_ipv4.address }}":
- "{{ ansible_fqdn }}"
"{{ ansible_default_ipv6.address }}":
- "{{ ansible_fqdn }}"
hostsfile_routers:
ff02::1:
- ip6-allnodes
ff02::2:
- ip6-allrouters
hostsfile_hosts: {}
hostsfile_combined: "{{ hostsfile_loopback
| combine(hostsfile_hosts)
| combine(hostsfile_self) }}"

View File

@ -0,0 +1,8 @@
---
- name: configure hosts file
template:
src: hosts.j2
dest: /etc/hosts
owner: root
group: root
mode: 0644

View File

@ -0,0 +1,33 @@
# {{ ansible_managed }}
{% macro render(hosts, comment=None) %}
{% if hosts is defined and hosts | length %}
{% if comment is not none %}
# {{ comment }}
{% endif %}
{% for ip, names in hosts.items() | default({}) %}
{{ ip }} {{ names | join(' ') }}
{% endfor %}
{% endif %}
{% endmacro %}
{{ render(hostsfile_loopback, comment="Loopback") }}
{{ render(hostsfile_routers, comment="Routers") }}
# Self
{% if 'address' in ansible_default_ipv4 %}
{{ ansible_default_ipv4.address }} {{ inventory_hostname }} {{ inventory_hostname_short }}
{% endif %}
{% if 'address' in ansible_default_ipv6 %}
{{ ansible_default_ipv6.address }} {{ inventory_hostname }} {{ inventory_hostname_short }}
{% endif %}
# Gateways
{% if 'gateway' in ansible_default_ipv4 %}
{{ ansible_default_ipv4.gateway }} gateway
{% endif %}
{% if 'gateway' in ansible_default_ipv6 %}
{{ ansible_default_ipv6.gateway }} gateway6
{% endif %}
{{ render(hostsfile_hosts, comment="Hosts") }}