今まで terraform provider のビルドには、terraform 自体をライブラリとして要求されました。今後は terraform-plugin-sdk を使います。
この PR で移行しました。
Migrate over to new terraform SDK by masutaka · Pull Request #16 · kristofferahl/terraform-provider-healthchecksio
※ https://healthchecks.io はバッチが時間通りに動いたかの監視で重宝しています。
仕事で使っている terraform-provider-heroku の v2.2.1 で知りました。
9/26 にアナウンスがあったのかな? 知らなかった。
The Terraform provider SDK has been extracted to a separate repo (and now is the “plugin SDK” 😉), and in true awesome TF fashion, the team built an automated migrator tool. https://t.co/TwmwAnVmlB This improves versioning and will enable us to build some new functionality.
— Mitchell Hashimoto (@mitchellh) September 25, 2019
https://www.terraform.io/docs/extend/plugin-sdk.html に従うだけで割と簡単です。tf-sdk-migrator という移行ツールが用意されています。
$ go get github.com/hashicorp/tf-sdk-migrator
$ go mod vendor
$ tf-sdk-migrator check
$ tf-sdk-migrator migrate
$ tf-sdk-migrator check
(snip)
exit status 1
build github.com/kristofferahl/terraform-provider-healthchecksio: cannot load github.com/hashicorp/terraform/helper/schema: open /Users/masutaka/src/github.com/kristofferahl/terraform-provider-healthchecksio/vendor/github.com/hashicorp/terraform/helper/schema: no such file or directory
go mod vendor しているのは、tf-sdk-migrator check で、このエラーに遭遇したからです。go-1.13 使っているんだけどなあ。よく分からない。
$ tf-sdk-migrator check
(snip)
Terraform version does not satisfy constraint >=0.12.7. Found Terraform version: 0.12.2
(snip)
go.mod に記載している Terraform のバージョンは 0.12.7 以上を要求されたため、アップデートを試みました。
まだ Go Modules でのライブラリアップデートを理解できておらず、go get の使い方でハマっていました…。
go get -u だと、依存先もアップデートしてしまい、go.mod に “// indirect” が大量に追加されます。そうではなくて go get github.com/hashicorp/terraform が正解っぽかったです。