为了更好地理解terraform,我希望能够将HCL转换为等效的JSON。我得到了HCL解析器(https://github.com/hashicorp/hcl)来构建和运行测试,但我没有看到任何命令采取HCL文件并输出JSON。如何将HashiCorp配置语言转换为JSON?
有一个HCL的python实现,它包含一个将HCL转换为JSON的实用程序,但它有一些相当奇怪的/意外的行为,我想确认该行为来自HCL语言,并且不是特定的到python实现。例如
> cat foo.tf
service {
key = "aaa"
}
service {
key = 0x10
foo = "bar"
}
> hcltool foo.tf
{
"service": [
{
"foo": "bar",
"key": "aaa"
},
{
"key": 16
}
]
}
你确定你的tf是正确的吗?我对hcl的语言规范不够熟悉,但我熟悉的aws提供程序在''like'类型“标识符”之前使用了两个单词{',例如'variable“ami”{' – RaGe
我只是从HCL解组到Go结构,然后编组到Go结构到JSON。 –
HCL没有定义规范,并且没有从HCL到JSON的直接转换。更复杂的是,Terraform要求HCL的AST结构表示不同的类型,所以有一些嵌套的结构根本无法用JSON来描述。由于这些含糊不清,没有一种工具可以将任意HCL转换为有效的JSON。见https://github.com/hashicorp/terraform/issues/9354。 – JimB