summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-05-18 13:52:01 +0300
committerLars Wirzenius <liw@liw.fi>2018-05-18 13:52:01 +0300
commit3fd0d8538b2cd36036e4c75fa9e90f9bf2c2deb3 (patch)
tree462a8c18f8a650a8806e4916eb0f58789740bbec
parent4f1619a3ba6ce68e08cea4cc4ca3c61b9605c4f1 (diff)
downloadhetznertool-3fd0d8538b2cd36036e4c75fa9e90f9bf2c2deb3.tar.gz
Fix: hetznertool to update bind9 on primary name server
-rwxr-xr-xhetznertool28
1 files 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)