Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform 如何在地形代码中引用次要范围?_Terraform_Terraform Provider Gcp - Fatal编程技术网

Terraform 如何在地形代码中引用次要范围?

Terraform 如何在地形代码中引用次要范围?,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,我正在尝试引用其他资源中的辅助范围: resource "google_compute_subnetwork" "mysubnetwork" { name = "mysubnetwork" .... secondary_ip_range { range_name = "mysecondary" ip_cidr_range = "10.0.0.0/24&qu

我正在尝试引用其他资源中的辅助范围:

resource "google_compute_subnetwork" "mysubnetwork" {
  name          = "mysubnetwork"
  ....
  secondary_ip_range {
    range_name    = "mysecondary"
    ip_cidr_range = "10.0.0.0/24"
  }
  ....

resource "google_container_cluster" "my-cluster" {
....
ip_allocation_policy{
    cluster_secondary_range_name = <reference my existing secondary ranges>
    services_secondary_range_name = <reference my existing secondary ranges>
}
resource“谷歌计算子网”“我的子网”{
name=“mysubnetwork”
....
二级ip范围{
range_name=“mysecondary”
ip_cidr_range=“10.0.0.0/24”
}
....
资源“google\u容器\u群集”“我的群集”{
....
知识产权分配政策{
群集\辅助\范围\名称=
服务\辅助\范围\名称=
}
尝试了以下操作:
google\u compute\u子网.mysubnetwork.secondary\u ip\u range.range\u name[“mysecondary”]

但是这个值没有任何属性。

我试过:
google\u compute\u subnetwork.mysubnetwork.secondary\u ip\u range.range\u name.mysecondary


但是得到了相同的错误。

这是一个复杂的问题,我还没有测试过,但似乎它会起作用-我会遇到问题吗?想知道是否有更好的方法。为了清楚起见,应该清楚地知道引用的范围(所以不使用索引号)


您是否只拥有一个单一的辅助IP范围?如果是这样,它可以像
google\u compute\u子网.mysubnetwork.secondary\u IP\u range.0.range\u name
用于
range\u name
google\u compute\u子网.mysubnetwork.secondary\u IP\u range.0.IP\u cidr\u range
用于
cidr\u范围。如果您有可变金额那么问题就有点棘手了。我有两个次要范围,我不想按索引引用它们。我想按名称引用它们,但它们是静态的还是动态的?如果你总是想用一个资源引用第一个范围,用另一个资源引用第二个范围,那么这只是使用
google\u comp的一个例子ute_subnetwork.mysubnetwork.secondary_ip_range.0.range_name
google_compute_subnetwork.mysubnetwork.secondary_ip_range.1.range_name
。我不想这样做。为了可读性,我想看到配置中引用的范围名称
variable "vpc_secondary_ip_ranges" {
  type = map(object({
    secondary_range = object({
      range_name = string
      ip_cidr_range = string
    })
  }))
  default = {
    gke-pods = {
      secondary_range = {
        range_name = "gke-pods"
        ip_cidr_range = "10.1.0.0/14"
      }
    }
    gke-services = {
      secondary_range = {
        range_name = "gke-services"
        ip_cidr_range = "10.2.2.0/24"
      }
    }
  }
}

// flatten for secondary_ip_range parameter
resource "google_compute_subnetwork" "bombora-default-subnetwork-us-west1" {
  secondary_ip_range = [for r in var.vpc_secondary_ip_ranges : r.secondary_range]
  ...

...
resource "google_container_cluster" "mycluster" {
  // index into map for names of secondaries for ip_allocation_policy
  ip_allocation_policy {
    cluster_secondary_range_name = var.vpc_secondary_ip_ranges.gke-pods.secondary_range.range_name
    services_secondary_range_name = var.vpc_secondary_ip_ranges.gke-services.secondary_range.range_name
  }
....