【问题标题】:How to correctly use each.value in for_each in terraform?如何在 terraform 中正确使用 for_each 中的 each.value?
【发布时间】:2021-04-09 20:54:25
【问题描述】:

我正在尝试为每个用户创建一个文件,并将分配给他们的项目作为文件的内容。我很高兴得到“$ {each.value}”,因为它是一个字符串列表。请问有什么办法吗?

locals {
  data = {
    "project1" = {
      user_assigned           = ["user1", "user2", "user3"]
     }
    "project2" = {
      user_assigned           = ["user2", "user3", "user4"]
     }
  }


`
resource "local_file" "foo" {
  for_each = transpose(zipmap(keys(local.data), values(local.data)[*].user_assigned))
  content  = "${each.value}"
  filename = "${each.key}"
}

错误:

  on test.tf line 85, in resource "local_file" "foo":
  85:   content  = "${each.value}"
    |----------------
    | each.value is list of string with 2 elements

【问题讨论】:

    标签: terraform terraform0.12+


    【解决方案1】:

    content 必须是字符串,但在您的情况下它是一个列表,例如["project1", "project2"]。将其转换为字符串的一种方法是通过jsonencode

    resource "local_file" "foo" {
      for_each = transpose(zipmap(keys(local.data), values(local.data)[*].user_assigned))
      content  = jsonencode(each.value)
      filename = each.key
    }
    

    【讨论】:

    • @Devopsnoob 没问题。很高兴它解决了:-)
    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 2021-04-14
    • 2020-12-09
    • 2023-03-15
    • 1970-01-01
    • 2020-11-01
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多