I’m trying to create a VPC in AWS us-west-1. Now that region has only 2 AZs available, but my code creates 3 subnets. 2 subnets in same zone
and third subnet in second AZ.
That causes a problem while creating a external load balancer.
So how do I make sure my code creates only same number of subnets as the number of AZs available ?
My Current code extract is like this.
locals {
all_subnet_cidrs = substr(var.vpc_cidr, -2, 2) == "20" ? cidrsubnets(var.vpc_cidr, 2, 2, 2, 4, 4, 4, 6, 6, 6) : substr(var.vpc_cidr, -2, 2) == "19" ? cidrsubnets(var.vpc_cidr, 2, 2, 2, 4, 4, 4, 6, 6, 6) : []
compute = slice(local.all_subnet_cidrs, 0, 3)
data = slice(local.all_subnet_cidrs, 3, 6)
external = slice(local.all_subnet_cidrs, 6, 9)
tags = {
Environment = var.environment
Owner = var.owner
}
az_count = length(data.aws_availability_zones.available.names)
azs = local.az_count >= 2 ? slice(data.aws_availability_zones.available.names, 0, 2) : slice(data.aws_availability_zones.available.names, 0, 3)
}
### VPC MODULE ###
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = var.vpc_name
cidr = var.vpc_cidr
# How many AZ
azs = local.azs
private_subnets = local.compute
database_subnets = local.data
public_subnets = local.external