import yaml from decouple import config import argparse import os parser = argparse.ArgumentParser(description="Generate predefined Dynatrace configuration via Terraform. Default features are Management zone, Alerting profile and predefined dashboard. For more see options below", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("-A", "--appname", type=str,required=True, help="Your app_name") parser.add_argument('-C', "--compassid", type=str,required=True, help="Your compass_id") parser.add_argument('-F', "--features", type=str,required=False, help="Comma separated additional features. Possible options are: custom_service, processgroup_naming, service_naming") args = parser.parse_args() #Config options for onboarding. Will be extended with other configuration options in future configoptions = ["management_zone"] envconfigoptions = ["alerting","dashboard"] if(args.features): features = args.features.split(",") configoptions = configoptions + features def main(slo_path): print("Generating tf files...") if args.appname and args.compassid: with open('./environment.yaml') as file: doc = yaml.safe_load(file) for item, doc in doc.items(): envs = dict(doc[0]) for configoption in configoptions: with open('./_templates/_template_'+configoption+'.tf') as file: data = file.read() data = data.replace("", args.appname) data = data.replace("", args.compassid) #print('./'+item+'/'+configoption+'/'+args.appname+'.tf') with open('./'+item+'/'+configoption+'/'+args.appname+'.tf', 'w') as file: file.write(data) for envconfigoption in envconfigoptions: for env in envs.get("environments"): with open('./_templates/_template_'+envconfigoption+'.tf') as file: data = file.read() data = data.replace("", args.appname) data = data.replace("", args.compassid) data = data.replace("", env) #print('./'+item+'/'+envconfigoption+'/'+args.appname+'_'+env+'.tf') with open('./'+item+'/'+envconfigoption+'/'+args.appname+'_'+env+'.tf', 'w') as file: file.write(data) else: print("ERROR: No appname/compassid specified") if __name__ == "__main__": main('')