使用IntelliJ的Terraform插件,可以通过自动补全功能来定义自定义提供商
在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
更新terraform-provider-sakuracloud
========================================
等待更新過程完成
所有提供者已更新
準備terraform-provider-sakuracloud
嚴重: 無法使用標注標籤來描述’36fd67475a6f3b9e53da8e9d45f579a37b1720d5’。
但是,存在未標記的標籤: 嘗試 –tags。
為terraform-provider-sakuracloud生成模式
完成terraform-provider-sakuracloud
========================================
全部完成!
安裝生成的模式定義文件
$ mkdir -p ~/.terraform.d/schemas
$ cp schemas/sakuracloud.json ~/.terraform.d/schemas
重新啟動IntelliJ
参考:文档支持自定义提供程序 #128