web-dev-qa-db-ja.com

HashiCorp構成言語をJSONに変換するにはどうすればよいですか?

テラフォームをよりよく理解するために、HCLを同等のJSONに変換できるようにしたいと思います。 HCLパーサー( https://github.com/hashicorp/hcl )をビルドしてテストを実行しましたが、HCLファイルを取り込んでJSONを出力するコマンドが表示されません。

python HCLの実装があり、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
        }
    ]
}
7
Darin

オープンソースプロジェクトがあり、ヘルプに使用できますが、terraformhclは設計どおりに標準ではありません。ここで説明してください:

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

残念ながら、この動作は、HCL形式のあいまいさのためにHasicorpの公式HCLライブラリによって引き起こされます。したがって、この状況を実際に改善することはできません。このトピックについてもっと読みたい場合や、これが将来変更されない理由については、過去に同様の議論がありました。

ツールをインストールできる関連リポジトリ:

https://github.com/kvz/json2hcl

HCLに変換されるfixtures/infra.tf.jsonの例を次に示します。

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

ボーナスとして、逆の会話も-reverseフラグを介してサポートされます。

$ json2hcl -reverse < fixtures/infra.tf
5
BMW

このサイトは、HCL、JSON、YAML間の1回限りの変換に役立ちます: https://www.hcl2json.com/

2
kennbrodhagen