【问题标题】:Terrafrom import GCP IAM member from list of usersTerraform 从用户列表中导入 GCP IAM 成员
【发布时间】:2022-02-07 18:28:17
【问题描述】:

我想将现有 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 中找到了导入语句并将其解释为以下内容。根据文档,最后一部分 user:foo@example.com 仅适用于单个用户。如何调整导入语句以应用于我想要的用户变量列表?

terraform import module.iam.google_project_iam_member.owner "infarm-data roles/owner user:foo@example.com"

【问题讨论】:

  • 之后您是否尝试过导入module.iam.google_project_iam_member.owner[0] 和其他索引?
  • 如果我在资源创建中使用 count ,我相信这将是一个解决方案,但使用 for_each 是不可能的。
  • 啊,我错过了,那应该是module.iam.google_project_iam_member.owner["some_owner"]

标签: terraform-provider-gcp google-iam


【解决方案1】:

我找到了上述导入问题的答案。该解决方案需要进行两次调整。

  • 对 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"

希望这对其他人有帮助

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 2017-07-07
    • 2020-08-27
    相关资源
    最近更新 更多