Terraform で JSON ファイルを扱う
Terraform を利用する際、一般的には HCL (HashiCorp Configuration Language) 形式で記載された .tf (Template File) を利用するケースをよく見かけます。 ですが、Terraform 自体は HCL = .tf ファイル以外にも JSON を扱うことも出来ます。 .tf ファイルを JSON 形式に変換するには HashiCorp 公式の hcldec を使う方法もありますが、より手軽に OSS の tmccombs/hcl2json を利用する方法もあります。 今回はこの hcl2json を利用し、HCL を JSON 形式に変換する方法をメモしておきます。 尚、今回は Ubuntu 22.04LTS 上でテストしました。
注意点¶
2 点、注意点があります。
hcl2json
は HCL -> JSON 形式への変換は可能ですが、逆向きになる JSON -> HCL 形式への変換は出来ないようです。 「相互変換は出来ない」点を理解して利用する必要があります。- Terraform で利用する JSON ファイルは拡張子を
.tf.json
にする必要があります (.json
だけにすると Terraform に無視され、処理されません)。
インストール¶
GitHub のリリースページからバイナリをダウンロードし、インストールします。
1 2 |
|
変換前の .tf ファイル¶
今回、検証に用いるのは 前回 利用した "変換前の .tf ファイル" は以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
HCL -> JSON 形式へ変換する¶
HCL -> JSON 形式への変換は簡単です。 hcl2json
の引数として JSON ファイルを指定すれば標準出力に JSON が出力されます。 hcl2json
にはオプションがほぼ存在しないようなので、ファイルに保存したい場合は標準出力をファイルへリダイレクトします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
Terraform で JSON ファイルを利用する¶
冒頭の「注意点」に記載した通り、ファイルの拡張子を .tf.json
にすれば、HCL ファイルと同様に JSON 形式のファイルを Terraform で扱うことが出来ます。