Madogiwa Blog

主に技術系の学習メモに使っていきます。

Terraform Provider Herokuをv4系からv5系にアップグレードするMEMO🗒

Terraform v1系に対応したTerraform Provider Heroku v5がリリースされていたので個人のサービスをアップグレードしてみたので、その辺りの手順とかをメモ🗒

github.com

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'

成功したら以下のドキュメントに沿ってコードを修正していきます。

github.com

修正が完了したら以下のようにplanに無視できない差分が出ないことを確認し、applyします。

terraform plan
terraform apply

Terraform Cloudを使用していてplan時にバージョン差異的なエラーが発生した場合には以下のドキュメントを参考にTerraform Cloud側もTerraformのバージョンを変更します。

learn.hashicorp.com

terraform applyterraform refreshでも良いらしいがTerraform Cloud側の問題によりv0.12系だとterraform refreshが使えないっぽい(?) 🤔

github.com

とりあえず、上記のような手順で無事にアップデートできました🙌

参考

zenn.dev