def ts_amazon_aws(version='=< 2.30', AWS_REGION_LIST=['us-east-1'], **kwargs): ts_local = Terrascript() aws_access_key = ts_local.add(variable('aws_access_key')) aws_secret_key = ts_local.add(variable('aws_secret_key')) aws_region = ts_local.add(variable('aws_region', default='us-east-1')) default_params = dict( version=version, access_key=aws_access_key, secret_key=aws_secret_key, ) default_params.update(kwargs) # Providers aws_providers_map = {} for region in AWS_REGION_LIST: _provider = provider('aws', region=region, alias=region, **default_params) aws_providers_map[region] = ts_local.add(_provider) ts_local.add(provider('aws', region=aws_region, **default_params)) # VPC aws_vpc_map = {} for region in AWS_REGION_LIST: aws_provider = 'aws.{0}'.format(region) vpc_name = 'vpc-{}'.format(region) aws_vpc_map[region] = ts_local.add( aws_vpc(vpc_name, provider=aws_provider)) return ts_local
def test_update_override_value(): ts = Terrascript() ts2 = Terrascript() ts.add(variable('access_key')) ts.add(variable('secret_key')) var_region = ts.add(variable('region', default='us-east-1')) var_region2 = ts2.add(variable('region', default='ca-central-1')) assert var_region._kwargs['default'] != var_region2._kwargs['default'] # ts2 override variable "region" in ts ts.update(ts2) assert isinstance(ts, Terrascript) assert isinstance(ts2, Terrascript) ts_variables = ts.config.get('variable', {}) assert len(ts_variables.items()) == 3 # ensure that only three ts_var_region = ts_variables.get('region', {}) assert ts_var_region.get('default', '') == var_region2._kwargs.get('default') assert ts.validate(delete=False) is True
def test_issue33(): """Issue 33: Suggestion of syntax to terrascript""" ts = Terrascript() var_access_key = ts.add(variable('access_key')) assert isinstance(var_access_key, variable) var_secret_key = ts.add(variable('secret_key')) assert isinstance(var_secret_key, variable) var_region = ts.add(variable('region', default='us-east-1')) assert isinstance(var_region, variable) ts += provider('aws', access_key=var_access_key, secret_key=var_secret_key, region=var_region ) resource_aws_instance = ts.add(aws_instance('example', ami='ami-2757f631', instance_type='t2.micro')) assert isinstance(resource_aws_instance, aws_instance) ts += output('example_public_ip', value=resource_aws_instance.public_ip, description='Public IP of example') assert ts.validate() is True
def create_variables(app_name, app_port, cluster_name): var_file = config.tf_dir + "/variables.tf" ts = Terrascript() var_access_key = variable('aws_access_key', default='') var_secret_key = variable('aws_secret_key', default='') var_region = variable('region', default='eu-west-1') var_ami = variable('ami', default='ami-066826c6a40879d75') var_az_qty = variable('az_qty', default='2') var_cluster_name = variable('ecs_cluster_name', default=cluster_name) var_instance_type = variable('instance_type', default='t2.micro') var_key_name = variable('key_name', default='rep') var_app_port = variable('app_port', default=app_port) var_app_name = variable('app_name', default=app_name) ts += var_access_key ts += var_secret_key ts += var_region ts += var_ami ts += var_az_qty ts += var_cluster_name ts += var_instance_type ts += var_key_name ts += var_app_port ts += var_app_name print ("Creating file: " + var_file) with open(var_file, 'w') as tfile: tfile.write(ts.dump())
def ts_cloudflare(version='< 1.9.0', **kwargs): ts_local = Terrascript() cloudflare_email = ts_local.add(variable('cloudflare_email')) cloudflare_token = ts_local.add(variable('cloudflare_token', default='')) default_parms = dict( email=cloudflare_email, token=cloudflare_token, ) default_parms.update(kwargs) ts_local.add(provider('cloudflare', version=version, **default_parms)) return ts_local
def test_update_raise_error(): ts = Terrascript() var_region = variable('region') exception_raised = False try: ts.update(var_region) except TypeError as e: exception_raised = True assert exception_raised is True
def ts_digitalocean(version='>= 1.7, < 1.9', **kwargs): ts_local = Terrascript() do_token = ts_local.add(variable('do_token')) default_parms = dict(token=do_token) default_parms.update(kwargs) ts_local.add(provider('digitalocean', version=version, **default_parms)) return ts_local
def test_update_add_value(): ts = Terrascript() ts2 = Terrascript() var_access_key = ts.add(variable('access_key')) var_secret_key = ts.add(variable('secret_key')) var_region = ts.add(variable('region', default='us-east-1')) ts += provider('aws', access_key=var_access_key, secret_key=var_secret_key, region=var_region) resource_aws_instance = ts.add( aws_instance('example', ami='ami-2757f631', instance_type='t2.micro')) resource_aws_instance_2 = ts2.add( aws_instance('example_second', ami='ami-2757f631', instance_type='t2.micro')) assert isinstance(resource_aws_instance, aws_instance) assert isinstance(resource_aws_instance_2, aws_instance) # ts2 add resource "example_second" to ts ts.update(ts2) assert isinstance(ts, Terrascript) assert isinstance(ts2, Terrascript) ts_resources = ts.config.get('resource', {}) assert len(ts_resources.items()) == 1 ts_aws_instances = ts_resources.get('aws_instance') assert len(ts_aws_instances.items()) == 2 assert resource_aws_instance._name in ts_aws_instances.keys() assert resource_aws_instance_2._name in ts_aws_instances.keys() assert ts.validate(delete=False) is True