如何将HashiCorp配置语言转换为JSON?

Dar*_*rin 7 go terraform

为了更好地理解terraform,我希望能够将HCL转换为等效的JSON。我有HCL解析器(https://github.com/hashicorp/hcl)可以构建并可以运行测试,但是我看不到任何命令可以接收HCL文件并输出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
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

BMW*_*BMW 5

有一个开源项目,您可以寻求帮助,但是terraform hcl不是他们设计的标准。在这里说明:

https://github.com/kvz/json2hcl/issues/4#issuecomment-275513256

可悲的是,此行为是由Hasicorp的官方HCL库引起的,原因是HCL格式存在歧义。因此,我们真的无法改善这种情况。如果您想阅读更多有关此主题的信息,以及为什么将来将来可能不会更改,我们曾经进行过类似的讨论:

您可以安装该工具的相关存储库:

https://github.com/kvz/json2hcl

这是一个将fixtures / infra.tf.json转换为HCL的示例:

$ json2hcl < fixtures/infra.tf.json > fixtures/infra.tf
Run Code Online (Sandbox Code Playgroud)

另外,通过-reverse标志也支持相反的对话:

$ json2hcl -reverse < fixtures/infra.tf
Run Code Online (Sandbox Code Playgroud)

  • 如果您仔细阅读,我的答案已经提到,json2hcl提供2路转换。 (4认同)

ken*_*gen 5

该网站对于 HCL、JSON 和 YAML 之间的一次性转换非常有用: https: //www.hcl2json.com/