示例#1
0
def get_availability_zones():
    if availability_zones:
        return availability_zones
    current_zones = aws.get_availability_zones().names
    if number_of_availability_zones:
        return current_zones[:number_of_availability_zones]
    return current_zones
示例#2
0
    def __init__(self,
                 name: str,
                 cidr: str,
                 subnets: int = 2,
                 prefix: int = 19,
                 tags: dict = None,
                 opts: pulumi.ResourceOptions = None):
        super().__init__('ComponentResource:VpcWithPublicSubnets', name, None,
                         opts)

        self.vpc_name = name
        self.cidr = cidr
        self.subnets = subnets
        self.prefix = prefix
        self.tags = {} if tags is None else tags

        self.availability_zones = aws.get_availability_zones().names

        self.provision_resources()

        # signal to Pulumi that we are done creating resources
        self.register_outputs({})
示例#3
0
                                  tags={
                                      "Name": "pulumi-vpc-ig",
                                  })
eks_route_table = aws.ec2.RouteTable("eksRouteTable",
                                     vpc_id=eks_vpc.id,
                                     routes=[
                                         aws.ec2.RouteTableRouteArgs(
                                             cidr_block="0.0.0.0/0",
                                             gateway_id=eks_igw.id,
                                         )
                                     ],
                                     tags={
                                         "Name": "pulumi-vpc-rt",
                                     })
# Subnets, one for each AZ in a region
zones = aws.get_availability_zones()
vpc_subnet = []
for range in [{"key": k, "value": v} for [k, v] in enumerate(zones.names)]:
    vpc_subnet.append(
        aws.ec2.Subnet(f"vpcSubnet-{range['key']}",
                       assign_ipv6_address_on_creation=False,
                       vpc_id=eks_vpc.id,
                       map_public_ip_on_launch=True,
                       cidr_block=f"10.100.{range['key']}.0/24",
                       availability_zone=range["value"],
                       tags={
                           "Name": f"pulumi-sn-{range['value']}",
                       }))
rta = []
for range in [{"key": k, "value": v} for [k, v] in enumerate(zones.names)]:
    rta.append(
示例#4
0
from jen20_pulumi_aws_vpc import Vpc, VpcArgs
from pulumi import export
from pulumi_aws import get_availability_zones

zones = get_availability_zones(state="available")

vpc = Vpc(
    "example-vpc",
    VpcArgs(
        description="Example VPC",
        base_tags={
            "Project": "Python Example VPC",
        },
        base_cidr="192.168.0.0/16",
        availability_zone_names=zones.names,
        zone_name="example.local",
        create_s3_endpoint=True,
        create_dynamodb_endpoint=True,
    ))
vpc.enableFlowLoggingToCloudWatchLogs("ALL")

export("vpcId", vpc.vpc.id)
export("publicSubnetIds", [subnet.id for subnet in vpc.public_subnets])
export("privateSubnetIds", [subnet.id for subnet in vpc.private_subnets])
示例#5
0
 def _get_az(self, index):
     zones = pulumi_aws.get_availability_zones()
     return zones.zone_ids[index]
示例#6
0
import pulumi
import pulumi_aws as aws

config = pulumi.Config()

zones = pulumi.Output.from_input(aws.get_availability_zones())
zone_names = zones.apply(lambda zs: zs.names)

print(f"vpc_cidr: {config.require('vpc_cidr')}")
vpc_cidr = config.require('vpc_cidr')

print(f"flavour_master: {config.require('flavour_master')}")
flavour_master = config.require('flavour_master')

print(f"flavour_server: {config.require('flavour_server')}")
flavour_server = config.require('flavour_server')

print(f"flavour_jumpbox: {config.require('flavour_jumpbox')}")
flavour_jumpbox = config.require('flavour_jumpbox')

print(f"flavour_avi: {config.require('flavour_avi')}")
flavour_avi = config.require('flavour_avi')

print(f"ami_ubuntu: {config.require('ami_ubuntu')}")
ami_ubuntu = config.require('ami_ubuntu')

print(f"vol_size_ubuntu: {config.require('vol_size_ubuntu')}")
vol_size_ubuntu = config.require('vol_size_ubuntu')

print(f"vol_size_avi: {config.require('vol_size_avi')}")
vol_size_avi = config.require('vol_size_avi')
示例#7
0
#!/usr/bin/env python

import yaml
import json
import shutil
import pulumi
import pulumi_aws as aws

# Read yaml vars
with open("../data.yaml", 'r') as stream:
    data = yaml.safe_load(stream)
_vars = data["pulumi"]
_iam = data["iam"]
# VPC
main = aws.ec2.Vpc("main", cidr_block=_vars["vpc"])
azs = aws.get_availability_zones(state="available")
igw = aws.ec2.InternetGateway("gw", vpc_id=main.id)
public_route = aws.ec2.RouteTable("publicRouteTable",
                                  vpc_id=main.id,
                                  routes=[
                                      aws.ec2.RouteTableRouteArgs(
                                          cidr_block="0.0.0.0/0",
                                          gateway_id=igw.id,
                                      )
                                  ])
public_subnets = []
for i, s in enumerate(_vars["subnets"]["public"]):
    subnet = aws.ec2.Subnet("public-{}".format(s),
                            vpc_id=main.id,
                            cidr_block=s,
                            availability_zone=azs.names[i])
示例#8
0
import pulumi
import pulumi_aws as aws

example = aws.get_availability_zones(all_availability_zones=True,
                                     filters=[{
                                         "name":
                                         "opt-in-status",
                                         "values": [
                                             "not-opted-in",
                                             "opted-in",
                                         ],
                                     }])
示例#9
0
def get_aws_az():
    zones = aws.get_availability_zones()
    return zones.names[:
                       3]  # Returns availability zones 0, 1, 2.  So total of 3 az's.
import pulumi_aws

availableZones = pulumi_aws.get_availability_zones(state="available")

shared_vpc = pulumi_aws.ec2.Vpc(
    resource_name='pulumi-aws-example',
    assign_generated_ipv6_cidr_block=True,
    cidr_block="10.0.0.0/16",
    enable_dns_hostnames=True,enable_dns_support=True)

subnet_gateway = pulumi_aws.ec2.Subnet(
    resource_name='pulumi-aws-example_gateway',
    availability_zone=availableZones.names[0],
    cidr_block="10.0.10.0/24",
    vpc_id=shared_vpc.id)

subnet_application = pulumi_aws.ec2.Subnet(
    resource_name='pulumi-aws-example_application',
    availability_zone=availableZones.names[0],
    cidr_block="10.0.11.0/24",
    vpc_id=shared_vpc.id)

subnet_database = pulumi_aws.ec2.Subnet(
    resource_name='pulumi-aws-example_database',
    availability_zone=availableZones.names[0],
    cidr_block="10.0.12.0/24",
    vpc_id=shared_vpc.id)

subnet_database2 = pulumi_aws.ec2.Subnet(
    resource_name='pulumi-aws-example_database_2',
    availability_zone=availableZones.names[1],
示例#11
0
# load env variables
load_dotenv()

# Provider for testing
aws_config_testing = aws.Provider('aws_testing',
                                  region='us-west-2',
                                  profile='testing_profile')

##### creating custom aws provider

aws_config = aws.Provider('aws',
                          region=config.require('aws_region'),
                          profile=config.require('aws_profile'))

Azs_Availables = aws.get_availability_zones(
    state="available", opts=pulumi.ResourceOptions(provider=aws_config))

# Networking creation
cidr_public = ['10.11.1.0/24', '10.11.2.0/24']
cidr_private = ['10.11.100.0/24', '10.11.101.0/24']

vpc_microservice = aws_vpc.vpc('techinsiders', '10.11.0.0/16', cidr_public,
                               cidr_private, Azs_Availables, aws_config)
net_info = vpc_microservice.create_basic_networking()

# Security group
rule_alb_ingress = [
    {
        'description': 'allow_https',
        'fromPort': 443,
        'toPort': 443,
示例#12
0
    def __init__(self, name: str, args: VpcArgs, opts: ResourceOptions = None):

        super().__init__('custom:resource:VPC', name, {}, opts)

        vpc_name = name + '-vpc'
        self.vpc = ec2.Vpc(vpc_name,
                           cidr_block=args.cidr_block,
                           instance_tenancy=args.instance_tenancy,
                           enable_dns_hostnames=args.enable_dns_hostnames,
                           enable_dns_support=args.enable_dns_support,
                           tags={'Name': vpc_name},
                           opts=ResourceOptions(parent=self))

        igw_name = name + '-igw'
        self.igw = ec2.InternetGateway(igw_name,
                                       vpc_id=self.vpc.id,
                                       tags={'Name': igw_name},
                                       opts=ResourceOptions(parent=self))

        rt_name = name + '-rt'
        self.route_table = ec2.RouteTable(rt_name,
                                          vpc_id=self.vpc.id,
                                          routes=[
                                              ec2.RouteTableRouteArgs(
                                                  cidr_block='0.0.0.0/0',
                                                  gateway_id=self.igw.id,
                                              )
                                          ],
                                          tags={'Name': rt_name},
                                          opts=ResourceOptions(parent=self))

        # Subnets, at least across two zones.
        all_zones = get_availability_zones()
        # limiting to 2 zones for speed and to meet minimal requirements.
        zone_names = [all_zones.names[0], all_zones.names[1]]
        self.subnets = []
        subnet_name_base = f'{name}-subnet'
        for zone in zone_names:
            vpc_subnet = ec2.Subnet(
                f'{subnet_name_base}-{zone}',
                assign_ipv6_address_on_creation=False,
                vpc_id=self.vpc.id,
                map_public_ip_on_launch=True,
                cidr_block=f'10.100.{len(self.subnets)}.0/24',
                availability_zone=zone,
                tags={
                    'Name': f'{subnet_name_base}-{zone}',
                },
                opts=ResourceOptions(parent=self))
            ec2.RouteTableAssociation(f'vpc-route-table-assoc-{zone}',
                                      route_table_id=self.route_table.id,
                                      subnet_id=vpc_subnet.id,
                                      opts=ResourceOptions(parent=self))
            self.subnets.append(vpc_subnet)

        # Security Groups
        rds_sg_name = f'{name}-rds-sg'
        self.rds_security_group = ec2.SecurityGroup(
            rds_sg_name,
            vpc_id=self.vpc.id,
            description='Allow client access.',
            tags={'Name': rds_sg_name},
            ingress=[
                ec2.SecurityGroupIngressArgs(cidr_blocks=['0.0.0.0/0'],
                                             from_port=3306,
                                             to_port=3306,
                                             protocol='tcp',
                                             description='Allow rds access.'),
            ],
            egress=[
                ec2.SecurityGroupEgressArgs(
                    protocol='-1',
                    from_port=0,
                    to_port=0,
                    cidr_blocks=['0.0.0.0/0'],
                )
            ],
            opts=ResourceOptions(parent=self))

        fe_sg_name = f'{name}-fe-sg'
        self.fe_security_group = ec2.SecurityGroup(
            fe_sg_name,
            vpc_id=self.vpc.id,
            description='Allow all HTTP(s) traffic.',
            tags={'Name': fe_sg_name},
            ingress=[
                ec2.SecurityGroupIngressArgs(cidr_blocks=['0.0.0.0/0'],
                                             from_port=443,
                                             to_port=443,
                                             protocol='tcp',
                                             description='Allow https.'),
                ec2.SecurityGroupIngressArgs(cidr_blocks=['0.0.0.0/0'],
                                             from_port=80,
                                             to_port=80,
                                             protocol='tcp',
                                             description='Allow http access'),
            ],
            egress=[
                ec2.SecurityGroupEgressArgs(
                    protocol='-1',
                    from_port=0,
                    to_port=0,
                    cidr_blocks=['0.0.0.0/0'],
                )
            ],
            opts=ResourceOptions(parent=self))

        self.register_outputs({})
示例#13
0
def get_aws_az(index):
    # type: (int) -> str
    zones = pulumi_aws.get_availability_zones()
    return zones.names[index]
示例#14
0
def get_aws_az(amount):
    zones = get_availability_zones()
    return zones.names[:amount]
示例#15
0
vpc = ec2.Vpc('test',
              cidr_block="10.11.0.0/16",
              enable_dns_hostnames=True,
              enable_dns_support=True)

internet_gateway = ec2.InternetGateway('test', vpc_id=vpc.id)

route_table = ec2.RouteTable('test',
                             vpc_id=vpc.id,
                             routes=[
                                 ec2.RouteTableRouteArgs(
                                     cidr_block="0.0.0.0/0",
                                     gateway_id=internet_gateway.id)
                             ])

zones = Output.from_input(get_availability_zones())
zone_names = zones.apply(lambda zs: zs.names)

subnet0 = ec2.Subnet(
    "test0",
    vpc_id=vpc.id,
    availability_zone=zone_names.apply(lambda names: names[0]),
    cidr_block="10.11.0.0/24",
    map_public_ip_on_launch=True)

subnet1 = ec2.Subnet(
    "test1",
    vpc_id=vpc.id,
    availability_zone=zone_names.apply(lambda names: names[1]),
    cidr_block="10.11.1.0/24",
    map_public_ip_on_launch=True)
示例#16
0
文件: __main__.py 项目: jinwoov/IaC
## what to listen for
listener = aws.lb.Listener("listener",
                           load_balancer_arn=lb.arn,
                           port=80,
                           default_actions=[{
                               "type":
                               "forward",
                               "target_group_arn":
                               target_group.arn
                           }])

ips = []
hostnames = []

for az in aws.get_availability_zones().names:
    server = aws.ec2.Instance(f"web-server-${az}",
                              instance_type="t2.micro",
                              security_groups=[group.name],
                              ami=ami.id,
                              availability_zone=az,
                              user_data="""#!/bin/bash
        echo "Hello, World! -- from {}" > index.html
        nohup python -m SimpleHTTPServer 80 &
        """.format(az),
                              tags={"Name": "web-server"})
    ips.append(server.public_ip)
    hostnames.append(server.public_dns)

    attachment = aws.lb.TargetGroupAttachment(
        f'web-server-{az}',
示例#17
0
igw = ec2.InternetGateway('vpc-ig',
                          vpc_id=vpc.id,
                          tags={'Name': 'pulumi-vpc-ig'})

eks_route_table = ec2.RouteTable('vpc-route-table',
                                 vpc_id=vpc.id,
                                 routes=[{
                                     'cidr_block': '0.0.0.0/0',
                                     'gateway_id': igw.id
                                 }],
                                 tags={'Name': 'pulumi-vpc-rt'})

## Subnets, one for each AZ in a region

zones = get_availability_zones()
subnet_ids = []

for zone in zones.names:
    vpc_subnet = ec2.Subnet(f'vpc-subnet-{zone}',
                            assign_ipv6_address_on_creation=False,
                            vpc_id=vpc.id,
                            map_public_ip_on_launch=True,
                            cidr_block=f'10.100.{len(subnet_ids)}.0/24',
                            availability_zone=zone,
                            tags={'Name': f'pulumi-sn-{zone}'})
    ec2.RouteTableAssociation(
        f'vpc-route-table-assoc-{zone}',
        route_table_id=eks_route_table.id,
        subnet_id=vpc_subnet.id,
    )