Add hostfile management to server role

Add aliases for direct connections of the cluster servers
This commit is contained in:
Ethan Paul 2021-11-09 00:26:28 -05:00
parent 197157b830
commit 8ac7e0f5a3
No known key found for this signature in database
GPG Key ID: 6A337337DF6B5B1A
3 changed files with 45 additions and 0 deletions

View File

@ -34,6 +34,13 @@ en1:
- server
- docker-swarm
- datastore
skylab_direct_peers:
- hostname: pegasus.local
address: 192.168.42.10
- hostname: saturn.local
address: 192.168.42.20
- hostname: orion.local
address: 192.168.42.30
hosts:
pegasus: # jupiter

View File

@ -0,0 +1,34 @@
---
- name: Retrieve current hostsfile contents
ansible.builtin.command:
cmd: cat /etc/hosts
changed_when: false
register: _existing_hostsfile_raw
- name: Assemble hostsfile lines
vars:
_hostsfile_lines: []
ansible.builtin.set_fact:
_hostsfile_lines: "{{ _hostsfile_lines + [item.address + ' ' + item.hostname] }}"
loop: "{{ skylab_direct_peers }}"
loop_control:
label: "{{ item.hostname }}"
- name: Configure directly connected peers
become: true
ansible.builtin.lineinfile:
path: /etc/hosts
line: "{{ item }}"
state: present
loop: "{{ _hostsfile_lines }}"
loop_control:
label: "{{ item.partition(' ')[0] }}"
- name: Remove unmanaged peer aliases
become: true
when: "'localhost' not in item and item not in _hostsfile_lines"
ansible.builtin.lineinfile:
path: /etc/hosts
line: "{{ item }}"
state: absent
loop: "{{ _existing_hostsfile_raw.stdout_lines }}"

View File

@ -8,3 +8,7 @@
- name: Configure network settings
when: skylab_networking is defined
ansible.builtin.include_tasks: networkd.yaml
- name: Configure hostsfile
when: skylab_direct_peers is defined
ansible.builtin.include_tasks: hosts.yaml