summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-05-17 18:52:50 +0300
committerLars Wirzenius <liw@liw.fi>2018-05-17 18:52:50 +0300
commitc70f629eda6caa61da27881b112dec9882df273d (patch)
treec103e2d1cdc2fba21361bac1755b80848e6ec382
parente061a0cea406599ef5245fc8bbf1d0b0f66ceeba (diff)
downloadhetznertool-c70f629eda6caa61da27881b112dec9882df273d.tar.gz
Change: update Ansible inventory files, DNS zone; also on delete
-rwxr-xr-xhetznertool40
1 files changed, 37 insertions, 3 deletions
diff --git a/hetznertool b/hetznertool
index dc75e91..43360c2 100755
--- a/hetznertool
+++ b/hetznertool
@@ -115,6 +115,7 @@ def create_func(args):
'--ssh-key', args['ssh_key'],
)
update_zone_file(args)
+ write_inventory_files(args)
def list_func(args):
@@ -134,6 +135,8 @@ def delete_func(args):
'deleting {} ({} in {})'.format(
domain, info['name'], args['context']))
hcloud('server', 'delete', info['name'])
+ update_zone_file(args)
+ write_inventory_files(args)
def update_zone_file(args):
@@ -181,6 +184,19 @@ $ORIGIN dev.qvarnlabs.eu.
stream.write('{} IN A {}\n'.format(domain, info['ipv4']))
+def write_inventory_files(args):
+ dirname = args['ansible_inventory_dir']
+ for context in list_contexts():
+ use_context(context)
+ filename = os.path.join(dirname, 'hosts.{}'.format(context))
+ print('Writing Ansible inventory file {}'.format(filename))
+ with open(filename, 'w') as f:
+ for info in list_servers():
+ f.write(
+ '{} ansible_ssh_host={}\n'.format(
+ info['name'], info['ipv4']))
+
+
def read_config():
config = copy.deepcopy(default_config)
filename = CONFIG_FILENAME
@@ -198,15 +214,21 @@ def create_parser(config):
create = factory.add_parser('create')
create.add_argument(
+ 'context', help='hcloud context to create VMs in')
+ create.add_argument(
+ 'specfile', help='file to read VM specifications from')
+ create.add_argument(
'--ssh-key',
metavar='KEYNAME',
required='ssh-key' not in config,
default=config['ssh-key'],
help='create VM so it allow login via ssh key uploaded as KEYNAME')
create.add_argument(
- 'context', help='hcloud context to create VMs in')
- create.add_argument(
- 'specfile', help='file to read VM specifications from')
+ '--ansible-inventory-dir',
+ metavar='DIR',
+ required='ansible-inventory-dir' not in config,
+ default=config['ansible-inventory-dir'],
+ help='create Ansible inventory files in DIR')
create.add_argument(
'--dnszone-dir', default=config['dnszone-dir'],
metavar='DIR', help='write DNS zone directory into DIR')
@@ -219,6 +241,18 @@ def create_parser(config):
delete = factory.add_parser('delete')
delete.add_argument(
'context', help='hcloud context to delete all VMs from')
+ delete.add_argument(
+ '--ansible-inventory-dir',
+ metavar='DIR',
+ required='ansible-inventory-dir' not in config,
+ default=config['ansible-inventory-dir'],
+ help='create Ansible inventory files in DIR')
+ delete.add_argument(
+ '--dnszone-dir', default=config['dnszone-dir'],
+ metavar='DIR', help='write DNS zone directory into DIR')
+ delete.add_argument(
+ '--dnszone-file', default=config['dnszone-file'],
+ metavar='FILE', help='write DNS zone directory into FILE')
create.set_defaults(func=create_func)
servers.set_defaults(func=list_func)