forked from DavesCodeMusings/CloudPi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install-dhcp.yml
77 lines (67 loc) · 2.17 KB
/
install-dhcp.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
---
# Although ISC's KEA is the newest offering for DHCP, the older dhcpd
# has the advantage when it comes to simplicity.
#
# NOTE:
# Many of the default values used here are taken from the existing
# network settings. Be sure the host is using a static IP and
# everything else is properly configured before running this playbook.
- name: Install ISC's DHCP Server
hosts: localhost
connection: local
become: true
vars:
dhcp_range:
start: 192.168.0.20
stop: 192.168.0.200
domain: "{{ ansible_domain }}"
dns_servers:
primary: "{{ ansible_dns.nameservers[0] }}"
secondary: "{{ ansible_dns.nameservers[1] }}"
network: "{{ ansible_default_ipv4.network }}"
netmask: "{{ ansible_default_ipv4.netmask }}"
gateway: "{{ ansible_default_ipv4.gateway }}"
tasks:
- name: Install ISC dhcpd
apt:
name: isc-dhcp-server
state: latest
register: install_status
- name: Look for existing configuration file
stat:
path: /etc/dhcp/dhcpd.conf
register: config_file
# This task runs only if dhcpd was freshly installed.
- name: Move configuration file
shell:
cmd: mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.{{ ansible_date_time.iso8601 }}
when: install_status is changed and config_file.stat.exists
- name: Create configuration file
copy:
dest: /etc/dhcp/dhcpd.conf
force: no
content: |
# dhcpd.conf
# Configuration for all subnets.
option domain-name "{{ domain }}";
option domain-name-servers {{ dns_servers.primary }}, {{ dns_servers.secondary }};
default-lease-time 86400;
max-lease-time 172800;
# DHCP Ranges.
subnet {{ network }} netmask {{ netmask }} {
range {{ dhcp_range.start }} {{ dhcp_range.stop }};
option routers {{ gateway }};
}
- name: Validate configuration file
shell:
cmd: dhcpd -t
- name: Assign interface to listen on
lineinfile:
path: /etc/default/isc-dhcp-server
regexp: '^INTERFACESv4=".*"$'
line: INTERFACESv4="eth0"
- name: Start dhcpd
systemd:
name: isc-dhcp-server
enabled: yes
state: started