Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
# Declare the data source, this gets all AZ available in the region specified
data "aws_availability_zones" "available" {}
#Define the resourses as IGW, NATGW, RT, ACL
resource "aws_internet_gateway" "igw" {
vpc_id = "${aws_vpc.vpc.id}"
tags {
Name = "igw-terraform-lab"
}
}
#Define the Public routing tables, link to the IGW. Note: IGW is per Region and not per AZ, so only one needed.
resource "aws_route_table" "rt-public-a" {
vpc_id = "${aws_vpc.vpc.id}"
tags {
Name = "rt-public-a"
}
route {
cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.igw.id}"
}
}
resource "aws_route_table" "rt-public-b" {
vpc_id = "${aws_vpc.vpc.id}"
tags {
Name = "rt-public-b"
}
route {
cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.igw.id}"
}
}
#Define the NAT GWs to be used by the Private subnets, they will be placed on the Public Subnet. One NAT-GW per AZ.
#First create the EIPs to be attached to the NatGWs
resource "aws_eip" "eip-nat-a" {
vpc = true
}
resource "aws_eip" "eip-nat-b" {
vpc = true
}
resource "aws_nat_gateway" "ngw-a" {
allocation_id = "${aws_eip.eip-nat-a.id}"
subnet_id = "${aws_subnet.net-public-a.id}"
depends_on = ["aws_internet_gateway.igw"]
}
resource "aws_nat_gateway" "ngw-b" {
allocation_id = "${aws_eip.eip-nat-b.id}"
subnet_id = "${aws_subnet.net-public-b.id}"
depends_on = ["aws_internet_gateway.igw"]
}
#Define the private routing tables.
resource "aws_route_table" "rt-private-a" {
vpc_id = "${aws_vpc.vpc.id}"
tags {
Name = "rt-private-a"
}
route {
cidr_block = "0.0.0.0/0"
nat_gateway_id = "${aws_nat_gateway.ngw-a.id}"
}
}
resource "aws_route_table" "rt-private-b" {
vpc_id = "${aws_vpc.vpc.id}"
tags {
Name = "rt-private-b"
}
route {
cidr_block = "0.0.0.0/0"
nat_gateway_id = "${aws_nat_gateway.ngw-b.id}"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.