Skip to content
Snippets Groups Projects
Select Git revision
  • c01a2c7aa67046a0f5f2cb1f92b265a6e0f066ca
  • master default
  • y3
  • y2
  • y1
5 results

terraformUtils.py

Blame
  • terraformUtils.py 12.66 KiB
    from jinja2 import Template, Environment, FileSystemLoader
    import re
    from aws import *
    
    def awsvm(parametri):
        finalString = ""
        jinjaTemplate = Template(open("VM-templates/AWStemplateVM.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'vm':'aws_ami',
                        'id': '1', 
                        'id': 'vm1', 
                        'os': 'ubuntu', 
                        'executable_users':["self"], 
                        'mostrecent': 'true', 
                        'name_regex': "^myami-\\d{3}", 
                        'owners': ["self"], 
                        'type':None, 
                        'cpu':'2', 
                        'ram':'2', 
                        'filter': [{'name': 'name', 'values':["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]}, 
                                    {'name': 'virtualization-type', 'values': ["hvm"]}]
                    }
            if 'vm' in parameter:
                my_dict['vm'] = parameter['vm']
            if 'id' in parameter:
                my_dict['id'] = parameter['id']
            if 'name' in parameter:
                my_dict['name'] = parameter['name']
            if 'os' in parameter:
                my_dict['name_regex'] = parameter['os']+"*"
            if 'executable_users'in parameter:
                my_dict['executable_users'] = parameter['executable_users']
            if 'mostrecent' in parameter:
                my_dict['mostrecent'] = parameter['mostrecent']
            if 'name_regex' in parameter:
                my_dict['name_regex'] = parameter['name_regex']
            if 'owners' in parameter:
                my_dict['owners'] = parameter['owners']
            if 'filter' in parameter:
                my_dict['filter'] = parametri['filter']
            if 'cpu' in parameter:
                my_dict['cpu'] = parameter['cpu']
            if 'ram' in parameter:
                my_dict['ram'] = parameter['ram']
            if 'type' in parameter:
                my_dict['type'] = parameter['type']
                my_dict['instance_type'] = vmcatalog1(my_dict['cpu'], my_dict['ram'], my_dict['sigla'])
            if my_dict['type'] is None:
                my_dict['instance_type'] = vmcatalog(my_dict['cpu'], my_dict['ram'])
            if 'instance_type' in parameter:
                my_dict['instance_type'] = parameter['instance_type']
            tm = Template("filter {\n   name   = \"{{ name }}\"\n   values = {{ values }}\n  }")
            string = ''
            render = jinjaTemplate.render(my_dict, filters=string)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
    
        create_file = open("Output-code/outputvm.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def gcpvm(parametri):
        finalString = ""
        jinjaTemplate = Template(open("VM-templates/GCPtemplateVM.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'default': 'default', 'name': 'test', 'machine_type': 'e2-medium', 'zone': 'us-central1-a'}
            if 'default' in parameter:
                my_dict['default'] = parameter['default']
            if 'name' in parameter:
                my_dict['name'] = parameter['name']
            if 'machine_type' in parameter:
                my_dict['machine_type'] = parameter['machine_type']
            if 'zone' in parameter:
               my_dict['zone'] = parameter['zone']
            render = jinjaTemplate.render(my_dict)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
            
        create_file = open("Output-code/outputvm.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def azurevm(parametri):
        finalString = ""
        jinjaTemplate = Template(open("VM-templates/AZUREtemplateVM.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'source': "hashicorp/azurerm", 'version': "~>2.0", 'name': "<resource_group_name>", 'location': "<location>"}
            if 'source' in parameter:
                my_dict['source'] = parameter['source']
            if 'version' in parameter:
                my_dict['version'] = parameter['version']
            if 'name' in parameter:
                my_dict['name'] = parameter['name']
            if 'location' in parameter:
                my_dict['location'] = parameter['location']
            render = jinjaTemplate.render(my_dict)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
            
        create_file = open("Output-code/outputvm.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def networkaws(parametri):
        finalString = ""
        jinjaTemplate = Template(open("Network-templates/AWStemplateNetwork.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'subname':'subname', 'vpcname': 'vpcname', 'subnet_cidrblock':'subnet_cidrblock', 'vpc_cidr': 'vpc_cidr'}
            if 'subnet_cidrblock' in parameter:
                my_dict['subnet_cidrblock'] = parameter['subnet_cidrblock']
            if 'vpc_cidr' in parameter:
                my_dict['vpc_cidr'] = parameter['vpc_cidr']
            if 'subnetname' in parameter:
                my_dict['subnetname'] = parameter['subnetname']
            if 'vpcname' in parameter:
                my_dict['vpcname'] = parameter['vpcname']
            render = jinjaTemplate.render(my_dict)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
    
        create_file = open("Output-code/outputNetwork.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def networkg(parametri):
        finalString = ""
        jinjaTemplate = Template(open("Network-templates/GCPtemplateNetwork.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'network':'terraform-network', 'subnetwork': 'terraform-subnetwork'}
            if 'network' in parameter:
                my_dict['network'] = parameter['network']
            if 'subnetwork' in parameter:
                my_dict['subnetwork'] = parameter['subnetwork']
            render = jinjaTemplate.render(my_dict)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
            
        create_file = open("Output-code/outputNetwork.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def networkaz(parametri):
        finalString = ""
        jinjaTemplate = Template(open("Network-templates/AZUREtemplateNetwork.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'name':'my-resources', 'subnet_names': ["subnet1", "subnet2", "subnet3"]}
            if 'name' in parameter:
                my_dict['name'] = parameter['name']
            if 'subnet_names' in parameter:
                my_dict['subnet_names'] = parameter['subnet_names']
            tm = Template("\"{{ name }}\" : [\"Microsoft.Sql\"]")
            string = ''
            i = len(my_dict['subnet_names'])
            for elem in my_dict['subnet_names']:
                rend = tm.render(name = elem)
                string = string+rend
                i = i-1
                if i>0:
                    string = string+",\n    "
            render = jinjaTemplate.render(my_dict, endpoints=string)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
    
        create_file = open("Output-code/outputNetwork.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def awsdb(parametri):
        finalString = ""
        jinjaTemplate = Template(open("DB-templates/AWStemplateDB.tpl", "r").read())
        for parameter in parametri: 
            my_dict = {'identifier':'education', 'instance':'db.t3.micro', 'storage':'5', 'engine':'postgres', 'version':'13.1', 'username': 'edu', 'password':'var.db_password', 'subnet': 'aws_db_subnet_group.education.name', 'security': '[aws_security_group.rds.id]', 'parameter': 'aws_db_parameter_group.education.name', 'accessible': 'true', 'skip': 'true'}
            if 'identifier' in parameter:
                my_dict['identifier'] = parameter['identifier']
            if 'instance' in parameter:
                my_dict['instance'] = parameter['instance']
            if 'storage' in parameter:
                my_dict['storage'] = parameter['storage']
            if 'engine' in parameter:
                my_dict['engine'] = parameter['engine']
            if 'version' in parameter:
                my_dict['version'] = parameter['version']
            if 'username' in parameter:
                my_dict['username'] = parameter['username']
            if 'password' in parameter:
                my_dict['password'] = parameter['password']
            if 'subnet' in parameter:
                my_dict['subnet'] = parameter['subnet']
            if 'security' in parameter:
                my_dict['security'] = parameter['security']
            if 'parameter' in parameter:
                my_dict['parameter'] = parameter['parameter']
            if 'accessible' in parameter:
                my_dict['accessible'] = parameter['accessible']
            if 'skip' in parameter:
                my_dict['skip'] = parameter['skip']
            render = jinjaTemplate.render(my_dict)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
            
        create_file = open("Output-code/outputdb.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def azuredb(parametri):
        finalString = ""
        jinjaTemplate = Template(open("DB-templates/AZUREtemplateDB.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'name':'sqldbtf01', 'group_name':'${azurerm_resource_group.test2.name}', 'location':'North Central US', 'server_name':'${azurerm_sql_server.test2.name}', 'state':'Enabled', 'email':'["dbgrl93@gmail.com"]', 'days':'30', 'access_key':'${azurerm_storage_account.test2sa.primary_access_key}', 'endpoint':'${azurerm_storage_account.test2sa.primary_blob_endpoint}', 'default':'Enabled'}
            if 'name' in parameter:
                my_dict['name'] = parameter['name']
            if 'group_name' in parameter:
                my_dict['group_name'] = parameter['group_name']
            if 'location' in parameter:
                my_dict['location'] = parameter['location']
            if 'engine' in parameter:
                my_dict['server_name'] = parameter['server_name']
            if 'version' in parameter:
                my_dict['server_name'] = parameter['server_name']
            if 'state' in parameter:
                my_dict['state'] = parameter['state']
            if 'email' in parameter:
                my_dict['email'] = parameter['email']
            if 'days' in parameter:
                my_dict['days'] = parameter['days']
            if 'access_key' in parameter:
                my_dict['access_key'] = parameter['access_key']
            if 'endpoint' in parameter:
                my_dict['endpoint'] = parameter['endpoint']
            if 'default' in parameter:
                my_dict['default'] = parameter['v']
            render = jinjaTemplate.render(my_dict)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
            
        create_file = open("Output-code/outputdb.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def googlesql(parametri):
        finalString = ""
        jinjaTemplate = Template(open("DB-templates/GCPtemplateDB.tpl", "r").read())
        for parameter in parametri:
            my_dict = {'name':'my-database', 'instance':'google_sql_database_instance.instance.name', 'instance_name':'my-database-instance','region':'us-central1', 'tier':'db-f1-micro', 'deletion_protection':'true'}
            if 'name' in parameter:
                my_dict['name'] = parameter['name']
            if 'instance' in parameter:
                my_dict['instance'] = parameter['instance']
            if 'instance_name' in parameter:
                my_dict['instance_name'] = parameter['instance_name']
            if 'region' in parameter:
                my_dict['region'] = parameter['region']
            if 'tier' in parameter:
                my_dict['tier'] = parameter['tier']
            if 'deletion_protection' in parameter:
                my_dict['deletion_protection'] = parameter['deletion_protection']
            render = jinjaTemplate.render(my_dict)
            render = re.sub("'", "\"", render)
            finalString = finalString+render+"\n"
            
        create_file = open("Output-code/outputdb.tf", "w")
        create_file.write(finalString)
        create_file.close()
    
    def postgresql(parametri):
        jinjaTemplate = Template(open("DB-templates/AWStemplateDB.tpl", "r").read())
        my_dict = {'name': 'my_db', 'owner': 'my_role', 'template': 'template0', 'lc_collate':'C', 'connection_limit':-1, 'allow_connections': 'true'}
        if 'name' in parametri:
            my_dict['name'] = parametri['name']
        if 'owner' in parametri:
            my_dict['owner'] = parametri['owner']
        if 'template' in parametri:
            my_dict['template'] = parametri['template']
        if 'lc_collate' in parametri:
            my_dict['lc_collate'] = parametri['lc_collate']
        if 'connection_limit' in parametri:
            my_dict['connection_limit'] = parametri['connection_limit']
        if 'allow_connections' in parametri:
            my_dict['allow_connections'] = parametri['allow_connections']
        render = jinjaTemplate.render(my_dict)
        render = re.sub("'", "\"", render)
        create_file = open("Output-code/outputdb.tf", "w")
        create_file.write(render)
        create_file.close()