terraform-aws-access/modules/vpc/main.tf

57 lines
1.3 KiB
HCL

locals {
name = var.name
use = var.use
type = var.type
select = (local.use == "select" ? 1 : 0)
create = (local.use == "create" ? 1 : 0)
ipv6ds = ((local.type == "dualstack" || local.type == "ipv6") ? local.create : 0)
ipv4ds = ((local.type == "dualstack" || local.type == "ipv4") ? local.create : 0)
}
data "aws_vpc" "selected" {
count = local.select
filter {
name = "tag:Name"
values = [local.name]
}
}
resource "aws_vpc" "new" {
count = local.create
cidr_block = "10.0.0.0/16"
assign_generated_ipv6_cidr_block = true
tags = {
Name = local.name
}
}
resource "aws_internet_gateway" "new" {
count = local.create
depends_on = [
aws_vpc.new,
]
vpc_id = aws_vpc.new[0].id
}
resource "aws_route" "public_ipv4" {
count = local.ipv4ds
depends_on = [
aws_internet_gateway.new,
aws_vpc.new,
]
route_table_id = aws_vpc.new[0].default_route_table_id
gateway_id = aws_internet_gateway.new[0].id
destination_cidr_block = "0.0.0.0/0"
}
resource "aws_route" "public_ipv6" {
count = local.ipv6ds
depends_on = [
aws_internet_gateway.new,
aws_vpc.new,
]
route_table_id = aws_vpc.new[0].default_route_table_id
gateway_id = aws_internet_gateway.new[0].id
destination_ipv6_cidr_block = "::/0"
}