Terraform google_cloudbuild_trigger 中的动态步骤块导致参数不受支持的错误

问题描述 投票:0回答:1

我正在尝试在

google_cloudbuild_trigger

中动态生成块
resource "google_cloudbuild_trigger" "push_to_production" {
  name = "cloudbuild-workers"
  location = var.region
  build {
    dynamic "step" {  
      for_each    = local.workers
      id        = "deploy-worker-${each.value}"
      name      = "gcr.io/google.com/cloudsdktool/cloud-sdk"
      entrypoint = "gcloud"
      args      = ["run", "services", "update", each.value, "--platform=managed", "--image=$_WORKER_IMG", "--region=$_REGION",  "--quiet"]
    }
  }
}

这应该在我的触发器中为 local.workers 中的每个工作配置生成构建步骤列表。但我看到的是每个属性都有错误。

此处不需要名为“id”的参数。

此处不需要名为“name”的参数。

此处不需要名为“entrypoint”的参数。

此处不需要名为“args”的参数。

这种结构方式有问题吗?

google-cloud-platform terraform google-cloud-build terraform-provider-gcp
1个回答
0
投票

使用

dynamic
块时,还必须有
content
,即:

resource "google_cloudbuild_trigger" "push_to_production" {
  name = "cloudbuild-workers"
  location = var.region
  build {
    dynamic "step" {  
      for_each = local.workers
      content {
        id         = "deploy-worker-${step.value}"
        name       = "gcr.io/google.com/cloudsdktool/cloud-sdk"
        entrypoint = "gcloud"
        args       = ["run", "services", "update", each.value, "--platform=managed", "--image=$_WORKER_IMG", "--region=$_REGION",  "--quiet"]
      }
    }
  }
}

此外,由于您使用的是

dynamic
块,因此
each
对象基本上被替换为 iterator。如果您不提供名称,则迭代器名称通常与动态块的名称相对应。但是,即使这个语法现在是正确的,我也不认为它会起作用,因为该资源的
build
块表示需要
step
块。

© www.soinside.com 2019 - 2024. All rights reserved.