def test_get_tag(): tags = [{'Key': 'aws:cloudformation:stack-id', 'Value': 'arn:aws:cf:eu-west-1:123:stack/test'}, {'Key': 'Name', 'Value': 'test-123'}, {'Key': 'StackVersion', 'Value': '123'}] assert get_tag(tags, 'StackVersion') == '123' assert get_tag(tags, 'aws:cloudformation:stack-id') == 'arn:aws:cf:eu-west-1:123:stack/test' assert get_tag(tags, 'notfound') is None
def component_subnet_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) vpc_id = configuration.get('VpcId', account_info.VpcID) availability_zones = configuration.get('AvailabilityZones') public_only = configuration.get('PublicOnly') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] all_subnets = [] for subnet in ec2.subnets.filter(Filters=[{'Name': 'vpc-id', 'Values': [vpc_id]}]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue all_subnets.append(subnet.id) if public_only: if 'dmz' in name: lb_subnets.append(subnet.id) lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) elif 'nat' in name: # ignore creating listeners in NAT gateway subnets pass else: server_subnets.append(subnet.id) if not lb_subnets: if public_only: # assume default AWS VPC setup with all subnets being public lb_subnets = all_subnets lb_internal_subnets = all_subnets server_subnets = all_subnets else: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][args.region] = lb_internal_subnets component_configuration(definition, configuration, args, info, force, account_info) return definition
def component_stups_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) availability_zones = configuration.get('AvailabilityZones') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] for subnet in ec2.subnets.filter(Filters=[{ 'Name': 'vpc-id', 'Values': [account_info.VpcID] }]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: server_subnets.append(subnet.id) if not lb_subnets: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][ args.region] = lb_internal_subnets most_recent_image = find_taupage_image(args.region) configuration = ensure_keys(configuration, "Images", 'LatestTaupageImage', args.region) configuration["Images"]['LatestTaupageImage'][ args.region] = most_recent_image.id component_configuration(definition, configuration, args, info, force, account_info) return definition
def component_stups_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) vpc_id = configuration.get('VpcId', account_info.VpcID) availability_zones = configuration.get('AvailabilityZones') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] for subnet in ec2.subnets.filter(Filters=[{'Name': 'vpc-id', 'Values': [vpc_id]}]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: server_subnets.append(subnet.id) if not lb_subnets: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][args.region] = lb_internal_subnets most_recent_image = find_taupage_image(args.region) configuration = ensure_keys(configuration, "Images", 'LatestTaupageImage', args.region) configuration["Images"]['LatestTaupageImage'][args.region] = most_recent_image.id component_configuration(definition, configuration, args, info, force, account_info) return definition
def component_subnet_auto_configuration(definition, configuration, args, info, force, account_info): ec2 = boto3.resource('ec2', args.region) vpc_id = configuration.get('VpcId', account_info.VpcID) availability_zones = configuration.get('AvailabilityZones') public_only = configuration.get('PublicOnly') server_subnets = [] lb_subnets = [] lb_internal_subnets = [] all_subnets = [] for subnet in ec2.subnets.filter(Filters=[{ 'Name': 'vpc-id', 'Values': [vpc_id] }]): name = get_tag(subnet.tags, 'Name', '') if availability_zones and subnet.availability_zone not in availability_zones: # skip subnet as it's not in one of the given AZs continue all_subnets.append(subnet.id) if public_only: if 'dmz' in name: lb_subnets.append(subnet.id) lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) else: if 'dmz' in name: lb_subnets.append(subnet.id) elif 'internal' in name: lb_internal_subnets.append(subnet.id) server_subnets.append(subnet.id) elif 'nat' in name: # ignore creating listeners in NAT gateway subnets pass else: server_subnets.append(subnet.id) if not lb_subnets: if public_only: # assume default AWS VPC setup with all subnets being public lb_subnets = all_subnets lb_internal_subnets = all_subnets server_subnets = all_subnets else: # no DMZ subnets were found, just use the same set for both LB and instances lb_subnets = server_subnets configuration = ensure_keys(configuration, "ServerSubnets", args.region) configuration["ServerSubnets"][args.region] = server_subnets configuration = ensure_keys(configuration, "LoadBalancerSubnets", args.region) configuration["LoadBalancerSubnets"][args.region] = lb_subnets configuration = ensure_keys(configuration, "LoadBalancerInternalSubnets", args.region) configuration["LoadBalancerInternalSubnets"][ args.region] = lb_internal_subnets component_configuration(definition, configuration, args, info, force, account_info) return definition