aboutsummaryrefslogtreecommitdiffstats
path: root/ansible/roles/udhcpd
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2018-04-10 16:05:44 +0200
committerHarald Welte <laforge@gnumonks.org>2018-04-11 21:28:30 +0000
commit717531ac98e26bc8c5e7e82249b33b2dc9c473db (patch)
tree9f5ea926de08ad43f6d8f724e0a999cfc67f3131 /ansible/roles/udhcpd
parent1b528d652732c7a4d728e44caedd2e37975bc3b7 (diff)
ansible: add role udhcpd: setup a udhcpd server
Diffstat (limited to 'ansible/roles/udhcpd')
-rw-r--r--ansible/roles/udhcpd/README.md15
-rw-r--r--ansible/roles/udhcpd/defaults/main.yml16
-rw-r--r--ansible/roles/udhcpd/tasks/main.yml14
-rw-r--r--ansible/roles/udhcpd/templates/etc/udhcpd.conf123
4 files changed, 168 insertions, 0 deletions
diff --git a/ansible/roles/udhcpd/README.md b/ansible/roles/udhcpd/README.md
new file mode 100644
index 0000000..0d37661
--- /dev/null
+++ b/ansible/roles/udhcpd/README.md
@@ -0,0 +1,15 @@
+---
+Install and configure udhcpd.
+
+```
+ - name: udhcpd
+ udhcpd_router: 10.42.42.1
+ udhcpd_range_start: 10.42.42.230
+ udhcpd_range_end: 10.42.42.230
+ udhcpd_netmask: 255.255.255.0
+ udhcpd_dns: 10.42.42.2
+ udhcpd_interface: enp2s0
+ udhcpd_static_leases:
+ - mac: 00:12:34:56:78:9a
+ ip: 10.42.42.53
+```
diff --git a/ansible/roles/udhcpd/defaults/main.yml b/ansible/roles/udhcpd/defaults/main.yml
new file mode 100644
index 0000000..1f4ef47
--- /dev/null
+++ b/ansible/roles/udhcpd/defaults/main.yml
@@ -0,0 +1,16 @@
+---
+
+udhcpd_range_start: 192.168.1.100
+udhcpd_range_end: 192.168.1.200
+
+udhcpd_subnet: 255.255.255.0
+udhcpd_router: 192.168.1.1
+udhcpd_dns: "{{ udhcpd_router }}"
+
+# in seconds
+# default: 10 days
+udhcpd_lease_time: 864000
+
+udhcpd_interface: eth0
+
+udhcpd_static_leases: []
diff --git a/ansible/roles/udhcpd/tasks/main.yml b/ansible/roles/udhcpd/tasks/main.yml
new file mode 100644
index 0000000..280a5ef
--- /dev/null
+++ b/ansible/roles/udhcpd/tasks/main.yml
@@ -0,0 +1,14 @@
+---
+- name: udhcpd | update apt-cache
+ apt:
+ cache_valid_time: 3600
+ update_cache: yes
+
+- name: udhcpd | install
+ apt:
+ name: udhcpd
+
+- name: configure udhcpd
+ template:
+ src: etc/udhcpd.conf
+ dest: /etc/udhcpd.conf
diff --git a/ansible/roles/udhcpd/templates/etc/udhcpd.conf b/ansible/roles/udhcpd/templates/etc/udhcpd.conf
new file mode 100644
index 0000000..d2df746
--- /dev/null
+++ b/ansible/roles/udhcpd/templates/etc/udhcpd.conf
@@ -0,0 +1,123 @@
+# {{ ansible_managed }}
+
+# The start and end of the IP lease block
+
+start {{ udhcpd_range_start }} #default: 192.168.0.20
+end {{ udhcpd_range_end }} #default: 192.168.0.254
+
+opt dns {{ udhcpd_dns }}
+option subnet {{ udhcpd_subnet }}
+opt router {{ udhcpd_router }}
+option domain local
+option lease {{ udhcpd_lease_time }} # 10 days of seconds
+
+
+
+# The interface that udhcpd will use
+
+interface {{ udhcpd_interface }} #default: eth0
+
+
+# The maximim number of leases (includes addressesd reserved
+# by OFFER's, DECLINE's, and ARP conficts
+
+#max_leases 254 #default: 254
+
+
+# If remaining is true (default), udhcpd will store the time
+# remaining for each lease in the udhcpd leases file. This is
+# for embedded systems that cannot keep time between reboots.
+# If you set remaining to no, the absolute time that the lease
+# expires at will be stored in the dhcpd.leases file.
+
+#remaining yes #default: yes
+
+
+# The time period at which udhcpd will write out a dhcpd.leases
+# file. If this is 0, udhcpd will never automatically write a
+# lease file. (specified in seconds)
+
+#auto_time 7200 #default: 7200 (2 hours)
+
+
+# The amount of time that an IP will be reserved (leased) for if a
+# DHCP decline message is received (seconds).
+
+#decline_time 3600 #default: 3600 (1 hour)
+
+
+# The amount of time that an IP will be reserved (leased) for if an
+# ARP conflct occurs. (seconds
+
+#conflict_time 3600 #default: 3600 (1 hour)
+
+
+# How long an offered address is reserved (leased) in seconds
+
+#offer_time 60 #default: 60 (1 minute)
+
+# If a lease to be given is below this value, the full lease time is
+# instead used (seconds).
+
+#min_lease 60 #defult: 60
+
+
+# The location of the leases file
+
+#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases
+
+# The location of the pid file
+#pidfile /var/run/udhcpd.pid #default: /var/run/udhcpd.pid
+
+# Everytime udhcpd writes a leases file, the below script will be called.
+# Useful for writing the lease file to flash every few hours.
+
+#notify_file #default: (no script)
+
+#notify_file dumpleases # <--- useful for debugging
+
+# The following are bootp specific options, setable by udhcpd.
+
+#siaddr 192.168.0.22 #default: 0.0.0.0
+
+#sname zorak #default: (none)
+
+#boot_file /var/nfs_root #default: (none)
+
+# The remainer of options are DHCP options and can be specifed with the
+# keyword 'opt' or 'option'. If an option can take multiple items, such
+# as the dns option, they can be listed on the same line, or multiple
+# lines. The only option with a default is 'lease'.
+
+# Currently supported options, for more info, see options.c
+#opt subnet
+#opt timezone
+#opt router
+#opt timesrv
+#opt namesrv
+#opt dns
+#opt logsrv
+#opt cookiesrv
+#opt lprsrv
+#opt bootsize
+#opt domain
+#opt swapsrv
+#opt rootpath
+#opt ipttl
+#opt mtu
+#opt broadcast
+#opt wins
+#opt lease
+#opt ntpsrv
+#opt tftp
+#opt bootfile
+#opt wpad
+# opt wins 192.168.10.10
+
+# Static leases map
+#static_lease 00:60:08:11:CE:4E 192.168.0.54
+#static_lease 00:60:08:11:CE:3E 192.168.0.44
+
+{% for lease in udhcpd_static_leases %}
+static_lease {{ lease['mac'] }} {{ lease['ip'] }}
+{% endfor %}