如何为terraform中的每个模块创建资源?
我有一个通用模块,它有:如何为terraform中的每个模块创建资源?,terraform,Terraform,我有一个通用模块,它有: module "foo1" { source = "./modules/bar" name = "foo1" id = "123" } module "foo2" { source = "./modules/bar" name
module "foo1" {
source = "./modules/bar"
name = "foo1"
id = "123"
}
module "foo2" {
source = "./modules/bar"
name = "foo2"
id = "456"
}
如上面所示,其他两个模块正在引用它。问题是,这个模块栏生成了一个带有电子邮件的资源:google\u service\u account.service\u account.email
,我想用它来创建一堆其他资源,但我只想为foo1
而不是foo2
(bar
模块同时使用name
和id
vars来生成电子邮件)。如何从中排除foo2
// needs to be created using the email generated for `foo1` only
resource "google_project_iam_member" "admin" {
...
member = "serviceAccount:${google_service_account.service_account.email}"
}
如果我正确理解了您的问题,您可以使用来有条件地创建项目:
resource "google_project_iam_member" "admin" {
count = var.name == "foo1" ? 1 : 0
...
member = "serviceAccount:${google_service_account.service_account.email}"
}
当name
为foo1
时,上面将创建google\u project\u iam\u member.admin
resource "google_project_iam_member" "admin" {
count = var.name == "foo1" ? 1 : 0
...
member = "serviceAccount:${google_service_account.service_account.email}"
}