diff --git a/bundles/dhcpd/files/dhcpd.conf b/bundles/dhcpd/files/dhcpd.conf deleted file mode 100644 index 97e734b..0000000 --- a/bundles/dhcpd/files/dhcpd.conf +++ /dev/null @@ -1,36 +0,0 @@ -<% - import re - from ipaddress import ip_network -%> -ddns-update-style none; - -authoritative; - -% for interface, subnet in sorted(dhcp_config.get('subnets', {}).items()): -<% - network = ip_network(subnet['subnet']) -%> -# interface ${interface} provides ${subnet['subnet']} -subnet ${network.network_address} netmask ${network.netmask} { -% if subnet.get('range_lower', None) and subnet.get('range_higher', None): - range ${subnet['range_lower']} ${subnet['range_higher']}; -% endif - interface "${interface}"; - default-lease-time ${subnet.get('default-lease-time', 600)}; - max-lease-time ${subnet.get('max-lease-time', 3600)}; -% for option, value in sorted(subnet.get('options', {}).items()): -% if re.match('([^0-9\.,\ ])', value): - option ${option} "${value}"; -% else: - option ${option} ${value}; -% endif -% endfor -} -% endfor - -% for identifier, allocation in dhcp_config.get('fixed_allocations', {}).items(): -host ${identifier} { - hardware ethernet ${allocation['mac']}; - fixed-address ${allocation['ipv4']}; -} -% endfor diff --git a/bundles/dhcpd/files/isc-dhcp-server b/bundles/dhcpd/files/isc-dhcp-server deleted file mode 100644 index 4b0120d..0000000 --- a/bundles/dhcpd/files/isc-dhcp-server +++ /dev/null @@ -1,18 +0,0 @@ -# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) - -# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). -#DHCPDv4_CONF=/etc/dhcp/dhcpd.conf -#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf - -# Path to dhcpd's PID file (default: /var/run/dhcpd.pid). -#DHCPDv4_PID=/var/run/dhcpd.pid -#DHCPDv6_PID=/var/run/dhcpd6.pid - -# Additional options to start dhcpd with. -# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead -#OPTIONS="" - -# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? -# Separate multiple interfaces with spaces, e.g. "eth0 eth1". -INTERFACESv4="${' '.join(sorted(node.metadata.get('dhcpd/subnets', {})))}" -INTERFACESv6="" diff --git a/bundles/dhcpd/items.py b/bundles/dhcpd/items.py deleted file mode 100644 index bdf9944..0000000 --- a/bundles/dhcpd/items.py +++ /dev/null @@ -1,41 +0,0 @@ -files = { - '/etc/dhcp/dhcpd.conf': { - 'content_type': 'mako', - 'context': { - 'dhcp_config': node.metadata['dhcpd'], - }, - 'needs': { - 'pkg_apt:isc-dhcp-server' - }, - 'triggers': { - 'svc_systemd:isc-dhcp-server:restart', - }, - }, - '/etc/default/isc-dhcp-server': { - 'content_type': 'mako', - 'needs': { - 'pkg_apt:isc-dhcp-server' - }, - 'triggers': { - 'svc_systemd:isc-dhcp-server:restart', - }, - }, -} - -actions = { - # needed for dhcp-lease-list - 'dhcpd_download_oui.txt': { - 'command': 'wget http://standards-oui.ieee.org/oui.txt -O /usr/local/etc/oui.txt', - 'unless': 'test -f /usr/local/etc/oui.txt', - }, -} - -svc_systemd = { - 'isc-dhcp-server': { - 'needs': { - 'pkg_apt:isc-dhcp-server', - 'file:/etc/dhcp/dhcpd.conf', - 'file:/etc/default/isc-dhcp-server', - }, - }, -} diff --git a/bundles/dhcpd/metadata.py b/bundles/dhcpd/metadata.py deleted file mode 100644 index cc091af..0000000 --- a/bundles/dhcpd/metadata.py +++ /dev/null @@ -1,54 +0,0 @@ -defaults = { - 'apt': { - 'packages': { - 'isc-dhcp-server': {}, - }, - }, - 'bash_aliases': { - 'leases': 'sudo dhcp-lease-list | tail -n +4 | sort -k 2,2', - }, -} - - -@metadata_reactor.provides( - 'dhcpd/fixed_allocations', -) -def get_static_allocations(metadata): - allocations = {} - for rnode in repo.nodes: - if rnode.metadata.get('location', '') != metadata.get('location', ''): - continue - - for iface_name, iface_config in rnode.metadata.get('interfaces', {}).items(): - if iface_config.get('dhcp', False): - try: - allocations[f'{rnode.name}_{iface_name}'] = { - 'ipv4': sorted(iface_config['ips'])[0], - 'mac': iface_config['mac'], - } - except KeyError: - pass - - return { - 'dhcpd': { - 'fixed_allocations': allocations, - } - } - - -@metadata_reactor.provides( - 'nftables/rules/10-dhcpd', -) -def nftables(metadata): - rules = set() - for iface in node.metadata.get('dhcpd/subnets', {}): - rules.add(f'inet filter input udp dport {{ 67, 68 }} iif {iface} accept') - - return { - 'nftables': { - 'rules': { - # can't use port_rules here, because we're generating interface based rules. - '10-dhcpd': sorted(rules), - }, - } - }