|
| 1 | +# AWS Availability Zones |
| 2 | +data "aws_availability_zones" "available_zones" {} |
| 3 | + |
| 4 | +# AWS Public Subnets |
| 5 | +module "aws_public_subnet" { |
| 6 | + source = "./resources" |
| 7 | + create = contains(var.subnet_type, "public") ? 1 : 0 |
| 8 | + prefix = var.prefix |
| 9 | + environment = var.environment |
| 10 | + vpc_id = var.vpc_id |
| 11 | + cidr = var.cidr |
| 12 | + subnet_bits = var.subnet_bits |
| 13 | + subnet_type = "public" |
| 14 | +} |
| 15 | + |
| 16 | +# AWS Private Subnets |
| 17 | +module "aws_private_subnet" { |
| 18 | + source = "./resources" |
| 19 | + create = contains(var.subnet_type, "private") ? 1 : 0 |
| 20 | + prefix = var.prefix |
| 21 | + environment = var.environment |
| 22 | + vpc_id = var.vpc_id |
| 23 | + cidr = var.cidr |
| 24 | + offset = length(data.aws_availability_zones.available_zones.names) |
| 25 | + subnet_bits = var.subnet_bits |
| 26 | + subnet_type = "private" |
| 27 | +} |
| 28 | + |
| 29 | +# AWS Storage Subnets |
| 30 | +module "aws_storage_subnet" { |
| 31 | + source = "./resources" |
| 32 | + create = contains(var.subnet_type, "storage") ? 1 : 0 |
| 33 | + prefix = var.prefix |
| 34 | + environment = var.environment |
| 35 | + cidr = var.cidr |
| 36 | + vpc_id = var.vpc_id |
| 37 | + offset = 2 * length(data.aws_availability_zones.available_zones.names) |
| 38 | + subnet_bits = var.subnet_bits |
| 39 | + subnet_type = "storage" |
| 40 | +} |
| 41 | + |
| 42 | +# AWS Route Tables - Public Route |
| 43 | +resource "aws_route" "public_route" { |
| 44 | + count = contains(var.subnet_type, "public") ? length(data.aws_availability_zones.available_zones.names) : 0 |
| 45 | + route_table_id = module.aws_public_subnet.route_table_ids[count.index] |
| 46 | + destination_cidr_block = "0.0.0.0/0" |
| 47 | + gateway_id = var.aws_internet_gateway_id |
| 48 | +} |
| 49 | + |
| 50 | +# AWS Route Tables - Private Route |
| 51 | +resource "aws_route" "private_route" { |
| 52 | + count = contains(var.subnet_type, "private") ? length(data.aws_availability_zones.available_zones.names) : 0 |
| 53 | + route_table_id = module.aws_private_subnet.route_table_ids[count.index] |
| 54 | + destination_cidr_block = "0.0.0.0/0" |
| 55 | + nat_gateway_id = var.aws_nat_gateway_id[count.index] |
| 56 | +} |
0 commit comments