Terraform读取YAML文件赋值本地变量报Invalid index错误如何解决
错误原因
你的YAML文件结构定义错误,vm字段下的name和system_cores前都加了列表标识符-,导致yamldecode解析后local.vm_raw是由多个独立单属性对象组成的元组,而非你预期的包含所有VM属性的单个映射对象。元组只能通过数字下标索引,无法直接用字符串键取值,因此触发了Invalid index报错。
修复方案
方案1:修改YAML结构(更推荐)
将同属一个VM的属性归到同一个映射下,去掉多余的列表标识符:
vm: name: vmingd25 system_cores: 4
修改后原有的Terraform代码无需调整即可正常运行。
方案2:不改YAML,调整Terraform取值逻辑
如果你确实需要保留YAML的列表结构,可以通过数字下标取对应列表元素的属性:
locals { vm_raw = yamldecode(file("server.yaml"))["vm"] vm_name= local.vm_raw[0]["name"] vm_cpu = local.vm_raw[1]["system_cores"] }
内容的提问来源于stack exchange,提问作者sfgroups
相关产品推荐
相关产品推荐

