概要
terraformでarm版で使えないproviderがあったので、M1 Macbookにamd版terraformをインストールを行い、tfenvで管理できるようにします。
amd版terraformをインストール
今回は1.3.9をダウンロードしたいので、こちらをダウンロードしていきます。
$ wget https://releases.hashicorp.com/terraform/1.3.9/terraform_1.3.9_darwin_amd64.zip
直接ダウンロードしたい場合は以下のURLをクリックすると、versionごとのterraformをダウンロードすることができるサイトに飛びます。
zipファイルがダウンロードされるので、こちらを解凍します。
$ unzip terraform_1.3.9_darwin_amd64.zip
一応実行してみると、amd版だと表示されます
$ ./terraform version
Terraform v1.3.9
on darwin_amd64
Your version of Terraform is out of date! The latest version
is 1.6.6. You can update by downloading from https://www.terraform.io/downloads.html
tfenvで管理する
上記でダウンロードしたamd版terraformだけでなく、arm版のterraformを使いたいケースがありました。
なのでamd版terraformをtfenvで管理するようにします。
tfenvは以下はApple silliconのMacbookの場合、/opt/homebrew/Cellar/tfenv/${tfenv version}/versions/
配下で異なるversionのterraformを管理しています。
自分の環境の場合は以下になります。
$ pwd
/opt/homebrew/Cellar/tfenv/3.0.0/versions
その場でlsを実行するとこれまでtfenvでインストールしたversionごとのterraformが見れます。
$ ls
1.0.10/ 1.1.0/ 1.2.0/ 1.5.4/
なのでこのディレクトリ内でamd版terraformのディレクトリを作成し、terraformのバイナリファイルを移動させればtfenvで管理することができます。
なのでこちらにディレクトリを作成します。
$ mkdir amd1.3.9
$ ls
1.0.10/ 1.1.0/ 1.2.0/ 1.5.4/ amd1.3.9/
この段階でtfenv list
を実行してみます。
$ tfenv list
1.5.4
1.2.0 (set by /opt/homebrew/Cellar/tfenv/3.0.0/version)
1.1.0
1.0.10
* amd1.3.9
まだterraformのバイナリファイルを移動させてきていませんが、この段階で表示させることができます。もちろんtfenv use
でamd1.3.9を指定すると、エラーになります。
$ tfenv use amd1.3.9
Version directory for amd1.4.0 is present, but the terraform binary is not! Manual intervention required.
ここで、amd版terraaformのバイナリファイルを移動させます。
mv ~/Desktop/test-terraform/terraform amd1.3.9
これで再度tfenv use
を実行します。
$ tfenv use amd1.3.9
Switching default version to vamd1.3.9
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: amd1.3.9
terraformのバイナリファイルを格納したことで、無事にtfenv use
が実行できました!
またterraformのversionも確認します。
$ terraform version
Terraform v1.3.9
on darwin_amd64
Your version of Terraform is out of date! The latest version
is 1.6.6. You can update by downloading from https://www.terraform.io/downloads.html
ダウンロードしたamd版であることが確認できました。
これでtfenvで管理することができるため、arm版とamd版のterraformを使い分けることができます。
終わりに
今回はかなり特殊な事例ですが、もし困っている方がいたら参考になればと思います。