import argparse import pathlib import subprocess MD_PATH = "./meta-data" UD_PATH = "./user-data" def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("--password", required=True) parser.add_argument("--public-key", required=True, type=open) parser.add_argument("--local-hostname", default="aio3.gpslab.cbr.redhat.com") parser.add_argument("--user-data", default="./user-data.tpl", type=open) parser.add_argument("--meta-data", default="./meta-data.tpl", type=open) parser.add_argument("--instance-id", default="aio3") args = parser.parse_args() args.public_key = args.public_key.read() args.user_data = args.user_data.read() args.user_data = args.user_data.format(data=args) args.meta_data = args.meta_data.read() args.meta_data = args.meta_data.format(data=args) return args def write_user_data(user_data): with open(UD_PATH, "w", encoding="utf-8") as user_data_file: user_data_file.write(user_data) def write_meta_data(meta_data): with open(MD_PATH, "w", encoding="utf-8") as meta_data_file: meta_data_file.write(meta_data) def virt_install_cmd(args): tpl = f""" sudo virt-install --os-variant {args.os_variant} --name {args.name} --memory {args.ram} --disk ./test.qcow2 --import --graphics spice,listen=0.0.0.0 --video virtio --channel spicevmc --wait 0 --cloud-init meta-data=./meta-data,user-data=./user-data """ def delete_meta_data(): pathlib.Path.unlink(MD_PATH) def delete_user_data(): pathlib.Path.unlink(UD_PATH) def main(): args = parse_args() print(args) write_meta_data(args.meta_data) write_user_data(args.user_data) delete_meta_data() delete_user_data() if __name__ == '__main__': main()