move dns back to zone files
This commit is contained in:
parent
e47c8ce341
commit
9c41d73f93
20 changed files with 131 additions and 24 deletions
|
@ -2,13 +2,14 @@ from datetime import datetime
|
|||
from os import listdir
|
||||
from os.path import isfile, join
|
||||
from subprocess import check_output
|
||||
from textwrap import dedent
|
||||
|
||||
from bundlewrap.utils.ui import io
|
||||
|
||||
zone_path = join(repo.path, 'data', 'powerdns', 'files', 'bind-zones')
|
||||
|
||||
nameservers = set()
|
||||
for rnode in sorted(repo.nodes_in_group('dns')):
|
||||
for rnode in repo.nodes_in_group('dns'):
|
||||
nameservers.add(rnode.metadata.get('powerdns/my_hostname', rnode.metadata.get('hostname')))
|
||||
|
||||
my_primary_servers = set()
|
||||
|
@ -75,25 +76,45 @@ actions = {
|
|||
}
|
||||
|
||||
if node.metadata.get('powerdns/features/bind', False):
|
||||
try:
|
||||
output = check_output(['git', 'log', '-1', '--pretty=%ci']).decode('utf-8').strip()
|
||||
serial = datetime.strptime(output, '%Y-%m-%d %H:%M:%S %z').strftime('%y%m%d%H%M')
|
||||
except Exception as e:
|
||||
io.stderr(f"{node.name} Error while parsing commit time for powerdns zone serial: {e!r}")
|
||||
serial = datetime.now().strftime('%y%m%d0000')
|
||||
|
||||
HEADER = dedent(f"""
|
||||
$TTL 60
|
||||
@ IN SOA ns-mephisto.kunbox.net. hostmaster.kunbox.net. (
|
||||
{serial}
|
||||
3600
|
||||
600
|
||||
86400
|
||||
300
|
||||
)
|
||||
""").strip()
|
||||
|
||||
for ns in sorted(nameservers):
|
||||
HEADER += f"\n@ IN NS {ns}."
|
||||
|
||||
primary_zones = set()
|
||||
for zone in listdir(zone_path):
|
||||
if not isfile(join(zone_path, zone)) or zone.startswith(".") or zone.startswith("_"):
|
||||
if (
|
||||
not (
|
||||
isfile(join(zone_path, zone))
|
||||
or islink(join(zone_path, zone))
|
||||
)
|
||||
or zone.startswith(".")
|
||||
or zone.startswith("_")
|
||||
):
|
||||
continue
|
||||
|
||||
try:
|
||||
output = check_output(['git', 'log', '-1', '--pretty=%ci']).decode('utf-8').strip()
|
||||
serial = datetime.strptime(output, '%Y-%m-%d %H:%M:%S %z').strftime('%y%m%d%H%M')
|
||||
except Exception as e:
|
||||
io.stderr(f"Error while parsing commit time for {zone} serial: {e!r}")
|
||||
serial = datetime.now().strftime('%y%m%d0000')
|
||||
|
||||
primary_zones.add(zone)
|
||||
|
||||
files[f'/var/lib/powerdns/zones/{zone}'] = {
|
||||
'content_type': 'mako',
|
||||
'context': {
|
||||
'NAMESERVERS': '\n'.join(sorted({f'@ IN NS {ns}.' for ns in nameservers})),
|
||||
'SERIAL': serial,
|
||||
'HEADER': HEADER + f"\n$ORIGIN {zone}.",
|
||||
'metadata_records': node.metadata.get(f'powerdns/bind-zones/{zone}/records', []),
|
||||
},
|
||||
'source': f'bind-zones/{zone}',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue