テラフォームをよりよく理解するために、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
}
]
}
オープンソースプロジェクトがあり、ヘルプに使用できますが、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
このサイトは、HCL、JSON、YAML間の1回限りの変換に役立ちます: https://www.hcl2json.com/