From fb0096a4ca1440058778b9061b967d609c0c6534 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 22 Dec 2021 00:21:32 +0100 Subject: add role for dhcp-server --- chaos-at-home/ch-gw-lan.yml | 10 ++++++++++ inventory/host_vars/ch-gw-lan.yml | 10 ++++++++++ roles/network/dhcp-server/defaults/main.yml | 12 ++++++++++++ roles/network/dhcp-server/handlers/main.yml | 5 +++++ roles/network/dhcp-server/tasks/main.yml | 29 +++++++++++++++++++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 chaos-at-home/ch-gw-lan.yml create mode 100644 roles/network/dhcp-server/defaults/main.yml create mode 100644 roles/network/dhcp-server/handlers/main.yml create mode 100644 roles/network/dhcp-server/tasks/main.yml diff --git a/chaos-at-home/ch-gw-lan.yml b/chaos-at-home/ch-gw-lan.yml new file mode 100644 index 00000000..1d4ad5f2 --- /dev/null +++ b/chaos-at-home/ch-gw-lan.yml @@ -0,0 +1,10 @@ +--- +- name: Basic Setup + hosts: ch-gw-lan + roles: + - role: apt-repo/base + - role: core/base + - role: core/sshd/base + - role: core/zsh + - role: core/ntp + - role: network/dhcp-server diff --git a/inventory/host_vars/ch-gw-lan.yml b/inventory/host_vars/ch-gw-lan.yml index be092c15..20aeff32 100644 --- a/inventory/host_vars/ch-gw-lan.yml +++ b/inventory/host_vars/ch-gw-lan.yml @@ -31,3 +31,13 @@ network: - *_network_primary_ - name: lan0 address: "{{ network_zones.lan.prefix | ipaddr(network_zones.lan.offsets[inventory_hostname]) | ipaddr('address/prefix') }}" + + +dhcp_server_interfaces: + lan0: + prefix: "{{ network_zones.lan.prefix }}" + gateway: "{{ network_zones.lan.gateway }}" + start: "{{ network_zones.lan.dhcp.start }}" + limit: "{{ network_zones.lan.dhcp.limit }}" + domain: "{{ host_domain }}" + dns: "{{ network_zones.lan.dns }}" diff --git a/roles/network/dhcp-server/defaults/main.yml b/roles/network/dhcp-server/defaults/main.yml new file mode 100644 index 00000000..26681652 --- /dev/null +++ b/roles/network/dhcp-server/defaults/main.yml @@ -0,0 +1,12 @@ +--- +# dhcp_server_interfaces: +# eth0: +# prefix: 192.168.23.0/24 +# offsets: +# start: 100 +# limit: 199 +# gw: 1 +# domain: example.com +# dns: +# - 1.1.1.1 +# - 9.9.9.9 diff --git a/roles/network/dhcp-server/handlers/main.yml b/roles/network/dhcp-server/handlers/main.yml new file mode 100644 index 00000000..bb6773e9 --- /dev/null +++ b/roles/network/dhcp-server/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart isc-dhcp-server + service: + name: isc-dhcp-server + state: restarted diff --git a/roles/network/dhcp-server/tasks/main.yml b/roles/network/dhcp-server/tasks/main.yml new file mode 100644 index 00000000..43851d37 --- /dev/null +++ b/roles/network/dhcp-server/tasks/main.yml @@ -0,0 +1,29 @@ +--- +- name: install isc-dhcp-server + apt: + name: isc-dhcp-server + state: present + +- name: configure interfaces + lineinfile: + path: /etc/default/isc-dhcp-server + regexp: '^INTERFACESv4=' + line: "INTERFACESv4=\"{{ dhcp_server_interfaces | list | sort | join(' ') }}\"" + notify: restart isc-dhcp-server + +- name: configure subnets + blockinfile: + path: /etc/dhcp/dhcpd.conf + marker: '### {mark} ansible network/dhcp-server subnets ###' + block: | + {% for interface,subnet in dhcp_server_interfaces.items() %} + subnet {{ subnet.prefix | ipaddr('network') }} netmask {{ subnet.prefix | ipaddr('netmask') }} { + range {{ subnet.prefix | ipaddr(subnet.start) | ipaddr('address') }} {{ subnet.prefix | ipaddr(subnet.limit) | ipaddr('address') }}; + option routers {{ subnet.gateway }}; + option domain-name-servers {{ subnet.dns | join(', ') }}; + option domain-name "{{ subnet.domain }}"; + } + {% if not loop.last %} + + {% endif %} + {% endfor %} -- cgit v1.2.3