You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform中如何解码templatefile输出以实现列表合并?

解决Terraform模板渲染后字符串转列表的问题

你遇到的问题是因为templatefile函数返回的是渲染后的文本字符串,哪怕你的模板内容是JSON数组格式,Terraform也只会把它当成普通字符串处理,而concat要求传入的是列表类型,所以会报错。

你需要用jsondecode函数将渲染后的JSON字符串解析成Terraform原生的列表(或对象)类型,具体修改如下:

  1. 保持你的first.tfpl模板内容不变:
[
{
      name = "Test"
      grants = [
        {
          grant      = ["ADMIN"]
          principals = ${jsonencode(admins)}
        }
}
]
  1. 修改locals.tf中test的定义,通过jsondecode解析模板输出的字符串:
locals {
  admins   = ["a","b","c"]
}

locals {
  test = jsondecode(templatefile("first.tfpl", { admins = local.admins }))
}
  1. 此时local.test会被识别为Terraform列表类型,就可以正常和其他列表用concat合并了:
locals {
  mylist= concat(["1","2"], local.test)
}

这样修改后,Terraform就能正确解析模板输出的内容为列表,进而完成合并操作。

内容的提问来源于stack exchange,提问作者user3579222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:57:10