mirror of
https://github.com/FAUSheppy/athq-vm-management
synced 2025-12-06 05:41:35 +01:00
61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
import json
|
|
import argparse
|
|
import vm
|
|
import sys
|
|
import jinja2
|
|
import icinga
|
|
import backup
|
|
import nginx
|
|
import pyansible
|
|
|
|
MASTER_ADDRESS = "atlantishq.de"
|
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = argparse.ArgumentParser(description='AtlantisHQ VM Management Script',
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
|
|
parser.add_argument("--backup", action="store_const", default=False, const=True)
|
|
parser.add_argument("--skip-ansible", action="store_const", default=True, const=False)
|
|
parser.add_argument("--skip-nginx", action="store_const", default=True, const=False)
|
|
parser.add_argument("--skip-icinga", action="store_const", default=True, const=False)
|
|
parser.add_argument("--skip-ssh-config", action="store_const", default=True, const=False)
|
|
args = parser.parse_args()
|
|
|
|
FILE = "./config/vms.json"
|
|
vmList = []
|
|
with open(FILE) as f:
|
|
jsonList = json.load(f)
|
|
for obj in jsonList:
|
|
try:
|
|
vmo = vm.VM(obj)
|
|
vmList.append(vmo)
|
|
except ValueError as e:
|
|
print(e, file=sys.stderr)
|
|
|
|
# dump nginx config #
|
|
if args.skip_nginx:
|
|
nginx.dump_config(vmList, MASTER_ADDRESS)
|
|
|
|
# dump icinga master
|
|
if args.skip_icinga:
|
|
icinga.createMasterHostConfig(vmList)
|
|
|
|
# dump ansible
|
|
if args.skip_ansible:
|
|
pyansible.dump_config(vmList)
|
|
|
|
# dump direct connect ssh-config
|
|
if args.skip_ssh_config:
|
|
with open("./ssh_config_for_clients", "w") as f:
|
|
for vmo in filter(lambda x: x.sshOutsidePort, set(vmList)):
|
|
f.write("Host {}\n".format(vmo.hostname + "." + MASTER_ADDRESS))
|
|
f.write(" Port {}\n".format(vmo.sshOutsidePort))
|
|
f.write(" User root\n")
|
|
f.write("\n")
|
|
|
|
# backup #
|
|
if args.backup:
|
|
with open("./config/backup.json") as f:
|
|
backup.createBackupScriptStructure(json.load(f), baseDomain=MASTER_ADDRESS)
|