created: 2020-12-20T00:37:05.000Z

[terraform] Error: Invalid legacy provider address

ひさしぶりに terraform をアップグレードしたら以下のようなエラーが出るようになった。

Error: Invalid legacy provider address This configuration or its associated state refers to the unqualified provider "aws". You must complete the Terraform 0.13 upgrade process before upgrading to later versions.

これは tfstate の形式が古くなっていて、v0.14 で読めなくなってしまったということらしい。 案内の通りに terraform を一度 v0.13 に戻す。

brew で入れていたので指定したバージョンにするのは少し面倒だった

$ brew info terraform
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
$ git log terraform.rb
$ git checkout c67b17cb80b042825f00f1768c422a1df637ad4b terraform.rb
$ brew unlink terraform
$ brew install terraform

v0.13だと問題なく通った

$ terraform init
$ terraform plan -out=tf-plan.out
$ terraform apply tf-plan.out

v0.13 で terraform apply すると、tfstate が新しい形式で更新されて v0.14 にあげてもこのエラーは出なくなるそうだ。

参考

数え方の辞典
[ad] 数え方の辞典
飯田 朝子, 町田 健 (単行本)