Skip to content

Instantly share code, notes, and snippets.

@mirzawaqasahmed
Last active December 31, 2021 16:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mirzawaqasahmed/674abdb307906ac25e592614383d2957 to your computer and use it in GitHub Desktop.
Save mirzawaqasahmed/674abdb307906ac25e592614383d2957 to your computer and use it in GitHub Desktop.
import pulumi
import pulumi_aws as aws
from netaddr import IPNetwork
def vpc(name, cidr, **kwargs):
resource = aws.ec2.Vpc(
resource_name=name,
cidr_block=cidr,
enable_classiclink_dns_support=kwargs['dns_support'],
enable_dns_hostnames=kwargs['dns_hostnames'],
assign_generated_ipv6_cidr_block=True,
tags={
"Name": name,
},
)
pulumi.export(f"vpc_{name}_id", resource.id)
pulumi.export(f"vpc_{name}_arn", resource.arn)
pulumi.export(f"vpc_{name}_v4_cidr", resource.cidr_block)
pulumi.export(f"vpc_{name}_v6_cidr", resource.ipv6_cidr_block)
return resource
def subnet(name, vpc_id, cidr, az_id, ipv6_cidr=None):
resource = aws.ec2.Subnet(
resource_name=name,
vpc_id=vpc_id,
cidr_block=cidr,
availability_zone_id=az_id,
ipv6_cidr_block=ipv6_cidr,
assign_ipv6_address_on_creation=True,
tags={
"Name": name,
},
)
pulumi.export(f"subnet_{name}_id", resource.id)
pulumi.export(f"subnet_{name}_arn", resource.arn)
pulumi.export(f"subnet_{name}_v4_cidr", resource.cidr_block)
pulumi.export(f"subnet_{name}_v6_cidr", resource.ipv6_cidr_block)
pulumi.export(f"subnet_{name}_az", resource.availability_zone)
return resource
def igw(name, vpc_id, opts=None):
resource = aws.ec2.InternetGateway(
resource_name=name,
vpc_id=vpc_id,
tags={
"Name": name
},
opts=opts,
)
pulumi.export(f"igw_{name}_id", resource.id)
pulumi.export(f"igw_{name}_arn", resource.arn)
pulumi.export(f"igw_{name}_vpc_id", resource.vpc_id)
return resource
def route_table(name, vpc_id, routes, opts=None):
resource = aws.ec2.RouteTable(
resource_name=name,
vpc_id=vpc_id,
routes=routes,
tags={
"Name": name,
})
return resource
def route_table_assoc(name, subnet_id, rt_id, opts=None):
resource = aws.ec2.RouteTableAssociation(
resource_name=name,
subnet_id=subnet_id,
route_table_id=rt_id)
return resource
def _get_ipv4_subnets_of(cidr, prefix):
ipv4_network = IPNetwork(cidr)
return ipv4_network.subnet(prefix)
def _get_ipv6_subnets_of(cidr,prefix):
ipv6_network = IPNetwork(cidr)
return ipv6_network.subnet(prefix)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment