IntelliJ の Terraform / HCL プラグインではリソース名や属性の補完ができて便利なのですが、カスタムプロバイダは補完が効かず不便です。
どうやらスキーマ定義の JSON ファイルを然るべき場所に置けば認識されるらしいのですが、肝心の JSON ファイルの作り方のドキュメントがありません。
プラグインのソースを眺めていたら、無理やり JSON ファイルを生成できたのでまとめておきます。
以下、terraform-provider-sakuracloud プロバイダのスキーマ定義を生成する例です。
-
Go をインストールして $GOPATH を設定する
-
terraform-provider-sakuracloud のソースをダウンロードする
$ go get github.com/sacloud/terraform-provider-sakuracloud
-
intellij-hcl のソースをダウンロードして schemas-extractor ディレクトリに移動
$ git clone https://github.com/VladRassokhin/intellij-hcl.git $ cd intellij-hcl/schemas-extractor
-
terraform-provider-sakuracloud を対象にするようコードを書き換える
$ sed -i -e 's/terraform-providers/sacloud/g' build-all.sh template/generate-schema.go $ echo terraform-provider-sakuracloud > providers.list.full
-
スキーマ定義ファイルを生成する
$ make Updating terraform-provider-sakuracloud ======================================== Waiting for update processes to finish All providers updated Preparing terraform-provider-sakuracloud fatal: No annotated tags can describe '36fd67475a6f3b9e53da8e9d45f579a37b1720d5'. However, there were unannotated tags: try --tags. Generating schema for terraform-provider-sakuracloud Finished terraform-provider-sakuracloud ======================================== Everything done!
-
できたスキーマ定義ファイルをインストール
$ mkdir -p ~/.terraform.d/schemas $ cp schemas/sakuracloud.json ~/.terraform.d/schemas
-
IntelliJ を再起動