51 lines
2.6 KiB
Python
51 lines
2.6 KiB
Python
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("<APPNAME>", args.appname)
|
|
data = data.replace("<COMPASSID>", 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("<APPNAME>", args.appname)
|
|
data = data.replace("<COMPASSID>", args.compassid)
|
|
data = data.replace("<APPENV>", 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('') |