Terraform 从用户列表中导入 GCP IAM 成员
Terrafrom import GCP IAM member from list of users
我想将现有的 IAM 用户导入到 Terraform 中。我在 main.tf 中创建了一个模块,看起来像这样
module "iam" {
source = "./modules/iam"
project_id = var.project_id
owners = var.owners
}
变量在变量文件中定义为:
variable "owners" {
type = list(string)
default = [
"user:test1@infarm.com",
"user:test2@infarm.com",
]
}
模块本身包含一个带有 for_each 循环的资源:
resource "google_project_iam_member" "owner" {
role = "roles/owner"
for_each = toset(concat(
var.owners,
))
member = each.value
}
我从 terraform documentation 中找到了 import 语句并将其解释如下。根据文档,最后一部分 user:foo@example.com 仅适用于单个用户。如何调整导入语句以应用于我想要的用户变量列表?
terraform import module.iam.google_project_iam_member.owner "infarm-data roles/owner user:foo@example.com"
我找到了上述导入问题的答案。该解决方案需要进行两次调整。
- 引用 for_each 循环 ["user"] 中的特定项目 - 如 @luk2302
所述
- 要被导入正确解释的模块语句周围的引号(如下所示)
terraform import 'module.iam.google_project_iam_member.owner["user:foo@example.com"]' "infarm-data roles/owner user:foo@example.com"
希望这对其他人有帮助
我想将现有的 IAM 用户导入到 Terraform 中。我在 main.tf 中创建了一个模块,看起来像这样
module "iam" {
source = "./modules/iam"
project_id = var.project_id
owners = var.owners
}
变量在变量文件中定义为:
variable "owners" {
type = list(string)
default = [
"user:test1@infarm.com",
"user:test2@infarm.com",
]
}
模块本身包含一个带有 for_each 循环的资源:
resource "google_project_iam_member" "owner" {
role = "roles/owner"
for_each = toset(concat(
var.owners,
))
member = each.value
}
我从 terraform documentation 中找到了 import 语句并将其解释如下。根据文档,最后一部分 user:foo@example.com 仅适用于单个用户。如何调整导入语句以应用于我想要的用户变量列表?
terraform import module.iam.google_project_iam_member.owner "infarm-data roles/owner user:foo@example.com"
我找到了上述导入问题的答案。该解决方案需要进行两次调整。
- 引用 for_each 循环 ["user"] 中的特定项目 - 如 @luk2302 所述
- 要被导入正确解释的模块语句周围的引号(如下所示)
terraform import 'module.iam.google_project_iam_member.owner["user:foo@example.com"]' "infarm-data roles/owner user:foo@example.com"
希望这对其他人有帮助