ansible: add role udhcpd: setup a udhcpd server

Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02
This commit is contained in:
Alexander Couzens 2018-04-10 16:05:44 +02:00 committed by Harald Welte
parent 1b528d6527
commit 717531ac98
4 changed files with 168 additions and 0 deletions

View File

@ -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
```

View File

@ -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: []

View File

@ -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

View File

@ -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 %}