% for view in views: acl "${view['name']}" { ${' '.join(f'{e};' for e in view['acl'])} }; % endfor key "acme" { algorithm hmac-sha512; secret "${acme_key}"; }; % for view in views: view "${view['name']}" { match-clients { ${view['name']}; }; % if view['is_internal']: recursion yes; % else: recursion no; rate-limit { responses-per-second 2; window 25; }; % endif forward only; forwarders { 1.1.1.1; 9.9.9.9; 8.8.8.8; }; % for zone in zones: zone "${zone}" { type ${type}; % if type == 'slave': masters { ${master_ip}; }; % endif file "/var/lib/bind/${view['name']}/db.${zone}"; }; % endfor zone "acme.${hostname}" { type master; file "/var/lib/bind/${view['name']}/db.acme.${hostname}"; masterfile-format text; allow-update { key "acme"; }; }; include "/etc/bind/named.conf.default-zones"; include "/etc/bind/zones.rfc1918"; }; % endfor