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"

希望这对其他人有帮助