remove isc-dhcp-server
This commit is contained in:
parent
b9d4204060
commit
be62c1270f
4 changed files with 0 additions and 149 deletions
|
@ -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
|
|
|
@ -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=""
|
|
|
@ -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',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -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),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue