首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果创建了其他资源,则使用不同的值

如果创建了其他资源,则使用不同的值
EN

Stack Overflow用户
提问于 2021-09-16 22:13:33
回答 1查看 48关注 0票数 1

我有一个Terraform模块,我想修改它。目前,我的模块创建了一个服务帐户。我想修改它,以便有人可以传入一个现有的服务帐户,或者如果没有传入一个,那么模块就会创建一个服务帐户。

最初,我的服务帐户是这样的:

代码语言:javascript
复制
resource "google_service_account" "scheduler" {
  account_id = "${var.prefix}-scheduler"
  project    = var.project
}

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

代码语言:javascript
复制
variable "service_account_email" {
  default = null
  description = "Existing service account for running ... jobs.  If null a new service account will be created."
}

我最初想做的是添加一些当地人

代码语言:javascript
复制
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
}

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

代码语言:javascript
复制
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块,我会得到以下错误:

代码语言:javascript
复制
│ 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,我会得到以下错误:

代码语言:javascript
复制
│ 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变量,以便在我们更喜欢使用现有服务帐户的情况下使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-16 22:32:07

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

代码语言:javascript
复制
service_account_email = var.service_account_email == null ? google_service_account.scheduler[0].email : var.service_account_email
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69215751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档