1 回答
TA贡献1874条经验 获得超12个赞
您共享的错误是由于type Resource. resourceTerraform 中的块(和data块)需要两个标签,指示资源类型和名称。要将您暗示的模式与这些结构类型相匹配,您需要定义标记为的字段label:
type Resource struct {
Type string `hcl:"type,label"`
Name string `hcl:"name,label"`
Options hcl.Body `hcl:",remain"`
}
type Data struct {
Type string `hcl:"type,label"`
Name string `hcl:"name,label"`
Options hcl.Body `hcl:",remain"`
}
虽然这应该适用于您在此处显示的有限输入,但我要提醒您,您正在使用更高级别的gohcl
API,它只能解码 HCL 的一个子集,该子集很好地映射到 Go 的结构类型。hcl.Body
Terraform 本身直接使用了和的底层 API hcl.Expression
,这使得 Terraform 语言可以包含一些gohcl
API 无法直接表示的 HCL 特性。
根据您的目标,您可能会发现使用官方库更好terraform-config-inspect
,它可以在比 HCL API 本身更高的抽象级别上解析、解码和描述 Terraform 语言的子集。它还支持为 Terraform 版本编写的模块,一直追溯到 Terraform v0.11,并且是支持Terraform Registry完成的模块分析的实现。
- 1 回答
- 0 关注
- 78 浏览
添加回答
举报