M1 Macでterraform-provider-awsを使おうとしたらなにもしていないのに壊れました
TL;DR
己でビルドせよ
発端
生まれて初めてのM1 MBPを手にした。
意気揚々といつも通りにTerraformを使おうとしたところ、何もしていないのに壊れた。
$ tf init │ Error: Incompatible provider version │ │ Provider registry.terraform.io/hashicorp/template v2.2.0 does not have a package available for your current platform, darwin_arm64. │ │ Provider releases are separate from Terraform CLI releases, so not all providers are available for all platforms. Other versions of this provider may have different platforms supported.
原因
terraform-provider-awsが依存しているterraform-provider-templateがアーカイブされてしまったそう。
定義は色々と書いてあるものの、要するにこんな感じ。
- 公開し続けるけど開発はストップするよ
- 結構昔にストップしたから、M1 Mac向けのバイナリは提供していないよ
- 使いたきゃ自分でビルドしな
ちなみにterraform-provider-aws自体はv3.30.0からM1 Mac向けのバイナリを提供しているみたい。
解決
# プロバイダをビルド $ ghq get https://github.com/hashicorp/terraform-provider-template.git $ cd ~/ghq/github.com/hashicorp/terraform-provider-template $ make build # ビルドしたプロバイダを配置 $ cd path/to/other/repository $ mkdir -p terraform.d/plugins/registry.terraform.io/hashicorp/template/2.2.0/darwin_arm64 $ cp $GOPATH/bin/terraform-provider-template terraform.d/plugins/registry.terraform.io/hashicorp/template/2.2.0/darwin_arm64/terraform-provider-template_v2.2.0x5
terraformコマンド実行時に
./terraform.d/plugins
ディレクトリがあると、そこのバイナリファイルを優先的に使うらしい
更なる問題
ここで一つ問題が...
terraform-provider-templateのバイナリが大きすぎて、githubのリポジトリに載せられないらしい。
provider_installation.network_mirrorを設定してやれば、自分でビルドしたバイナリをS3でホストしてそこから持ってくる...なんてこともできるかもしれない。
今日は疲れたので切り上げる。
後日
$HOME/.terraform.d/plugins に置けば全然問題なかった。