Review at  https://gerrit.osmocom.org/7735

ansible: add role udhcpd: setup a udhcpd server

Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02
---
A ansible/roles/udhcpd/README.md
A ansible/roles/udhcpd/defaults/main.yml
A ansible/roles/udhcpd/tasks/main.yml
A ansible/roles/udhcpd/templates/etc/udhcpd.conf
4 files changed, 168 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/35/7735/1

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

-- 
To view, visit https://gerrit.osmocom.org/7735
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia272ae9c2b245d0a06f84b91f50dd875d4488e02
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Owner: lynxis lazus <lyn...@fe80.eu>

Reply via email to