From 3fd0d8538b2cd36036e4c75fa9e90f9bf2c2deb3 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 18 May 2018 13:52:01 +0300 Subject: Fix: hetznertool to update bind9 on primary name server --- hetznertool | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/hetznertool b/hetznertool index 43360c2..919536e 100755 --- a/hetznertool +++ b/hetznertool @@ -13,9 +13,10 @@ CONFIG_FILENAME = os.path.expanduser('~/.config/hetznertool/hetznertool.yaml') default_config = { 'dnszone-dir': os.path.expanduser('~/qvarnlabs/code/dnszone'), - 'dnszone-file': 'db.hetzner', + 'dnszone-file': 'db.h', 'ansible-inventory-dir': '.', 'ssh-key': None, + 'ns1': 'root@ns1.qvarnlabs.net', } @@ -163,11 +164,13 @@ def update_zone_file(args): subprocess.check_call(['git', 'push'], cwd=dirname) + kick_bind9(args['ns1'], filename, basename) + def write_zone(stream, serial): stream.write(''' $TTL 30 -$ORIGIN dev.qvarnlabs.eu. +$ORIGIN h.qvarnlabs.eu. @ IN SOA ns1.qvarnlabs.net. ops.qvarnlabs.com ( {} 30 30 8640000 15 ) @@ -180,8 +183,8 @@ $ORIGIN dev.qvarnlabs.eu. for context in list_contexts(): use_context(context) for info in list_servers(): - domain = dns_name(context, info['name']) - stream.write('{} IN A {}\n'.format(domain, info['ipv4'])) + stream.write( + '{}-{} IN A {}\n'.format(context, info['name'], info['ipv4'])) def write_inventory_files(args): @@ -197,6 +200,13 @@ def write_inventory_files(args): info['name'], info['ipv4'])) +def kick_bind9(ssh_target, filename, basename): + target = '{}:/etc/bind/{}'.format(ssh_target, basename) + subprocess.check_call(['scp', filename, target]) + subprocess.check_call(['ssh', ssh_target, 'systemctl', 'reload', 'bind9']) + + + def read_config(): config = copy.deepcopy(default_config) filename = CONFIG_FILENAME @@ -235,6 +245,11 @@ def create_parser(config): create.add_argument( '--dnszone-file', default=config['dnszone-file'], metavar='FILE', help='write DNS zone directory into FILE') + create.add_argument( + '--ns1', default=config['ns1'], + required='ns1' not in config, + metavar='USER@ADDRESS', + help='copy zone file to primary DNS server via ssh') servers = factory.add_parser('list') @@ -253,6 +268,11 @@ def create_parser(config): delete.add_argument( '--dnszone-file', default=config['dnszone-file'], metavar='FILE', help='write DNS zone directory into FILE') + delete.add_argument( + '--ns1', default=config['ns1'], + required='ns1' not in config, + metavar='USER@ADDRESS', + help='copy zone file to primary DNS server via ssh') create.set_defaults(func=create_func) servers.set_defaults(func=list_func) -- cgit v1.2.1