背景
ZOZOではAWS以外のリソースは基本的にTerraformで管理しています。例えば、Datadogのアラートやダッシュボード、Sentry、PagerDutyなどです。
現状、それぞれのリソース作成に使用しているTerraformのバージョンが異なる状態になっているため、ローカルのPCでも複数のTerraformのバージョンを管理できるようにする必要があります。
そのような場合に役立つのがtfenvです。
tfenv入門
tfenvはTerraformのパッケージマネージャーです。複数のTerraformのバージョンを簡単に管理できます。
# ローカルで使用可能なバージョン一覧を表示する
~% tfenv list
* 1.3.9 (set by /opt/homebrew/Cellar/tfenv/2.2.3/version)
1.2.7
1.0.11
1.0.10
0.14.11
0.14.8
# ローカルのTerraformのバージョンを表示する
~% terraform version
Terraform v1.3.9
on darwin_arm64
# リモートでインストール可能なバージョン一覧を表示する
~% tfenv list-remote
1.7.0-alpha20231130
1.7.0-alpha20231108
1.7.0-alpha20231025
1.6.5
...
# 1.6.5をinstallする
~% tfenv install 1.6.5
Installing Terraform v1.6.5
Downloading release tarball from https://releases.hashicorp.com/terraform/1.6.5/terraform_1.6.5_darwin_arm64.zip
############################################################################################################################################################################################################################## 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/1.6.5/terraform_1.6.5_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive: /var/folders/th/xllm4jmn2_j5b2c6wxp4rg280000gn/T/tfenv_download.XXXXXX.UbWOfqKS/terraform_1.6.5_darwin_arm64.zip
inflating: /opt/homebrew/Cellar/tfenv/2.2.3/versions/1.6.5/terraform
Installation of terraform v1.6.5 successful. To make this your default version, run 'tfenv use 1.6.5'
# 1.6.5に切り替える
~% tfenv use 1.6.5
Switching default version to v1.6.5
Switching completed
# ローカルのTerraformのバージョンを表示する
~% terraform version
Terraform v1.6.5
on darwin_arm64
問題
本題です。
tfenvで 0.14.8
をinstallしようとしたところ、以下のエラーになりました。
$ tfenv install 0.14.8
Installing Terraform v0.14.8
Downloading release tarball from https://releases.hashicorp.com/terraform/0.14.8/terraform_0.14.8_darwin_arm64.zip
curl: (22) The requested URL returned error: 404
Tarball download failed
たしかに、出力されているURLにいってみると、該当のファイルは存在しませんでした。
https://releases.hashicorp.com/terraform/0.14.8/terraform_0.14.8_darwin_arm64.zip
原因は、armは1.0.2からの対応だからのようです。ローカルPCはM1 Macです。
https://reeases.hashicorp.com/terraform/1.0.2
ワークアラウンド
Terraformのバージョンを1.0.2に上げるのが根本的な解決ですが、 TFENV_ARCH=amd64
をつけてコマンドを実行することで、この問題を回避することができました。
$ TFENV_ARCH=amd64 tfenv install 0.14.8