Terraform jsonencode类型转换无法将值转换为数组

x9ybnkn6  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(125)

我尝试使用vmware/弗拉提供程序部署虚拟机,在尝试定义输入时出现此错误:
错误:无法将输入“disks”value“{“label”:“/appmnt”,“mountpoint”:“/app”,“size”:“20”}“转换为类型”arrays“.&json.UnmarshalTypeError{Value:“object”,Type:(*reflect.rtype)(0x 103 c715 e0),Offset:1,Struct:“",Field:““}

inputs = {
  image  = "Ubuntu"
  folderPath = "folder/Path"
  folderName = "terraform"
  name = "terraDeploy"
  disks = jsonencode({ "mountpoint": "/app", "label": "/appmnt", "size": "20" })
}

字符串
我的“terraform apply”磁盘输出如下所示:

+ "disks"      = jsonencode(
                {
                  + label      = "/appmnt"
                  + mountpoint = "/app"
                  + size       = "20"
                }
            )


这是使用Postman/curl请求的方法:

"cpuCount": "4",
        "disks": [
            {
                "size": 20,
                "mountpoint": "/app",
                "label": "appmnt"
            }
        ],

enxuqcxy

enxuqcxy1#

在您展示的工作示例中,您传递了一个包含JSON对象的JSON数组,但在Terraform配置中,您只传递了一个JSON对象。
您可以通过向jsonencode传递列表或元组值来传递JSON数组。例如:

disks = jsonencode([
    { "mountpoint": "/app", "label": "/appmnt", "size": "20" },
  ])

字符串
Terraform将其编码为包含JSON对象的JSON数组,因此应该匹配您的工作请求:

[{"mountpoint":"/app","label":"/appmnt","size":"20"}]


请注意,这个错误消息似乎来自vmware/vra提供程序,而不是来自Terraform本身,所以这是一个关于disks参数的问题,而不是关于jsonencode的问题。这并不重要,但我想在你有更多问题的情况下注明一下,这样你就可以在问题标题中提到提供程序。

相关问题