【问题标题】:Terraform 12 convert count to for_eachTerraform 12 将计数转换为 for_each
【发布时间】:2020-08-31 18:00:00
【问题描述】:

我目前在 Terraform 中计算索引的方式遇到了一些挑战。我正在寻求一些帮助以将其转换为 for_each。

# Data Source for github repositories. This is used for adding all repos to the teams.
data "github_repositories" "repositories" {
  query = "org:theorg"
}

resource "github_team_repository" "business_analysts" {
  count      = length(data.github_repositories.repositories.names)
  team_id    = github_team.Business_Analysts.id
  repository = element(data.github_repositories.repositories.names, count.index)
  permission = "pull"
}

我尝试了以下方法但没有成功:

resource "github_team_repository" "business_analysts" { 

for_each = toset(data.github_repositories.repositories.names) 
team_id = github_team.Business_Analysts.id 
repository = "${each.value}" 
permission = "pull" 
}

我正在查询一个 Github 组织并收到一个庞大的存储库列表。然后我使用 count 将这些存储库添加到团队中。不幸的是,一旦添加或更改了新的存储库,Terraform 就会出错。话虽这么说,我认为新的 for_each 函数可以为我解决这个难题,但是,我在思考如何实现它时遇到了麻烦;在这种特殊情况下。任何帮助,将不胜感激。

【问题讨论】:

  • 你对 for_each 有什么尝试?你尝试过的东西有错误吗?如果是这样,您能否展示您尝试过的内容以及相关错误?
  • resource "github_team_repository" "business_analysts" { for_each = toset(data.github_repositories.repositories.names) team_id = github_team.Business_Analysts.id 存储库 = "${each.value}" 权限 = "pull" }
  • 您应该将它与您遇到的任何错误一起编辑到您的问题中。
  • 当您说“没有成功”时,您会收到错误消息吗?如果是这样,您可以编辑您的问题以包含错误吗?如果它没有出错但没有做你所期望的,你能解释一下它做了什么吗?这种解释也应该在问题本身而不是评论中。
  • 我们确实需要查看错误,或者实际输出与预期的对比。但是,使用我的水晶球,我想您可能需要将each.value 更改为each.key

标签: list github set terraform terraform0.12+


【解决方案1】:

误报。我一直都有答案,问题归因于我引用变量的方式.....

如果有人偶然发现了这个,那么你想像这样构建你的循环

for_each = toset(data.github_repositories.repositories.names) 
team_id = github_team.Business_Analysts.id 
repository = each.key 
permission = "pull" 
}

【讨论】:

  • 我很困惑。 each.keyeach.value 在集合上的 for_each 的情况下是相等的。您在原始实现中遇到了什么错误?
猜你喜欢
  • 2020-08-22
  • 2021-03-25
  • 2021-01-17
  • 2021-07-09
  • 1970-01-01
  • 2020-12-28
  • 2020-09-20
  • 2021-10-18
  • 2023-03-15
相关资源
最近更新 更多