使用vmware/vra Provider部署VM时Terraform jsonencode数组转换失败
解决Terraform vmware/vra Provider中disks参数的数组转换错误
问题原因
错误提示明确说明:vRA的disks参数要求数组类型,但你当前传入的是单个JSON对象({...}),而非包含对象的数组结构([{...}]),导致类型转换失败。对比你用Postman成功请求的格式,disks字段是被方括号[]包裹的数组,这就是核心差异。
修正后的Terraform配置
将磁盘对象放入数组后再执行jsonencode,同时注意size字段的类型(成功请求中是数字20,而非字符串"20",建议同步修正以匹配API要求):
inputs = { image = "Ubuntu" folderPath = "folder/Path" folderName = "terraform" name = "terraDeploy" disks = jsonencode([ { "mountpoint" = "/app", "label" = "/appmnt", "size" = 20 # 改为数字类型,对齐成功请求的格式 } ]) }
验证逻辑
修正后disks的输出会变成符合API要求的数组格式:
+ "disks" = jsonencode( [ { label = "/appmnt" mountpoint = "/app" size = 20 } ] )
该结构与你Postman中成功请求的disks字段完全一致,可解决类型转换错误。
内容的提问来源于stack exchange,提问作者rumplesmyboy
相关产品推荐
相关产品推荐

