【问题标题】:Use different value if another resource is created如果创建了另一个资源,则使用不同的值
【发布时间】:2021-11-11 21:05:38
【问题描述】:

我有一个想要修改的 Terraform 模块。目前我的模块创建了一个服务帐户。我想对其进行修改,以便有人可以传入现有的服务帐户,或者如果没有传入,那么模块会创建一个服务帐户,它原本应该有。

原来我的服务帐号是这样的:

resource "google_service_account" "scheduler" {
  account_id = "${var.prefix}-scheduler"
  project    = var.project
}

我已将以下变量添加到我的 variables.tf 文件中:

variable "service_account_email" {
  default = null
  description = "Existing service account for running ... jobs.  If null a new service account will be created."
}

我原本想做的是添加一些本地人

locals {
  service_account_count = var.service_account_email == null ? 1 : 0
  service_account_email = var.service_account_email == null ? google_service_account.scheduler.email : var.service_account_email
}

然后我可以将我的服务帐户更改为如下所示

resource "google_service_account" "scheduler" {
  count = local.service_account_count
  account_id = "${var.prefix}-scheduler"
  project    = var.project
}

然后,无论我在哪里引用 google_service_account.scheduler.email,我都可以引用 local.service_account_email .. 但是,由于一些原因,我似乎无法做到这一点。

如果我尝试使用上面提到的 locals 块,我会收到以下错误:

│ Because google_service_account.scheduler has "count" set, its attributes must be accessed on specific instances.
│ 
│ F`or example, to correlate with indices of a referring resource, use:
│     google_service_account.scheduler[count.index]
╵

如果我将其更改为使用 google_service_account.scheduler[count.index].email,则会收到以下错误:

│ Because google_service_account.scheduler has "count" set, its attributes must be accessed on specific instances.
│ 
│ For example, to correlate with indices of a referring resource, use:
│     google_service_account.scheduler[count.index]
╵

现在我有点卡住了,因为我不能强制任何最初引用 google_service_account.scheduler.email 的资源改为引用正在传递的 var.service_account_email 变量,以便我们更愿意使用现有的服务帐号。

【问题讨论】:

    标签: google-cloud-platform terraform terraform-provider-gcp terraform0.12+


    【解决方案1】:

    由于您使用的是count,因此您必须使用[0] 来访问您的资源:

    service_account_email = var.service_account_email == null ? google_service_account.scheduler[0].email : var.service_account_email
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 2019-03-25
      相关资源
      最近更新 更多