M1 Macでtfenvを使うと特定のVersionのTerraformのダウンロードに失敗する
M1 Macでtfenvを使っていると特定のVersionのTerraformを使用できなかったので、対処法をレポートします。
tfenvとは
TerraformのVersion管理を簡単にするツールです。Terraformコマンドを実行するフォルダに.terraform-version
というファイルを作成し、中にVersionを記入しておくと、terraform init
時に自動的にそのVersionのTerraformをインストールしてくれ、使ってくれます。
M1 Macでダウンロードに失敗する
最近開発環境をM1 Macに変えました。
環境情報
- MacBook Pro (13-inch, M1, 2020)
- チップ: Apple M1
- OS: MacOS Big Sur (バージョン11.6.2)
すると、tfenvで特定のVersionのTerraformをダウンロードする際に失敗するようになりました。
% terraform init version '0.15.2' is not installed (set by /Users/kazue.masaki/project/201227-tfenv-onm1mac/.terraform-version). Installing now as TFENV_AUTO_INSTALL==true Installing Terraform v0.15.2 Downloading release tarball from https://releases.hashicorp.com/terraform/0.15.2/terraform_0.15.2_darwin_arm64.zip ##O=-# # curl: (22) The requested URL returned error: 403 Tarball download failed /Users/kazue.masaki/.anyenv/envs/tfenv/libexec/tfenv-exec: line 105: /Users/kazue.masaki/.anyenv/envs/tfenv/versions/0.15.2/terraform: No such file or directory /Users/kazue.masaki/.anyenv/envs/tfenv/libexec/tfenv-exec: line 105: exec: /Users/kazue.masaki/.anyenv/envs/tfenv/versions/0.15.2/terraform: cannot execute: No such file or directory
どうやら、v1.0.1まではARM版のバイナリが無く、エラーになるようです。ですがv1.0.1以前のVersionも使いたいですね。
対処方針
tfenvの特定のフォルダに手動でバイナリを入れておけば、以降は問題なくtfenvを使えます。かつ入れるバイナリはAMD版でも問題ないようです。
具体的な方法
私はanyenvを経由でtfenvを使っているので、tfenv実行パスは以下でした。
% which tfenv /Users/kazue.masaki/.anyenv/envs/tfenv/bin/tfenv
この場合、Terraformの各Versionのバイナリは以下にあります。
% ls ~/.anyenv/envs/tfenv/versions 0.14.5 0.14.9 0.15.0 1.0.11 1.0.2 1.1.0
この位置に所定のVersionのバイナリを配置します。
% mkdir ~/.anyenv/envs/tfenv/versions/0.15.2 && cd $_ % wget https://releases.hashicorp.com/terraform/0.15.2/terraform_0.15.2_darwin_amd64.zip --2021-12-27 22:13:58-- https://releases.hashicorp.com/terraform/0.15.2/terraform_0.15.2_darwin_amd64.zip releases.hashicorp.com (releases.hashicorp.com) をDNSに問いあわせています... 2a04:4e42:36::439, 151.101.229.183 releases.hashicorp.com (releases.hashicorp.com)|2a04:4e42:36::439|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 33511358 (32M) [application/zip] `terraform_0.15.2_darwin_amd64.zip' に保存中 terraform_0.15.2_darwin_amd64.zip 100%[=======================================================================================================>] 31.96M 84.7MB/s 時間 0.4s 2021-12-27 22:13:59 (84.7 MB/s) - `terraform_0.15.2_darwin_amd64.zip' へ保存完了 [33511358/33511358] % unzip terraform_0.15.2_darwin_amd64.zip Archive: terraform_0.15.2_darwin_amd64.zip inflating: terraform % rm terraform_0.15.2_darwin_amd64.zip
ここまでやればこのVersion(0.15.2)を使うことができます。
(terraform実行ディレクトリに移動) % terraform init Initializing the backend... Initializing provider plugins... Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. % terraform version Terraform v0.15.2 on darwin_amd64 Your version of Terraform is out of date! The latest version is 1.1.2. You can update by downloading from https://www.terraform.io/downloads.html
まとめ
M1 Macでtfenvで特定のTerraformのVersionのダウンロードに失敗する際の対処法についてご紹介しました。おそらくもっとちゃんとした解決方法があるのだと思いますし、AMD版で良いのかも疑問ですがが、一旦問題なく動いているので良しとします。詳しい方教えて下さい。