今まで 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 にアナウンスがあったのかな? 知らなかった。

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 が正解っぽかったです。