1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- ## VPC
- resource "aws_vpc" "infra_vpc" {
- cidr_block = var.cidr_block
- enable_dns_support = var.enable_dns_support
- enable_dns_hostnames = var.enable_dns_hostnames
- tags = var.tags
- }
- ## Public Subnet for ALB
- resource "aws_subnet" "infra_public_subnet" {
- count = length(var.public_subnet_az)
- vpc_id = aws_vpc.infra_vpc.id
- availability_zone = var.public_subnet_az[count.index]
- cidr_block = var.public_subnet_cidr[count.index]
- tags = var.tags
- }
- ## Private Subnet for EC2
- resource "aws_subnet" "infra_private_subnet" {
- vpc_id = aws_vpc.infra_vpc.id
- availability_zone = var.private_subnet_az
- cidr_block = var.private_subnet_cidr
- tags = var.tags
- }
- ## Internet Gateway
- resource "aws_internet_gateway" "infra_internet_gateway" {
- vpc_id = aws_vpc.infra_vpc.id
- tags = var.tags
- }
- ## Route Table for Public Subnet and attach Internet Gateway to it
- resource "aws_route_table" "infra_public_rt" {
- vpc_id = aws_vpc.infra_vpc.id
- route {
- cidr_block = "0.0.0.0/0"
- gateway_id = aws_internet_gateway.infra_internet_gateway.id
- }
- tags = var.tags
- }
- ## Route Table Public Subnet Association
- resource "aws_route_table_association" "infra_public_subnet_rt_association" {
- count = length(var.public_subnet_az)
- subnet_id = aws_subnet.infra_public_subnet[count.index].id
- route_table_id = aws_route_table.infra_public_rt.id
- }
- ## Elastic IP for NAT Gateway
- resource "aws_eip" "infra_nat_gateway_eip" {
- domain = "vpc"
- tags = var.tags
- }
- ## NAT Gateway
- resource "aws_nat_gateway" "infra_nat_gateway" {
- allocation_id = aws_eip.infra_nat_gateway_eip.id
- subnet_id = aws_subnet.infra_public_subnet[0].id
- tags = var.tags
- depends_on = [
- aws_internet_gateway.infra_internet_gateway
- ]
- }
- ## Route Table for Private Subnet and attach NAT Gateway to it
- resource "aws_route_table" "infra_private_rt" {
- vpc_id = aws_vpc.infra_vpc.id
- route {
- cidr_block = "0.0.0.0/0"
- nat_gateway_id = aws_nat_gateway.infra_nat_gateway.id
- }
- tags = var.tags
- }
- ## Route Table Private Subnet Association
- resource "aws_route_table_association" "infra_private_subnet_rt_association" {
- subnet_id = aws_subnet.infra_private_subnet.id
- route_table_id = aws_route_table.infra_private_rt.id
- }
|