Terraform v1系に対応したTerraform Provider Heroku v5がリリースされていたので個人のサービスをアップグレードしてみたので、その辺りの手順とかをメモ🗒
Terraform v1系、Terraform Provider Heroku v5系にアップグレード
Terraform Provider Heroku v5系はTerraform v1系に対応しているので.terraform-version
を以下に変更し、Terraform v1系の最新版を利用するようにします。
1.1.6
元々Terraform Provider HerokuはTerraform v0.12系に対応していたのをTerraform v1系に上げるにあたって、 providerのバージョンの指定方法も変更になっているようなのでそのあたりの修正を行います。
provider "heroku" { -- version = "4.6.0" } terraform { ++ required_providers { ++ heroku = { ++ source = "heroku/heroku" ++ version = "5.0.1" ++ } ++ }
以下のバージョンアップ後のProvierのインストール等を実行します。
terraform init --reconfigure
このときInvalid legacy provider address
のようなエラーが発生したら以下のコマンドを実行し、registryのパスを修正します。
terraform state replace-provider 'registry.terraform.io/-/heroku' 'registry.terraform.io/heroku/heroku'
成功したら以下のドキュメントに沿ってコードを修正していきます。
修正が完了したら以下のようにplan
に無視できない差分が出ないことを確認し、apply
します。
terraform plan terraform apply
Terraform Cloudを使用していてplan時にバージョン差異的なエラーが発生した場合には以下のドキュメントを参考にTerraform Cloud側もTerraformのバージョンを変更します。
terraform apply
はterraform refresh
でも良いらしいがTerraform Cloud側の問題によりv0.12系だとterraform refresh
が使えないっぽい(?) 🤔
とりあえず、上記のような手順で無事にアップデートできました🙌