49 lines
1.4 KiB
YAML
49 lines
1.4 KiB
YAML
---
|
|
- name: Install ISC DHCP server
|
|
apt:
|
|
name: isc-dhcp-server
|
|
state: present
|
|
|
|
- name: Stop and disable dnsmasq (conflicts with ISC DHCP)
|
|
systemd:
|
|
name: dnsmasq
|
|
state: stopped
|
|
enabled: no
|
|
ignore_errors: yes
|
|
|
|
- name: Configure ISC DHCP server defaults
|
|
template:
|
|
src: isc-dhcp-server.j2
|
|
dest: /etc/default/isc-dhcp-server
|
|
mode: '0644'
|
|
notify: restart isc-dhcp
|
|
|
|
- name: Get failover peer IP
|
|
set_fact:
|
|
failover_peer_ip: "{{ hostvars[item].gateway_config.wg_ip }}"
|
|
loop: "{{ groups['lab_gateways'] }}"
|
|
when:
|
|
- hostvars[item].gateway_config.lab_name == gateway_config.lab_name
|
|
- hostvars[item].gateway_config.dhcp_role in ['primary', 'secondary']
|
|
- hostvars[item].gateway_config.dhcp_role != gateway_config.dhcp_role
|
|
register: peer_search
|
|
|
|
- name: Set failover peer IP from search
|
|
set_fact:
|
|
failover_peer_ip: "{{ peer_search.results | selectattr('ansible_facts', 'defined') | map(attribute='ansible_facts.failover_peer_ip') | first }}"
|
|
when: peer_search.results | selectattr('ansible_facts', 'defined') | list | length > 0
|
|
|
|
- name: Configure DHCP failover
|
|
template:
|
|
src: dhcpd.conf.j2
|
|
dest: /etc/dhcp/dhcpd.conf
|
|
mode: '0644'
|
|
validate: 'dhcpd -t -cf %s'
|
|
notify: restart isc-dhcp
|
|
|
|
- name: Ensure ISC DHCP is enabled and started
|
|
systemd:
|
|
name: isc-dhcp-server
|
|
enabled: yes
|
|
state: started
|