52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
kea_config = {
|
|
'Dhcp4': {
|
|
**node.metadata.get('kea-dhcp-server/config'),
|
|
'interfaces-config': {
|
|
'interfaces': sorted(node.metadata.get('kea-dhcp-server/subnets', {}).keys()),
|
|
},
|
|
'subnet4': [],
|
|
'loggers': [{
|
|
'name': 'kea-dhcp4',
|
|
'output_options': [{
|
|
# -> journal
|
|
'output': 'stdout',
|
|
}],
|
|
'severity': 'WARN',
|
|
}],
|
|
},
|
|
}
|
|
|
|
for iface, config in sorted(node.metadata.get('kea-dhcp-server/subnets', {}).items()):
|
|
kea_config['Dhcp4']['subnet4'].append({
|
|
'subnet': config['subnet'],
|
|
'pools': [{
|
|
'pool': f'{config["lower"]} - {config["higher"]}',
|
|
}],
|
|
'option-data': [
|
|
{
|
|
'name': k,
|
|
'data': v,
|
|
} for k, v in sorted(config.get('options', {}).items())
|
|
],
|
|
'reservations': [
|
|
{
|
|
'ip-address': v['ip'],
|
|
'hw-address': v['mac'],
|
|
'hostname': k,
|
|
} for k, v in sorted(node.metadata.get(f'kea-dhcp-server/fixed_allocations/{iface}', {}).items())
|
|
]
|
|
})
|
|
|
|
files['/etc/kea/kea-dhcp4.conf'] = {
|
|
'content': repo.libs.faults.dict_as_json(kea_config),
|
|
'triggers': {
|
|
'svc_systemd:kea-dhcp4-server:restart',
|
|
},
|
|
}
|
|
|
|
svc_systemd['kea-dhcp4-server'] = {
|
|
'needs': {
|
|
'file:/etc/kea/kea-dhcp4.conf',
|
|
'pkg_apt:kea-dhcp4-server',
|
|
},
|
|
}
|