Multiple Environments

locals {
  environments = {
    dev = {
      cidr               = "10.10.0.0/20"
      azs                = ["us-east-1a", "us-east-1b"]
      single_nat_gateway = true
    }
    staging = {
      cidr               = "10.20.0.0/18"
      azs                = ["us-east-1a", "us-east-1b"]
      single_nat_gateway = true
    }
    prod = {
      cidr               = "10.0.0.0/16"
      azs                = ["us-east-1a", "us-east-1b", "us-east-1c"]
      single_nat_gateway = false
    }
  }
}

module "vpc" {
  for_each = local.environments

  source  = "registry.patterneddesigns.ca/patterneddesigns/vpc/aws"
  version = "1.2.0"

  vpc_cidr           = each.value.cidr
  availability_zones = each.value.azs
  single_nat_gateway = each.value.single_nat_gateway

  tags = {
    Environment = each.key
  }
}

output "vpc_ids" {
  value = { for k, v in module.vpc : k => v.vpc_id }
}