71 lines
No EOL
1.9 KiB
Python
71 lines
No EOL
1.9 KiB
Python
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() |