寻找使用 Terraform 创建 GCP 子网的迭代逻辑

Looking for iteration logic for GCP Subnetwork creation using Terraform

正在尝试使用 terraform 模块为 2 个区域创建 GCP 子网。用例将是我们可以一次创建区域子网中的一个或两个区域子网以及次要范围(并非总是如此,并且可以在同一子网中创建多个次要范围)。喜欢,

  1. 一次一个区域(来自 2 个区域)子网,没有次要范围。
  2. 一次两个区域的子网,没有次要范围。
  3. 一次一个区域(来自 2 个区域)子网,具有一个或多个辅助范围。
  4. 两个区域子网同时具有一个或多个次要范围。

下面的代码限制在同一资源上使用计数和 for_each。 计划在同一 main.tf 中为中心区域添加另一个资源块

**main.tf file**
resource "google_compute_subnetwork" "subnet_east4" {
  count                    = "${var.npe_subnet_east4_enable ? 1 : 0}"
  name                     = "${var.npe_subnet_name_east4}"
  ip_cidr_range            = "${var.npe_cidr_range_east4}"
  network                  = "${var.npe_vpc_name_east4}"
  region                   = "${var.npe_region_east4}"
  private_ip_google_access = "true"
  for_each = var.npe_secondary_subnets_east4

  secondary_ip_range {
    range_name    = each.value["npe_east4_subnet_pod_range_name"]
    ip_cidr_range = each.value["npe_east4_subnet_pod_ip_cidr_range"]
  }

  secondary_ip_range {
    range_name    = each.value["npe_east4_subnet_service_range_name"]
    ip_cidr_range = each.value["npe_east4_subnet_service_ip_cidr_range"]
  }

**variable.tf file**
variable "npe_secondary_subnets_east4" {
    type = map(object({
        npe_east4_subnet_pod_range_name = string
        npe_east4_subnet_pod_ip_cidr_range = string
        npe_east4_subnet_service_range_name = string
        npe_east4_subnet_service_ip_cidr_range = string
    }))
    description = "Secondary subnets"
}

请在这里提出一些替代逻辑

count 不是必需的,您可以在 for_each:

中使用条件表达式
for_each = var.npe_subnet_east4_enable ? var.npe_secondary_subnets_east4 : {}