server: {% if not nameserver_ips is defined%} listen: 0.0.0.0@53 listen: ::@53 {% else %} {% for ip in nameserver_ips %} listen: {{ip|ipaddr('address')}}@53 {% endfor %} {% endif %} user: knot:knot log: - target: syslog any: info template: - id: slave storage: /var/lib/knot/slave {% if nameserver_zonefile_directory is defined %} - id: managed storage: {{nameserver_zonefile_directory}} semantic-checks: on {% endif %} remote: {% if nameserver_zones is defined %} {% for zone in nameserver_zones %} {% if zone.type|default('managed') == 'slave' %} - id: {{zone.domain}}/master address: {{zone.master.ip}} {% if zone.master.via is defined%} via: {{zone.master.via}} {% endif %} {% endif %} {% if zone.slaves is defined %} {% for slave in zone.slaves %} - id: {{zone.domain}}/slave/{{slave.name}} address: {{slave.ip}} {% if slave.via is defined%} via: {{slave.via}} {% endif %} {% endfor %} {% endif %} {% endfor %} {% endif %} acl: {% if nameserver_zones is defined %} {% for zone in nameserver_zones %} {% if zone.type|default('managed') == 'slave' %} - id: {{zone.domain}}/master/allow_notify address: {{zone.master.ip}} action: notify {% endif %} {% if zone.slaves is defined %} {% for slave in zone.slaves %} - id: {{zone.domain}}/slave/{{slave.name}}/allow_transfer address: {{slave.ip}} action: transfer {% endfor %} {% endif %} {% endfor %} {% endif %} zone: {% if nameserver_zones is defined %} {% for zone in nameserver_zones %} {% if zone.type|default('managed') != 'slave' %} - domain: {{zone.domain}} template: managed file: {{zone.domain}}.zone {% elif zone.type|default('managed') == 'slave' %} - domain: {{zone.domain}} template: slave master: {{zone.domain}}/master file: {{zone.domain}}.zone acl: {{zone.domain}}/master/allow_notify {% endif %} {% if zone.slaves is defined %} {% for slave in zone.slaves %} notify: {{zone.domain}}/slave/{{slave.name}} acl: {{zone.domain}}/slave/{{slave.name}}/allow_transfer {% endfor %} {% endif %} {% endfor %} {% endif %}