From ef16a2d08104a382ccb496a64a07df8e105f0b48 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sun, 29 Jan 2023 11:01:48 +0100 Subject: [PATCH] bundles/powerdns: rework zone file generation --- bundles/powerdns/items.py | 27 ++++++----------------- data/powerdns/files/bind-zones/kunbox.net | 12 +++++++++- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/bundles/powerdns/items.py b/bundles/powerdns/items.py index 7b5da8a..2aad214 100644 --- a/bundles/powerdns/items.py +++ b/bundles/powerdns/items.py @@ -5,26 +5,12 @@ from subprocess import check_output zone_path = join(repo.path, 'data', 'powerdns', 'files', 'bind-zones') -ZONE_HEADER = """ -; _ ____ _ _ _____ _ _ _ _ ____ -; / \\ / ___| | | |_ _| | | | \\ | |/ ___| -; / _ \\| | | |_| | | | | | | | \\| | | _ -; / ___ \\ |___| _ | | | | |_| | |\\ | |_| | -; /_/ \\_\\____|_| |_| |_| \\___/|_| \\_|\\____| -; -; --> Diese Datei wird von BundleWrap verwaltet! <-- - -$TTL 60 -@ IN SOA ns-1.kunbox.net. hostmaster.kunbox.net. ( - {serial} - 3600 - 600 - 86400 - 300 - ) -""" +nameservers = set() for rnode in sorted(repo.nodes_in_group('dns')): - ZONE_HEADER += '@ IN NS {}.\n'.format(rnode.metadata.get('powerdns/my_hostname', rnode.metadata.get('hostname'))) + if not rnode.metadata.get('powerdns/is_secondary'): + # hide the primary nameserver from auto-generated nameserver lists + continue + nameservers.add(rnode.metadata.get('powerdns/my_hostname', rnode.metadata.get('hostname'))) directories = { '/etc/powerdns/pdns.d': { @@ -102,7 +88,8 @@ if node.metadata.get('powerdns/features/bind', False): files[f'/var/lib/powerdns/zones/{zone}'] = { 'content_type': 'mako', 'context': { - 'header': ZONE_HEADER.format(serial=serial), + 'NAMESERVERS': '\n'.join(sorted({f'@ IN NS {ns}.' for ns in nameservers})), + 'SERIAL': serial, 'metadata_records': node.metadata.get(f'powerdns/bind-zones/{zone}/records', []), }, 'source': f'bind-zones/{zone}', diff --git a/data/powerdns/files/bind-zones/kunbox.net b/data/powerdns/files/bind-zones/kunbox.net index 4eec895..25a0273 100644 --- a/data/powerdns/files/bind-zones/kunbox.net +++ b/data/powerdns/files/bind-zones/kunbox.net @@ -1,4 +1,14 @@ -${header} +$TTL 60 +@ IN SOA ns-primary.kunbox.net. hostmaster.kunbox.net. ( + ${SERIAL} + 3600 + 600 + 86400 + 300 + ) + + +${NAMESERVERS} $ORIGIN kunbox.net.