それでも気分は高専生

元高専生が自分のやってきたことを記事として残すためのてきとーなブログ

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 ディレクトリがあると、そこのバイナリファイルを優先的に使うらしい

www.terraform.io

更なる問題

ここで一つ問題が...

terraform-provider-templateのバイナリが大きすぎて、githubリポジトリに載せられないらしい。

provider_installation.network_mirrorを設定してやれば、自分でビルドしたバイナリをS3でホストしてそこから持ってくる...なんてこともできるかもしれない。

今日は疲れたので切り上げる。

後日

$HOME/.terraform.d/plugins に置けば全然問題なかった。