Terraform如何在另一个资源中使用来自一个资源的每个值

Terraform如何在另一个资源中使用来自一个资源的每个值,terraform,terraform0.12+,Terraform,Terraform0.12+,我正在尝试基于简单的csv在terraform cloud中创建用户,其结构如下: email,access_level test@gmail.com,readonly test2@gmail.come,owners 我可以使用以下资源块轻松创建用户: locals { users_csv = csvdecode(file("${path.module}/users.csv")) } resource "tfe_organization_membersh

我正在尝试基于简单的csv在terraform cloud中创建用户,其结构如下:

email,access_level
test@gmail.com,readonly
test2@gmail.come,owners
我可以使用以下资源块轻松创建用户:

locals {
  users_csv = csvdecode(file("${path.module}/users.csv"))

}


resource "tfe_organization_membership" "users_csv" {
  for_each = { for r in local.users_csv : r.email => r }

  organization  = var.ppl_organisation
  email = each.value.email
}
但是,如果我想将它们添加到团队中,则需要将上述资源的“id”输出添加到以下资源中:

resource "tfe_team_organization_member" "readonly_member" {
  for_each = { for r in local.read_only : r.email => r }

  team_id = each.value.access_level == "readonly" ? each.value.access_level : local.readonly_id
  organization_membership_id = "${tfe_organization_membership.users_csv.id}"
}
有办法通过这个吗


提前感谢。

我想我在这里要做的第一件事是将CSV数据从列表投影到地图,如下所示:

locals {
  users_csv = csvdecode(file("${path.module}/users.csv"))
  users     = { for r in local.users_csv : r.email => r }
}
通过这样定义
local.users
,我们可以更简洁地在配置的其他地方多次引用该值:

resource "tfe_organization_membership" "users_csv" {
  for_each = local.users

  organization = var.ppl_organisation
  email        = each.value.email
}

resource "tfe_team_organization_member" "readonly_member" {
  for_each = local.users

  team_id = (
    each.value.access_level == "readonly" ?
    each.value.access_level :
    local.readonly_id
  )
  organization_membership_id = tfe_organization_membership.users_csv[each.key].id
}

每个集合都有
的任何资源在表达式中表示为对象的映射,这些对象的键与每个
输入映射相同,因此
tfe\u组织成员身份。用户csv[each.key]
表达式指的是其他资源对应实例的对象表示,通过映射键进行关联。

您可以尝试使用
organization\u membership\u id=tfe\u organization\u membership.users\u csv[each.key].id
您好,谢谢您的回复,这将我所做的工作完美地排序了。非常感谢!