#dhcpd.conf ddns-update-style none; authoritative; % for identfier, subnet in dhcp_config.get('subnets', {}).items(): subnet ${subnet['subnet']} netmask ${subnet['netmask']} { % if subnet.get('range_lower', None) and subnet.get('range_higher', None): range ${subnet['range_lower']} ${subnet['range_higher']}; % endif interface ${subnet['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()): option ${option} ${value}; % endfor } % endfor % for identifier, allocation in dhcp_config.get('fixed_allocations', {}).items(): host ${identifier} { hardware ethernet ${allocation['mac']}; fixed-address ${allocation['ipv4']}; } % endfor