AWS Terraform: Create same number of subnets in private/public AZ as number of Availability Zones

  Kiến thức lập trình

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

Theme wordpress giá rẻ Theme wordpress giá rẻ Thiết kế website

LEAVE A COMMENT