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

时间:2017-08-04 04:03:30

标签: go terraform

为了更好地理解terraform,我希望能够将HCL转换为等效的JSON。我得到了HCL解析器(https://github.com/hashicorp/hcl)来构建和运行的测试,但是我没有看到任何接收HCL文件和输出JSON的命令。

有一个HCL的python实现,它包含一个将HCL转换为JSON的实用程序,但它有一些相当奇怪/意外的行为,我想确认该行为来自HCL语言并且不是&# 39; t特定于python实现。 e.g。

> cat foo.tf 
service {
    key = "aaa"
}

service {
    key = 0x10
    foo = "bar"
}

> hcltool foo.tf 
{
    "service": [
        {
            "foo": "bar",
            "key": "aaa"
        },
        {
            "key": 16
        }
    ]
}

2 个答案:

答案 0 :(得分:2)

有一个开源项目,您可以使用它,但terraform hcl并不是他们设计的标准。在这里解释:

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

  遗憾的是,由于HCL格式存在歧义,这种行为是由Hasicorp的官方HCL库引起的。因此,我们实际上无法改善这种状况。我们过去曾进行过类似的讨论,如果您想了解更多有关此主题的内容以及未来可能不会更改的原因:

您可以安装该工具的相关回购:

https://github.com/kvz/json2hcl

这里有一个示例fixtures / infra.tf.json被转换为HCL:

$ json2hcl < fixtures/infra.tf.json > fixtures/infra.tf

作为奖励,相反的对话也通过-reverse标志支持:

$ json2hcl -reverse < fixtures/infra.tf

答案 1 :(得分:1)

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