# # {{ ansible_managed }} # { "Dhcp4": { "interfaces-config": { "interfaces": [ {% for mesh in meshes %} {% if not loop.last %} "{{ mesh.id }}br", {% else %} "{{ mesh.id }}br" {% endif %} {% endfor %} ] }, "control-socket": { "socket-type": "unix", "socket-name": "/tmp/kea-dhcp4-ctrl.sock" }, "lease-database": { "type": "memfile", "persist": true, "lfc-interval": {{ kea_lease_database['lfc_interval'] }} }, "expired-leases-processing": { "reclaim-timer-wait-time": {{ kea_expired_leases_processing['reclaim_timer_wait_time'] }}, "flush-reclaimed-timer-wait-time": {{ kea_expired_leases_processing['flush_reclaimed_timer_wait_time'] }} , "hold-reclaimed-time": {{ kea_expired_leases_processing['hold_reclaimed_time'] }}, "max-reclaim-leases": {{ kea_expired_leases_processing['max_reclaim_leases'] }}, "max-reclaim-time": {{ kea_expired_leases_processing['max_reclaim_time'] }}, "unwarned-reclaim-cycles": {{ kea_expired_leases_processing['unwarned_reclaim_cycles'] }} }, "valid-lifetime": {{ kea_lease_time }}, "subnet4": [ {% for mesh in meshes %} { "subnet": "{{ mesh.ipv4_network | ipaddr('network/prefix') }}", "pools": [ { "pool": "{{ mesh_gw_prefixes[mesh.id].ipv4_dhcp | ipaddr('net') | ipaddr('range_usable') }}" } ], "option-data": [ { "name": "routers", "data": "{{ mesh.ipv4_network | ipaddr('net') | ipaddr(magic) | ipaddr('address') }}" }, { "name": "time-servers", "data": "{{ mesh.ipv4_network | ipaddr('net') | ipaddr(magic) | ipaddr('address') }}" }, { "name": "domain-name-servers", "data": "{{ mesh.ipv4_network | ipaddr('net') | ipaddr(magic) | ipaddr('address') }}" }{% if mesh.dnssl is defined %}, { "name": "domain-search", "data": "{% for dnssl in mesh.dnssl %}{{ dnssl }}{% if not loop.last %}, {% endif %}{% endfor %}" } {% endif %} ] {% if not loop.last %} }, {% else %} } ] {% endif %} {% endfor %} }, "Logging": { "loggers": [ { "name": "kea-dhcp4", "output_options": [ { "output": "/var/log/kea/kea-dhcp4.log" } ], "severity": "WARN", "debuglevel": 0 } ] } }