2022年4月25日 星期一

Terraform - provider google version upgrade

起因是為了 resource google_redis_instance 要用到 replica 的功能...

根據 CHANGELOG 文件, provider google 需用 4.17.0 以上版本. (此時最新版是 v4.18.0)

在 versions.tf 裡面原本是這樣設定一個版本來用:
terraform { required_providers { google = { source = "hashicorp/google" version = "3.58.0" } } required_version = "~> 1.0.0" }
就把 version 改成 ">= 4.17.0" 順便把 required_version 也升級成 "~> 1.1.0" (此時 homebrew terraform 是 v1.1.9)
terraform { required_providers { google = { source = "hashicorp/google" version = ">= 4.17.0" } } required_version = "~> 1.1.0" }
-- 一般情況下來說, 這樣改完之後再執行 terraform init -upgrade 就會看到原本裝好的 provider google:
- Using previously-installed hashicorp/google v3.58.0
被更新中...
- Installing hashicorp/google v4.18.0... - Installed hashicorp/google v4.18.0 (signed by HashiCorp)
之後的 terraform init 動作就看到都是 v4.18.0
- Using previously-installed hashicorp/google v4.18.0
然後因為 provider 跨了大版本, 遇到 state file 格式變動, 還要再執行 terraform refresh 更新一遍. -- 但是實際上...
Initializing provider plugins... - Finding hashicorp/google versions matching ">= 2.12.0, >= 3.45.0, < 4.0.0, >= 4.17.0"...
然後 terraform init -upgrade 就抓不到能用的升級版本. 後來發現是在某個 resource 裡面有設定 version = "~> 3.0", 莫名其妙多出上面的 < 4.0.0 的條件卡關. 直接把這個改成 version = "~> 4.0" 跟著升級上去, terraform init -upgrade 版本條件就變成:
Initializing provider plugins... - Finding hashicorp/google-beta versions matching ">= 3.45.0, < 5.0.0"...
就有抓到可用版本(v4.18.0)升級上去了.

沒有留言:

張貼留言