nabeo がピーしているブログ (仮)

どーも、nabeop です

terraform は Homebrew で管理しない方が良いという話

macOS のパッケージ管理は Homebrew が主流だけど、terraform については Homebrew で管理しないほうが良いと言う話です。以前は Homebrew 経由で入れていたけど、今は mise を使って terraform コマンドを管理しています。

きっかけ

仕事では IaC ツールとして Terrafom を採用していて、terraform planterraform apply は tfaction 経由で実行しているので、基本的に手元の環境で terraform コマンドを実行する必要はありません。ただし、僕は手元で terraform plan の結果をみたかったり、Terraform によって管理されているリソースの内容を確認するために terraform state を実行することがあります。

そんな中であるとき terraform がエラーを出力するようになったので、調べてみたところ、Terraform の state ファイルが手元の terraform のバージョンと互換性がないことが原因でした。

冒頭の文章からは terraform を Homebrew で入れているように書かれているけど、このエラーに遭遇した時点では Homebrew で入れた tfenvterraform のバージョンを管理していました。最近は *env 系のツールを使うことをやめて、mise に移行していたので、このことをきっかけに terraform のバージョンも mise に移行することにして、問題は解決しました。

このことがきっかけで気づいたこと

最初は terraform を複数のバージョンで切り替える必要はないので、Homebrew から直接入れることも検討したのですが、brew info terraform を実行したところ、インストールされる terraform のバージョンが 1.5.7 とかなり古く、以下のメッセージが表示されていました。

Deprecated because it changed its license to BUSL on the next release! It will be disabled on 2025-04-04.

HashiCorp 社の方針によって terraformOSS ライセンスから BUSL にライセンスが変更されたので、その影響らしいということがわかりました。

念の為、Homebrew の Formula を見に行くと予想通り、ライセンス変更の影響で 1.6.0 以上のバージョンは配布対象にいれないという内容のコメントがありました。また、インストール時やアップデート時に表示されるメッセージに BUSL ライセンスは homebrew/core のポリシーとして受け入れられないということが表示されるようでした。

なるほどねー、と思いつつ、terraform は Homebrew で入れることは諦めて、mise を使うことにしました。

おまけ

  • brew installbrew upgrade したときには Terraform のライセンス変更が原因で homebrew/core では新しいバージョンはインストールされないことが表示される
  • brew info terraform では 2025/4/4 以降は Homebrew では扱わなくなることが表示される

上記の2パターンでライセンス変更によって Homebrew で terraform を入れることは現実的ではないということが利用者にわかるようになっています。

ただし、2024/10/26 の時点で terraform info terraform で表示される Analytics を見ると、結構な数がインストールされているようでした。

==> Analytics
install: 7,615 (30 days), 24,119 (90 days), 122,044 (365 days)
install-on-request: 7,567 (30 days), 23,959 (90 days), 120,740 (365 days)
build-error: 3 (30 days)

インストール時に表示されるメッセージに気づいていれば、Homebrew で terraform を入れることが現実的ではないないと理解できるし、Homebrew によって入る terraform はかなり古いので比較的早く非互換な状態に気づけると思うので、実際にはインストールしたが最新版を入れることができるパッケージ管理ツールに乗り換えている可能性が高いと思っています。また、30日間、90日間、365日間のインストール数を比較するとここ数ヶ月くらいは Homebrew 経由で terraform をインストールされる数は減少傾向にあるようでした。

最近は OSS ライセンスから変更するケースが何回かあるので、Homebrew で管理するパッケージにも影響がありそうなので、brew installbrew upgradebrew info を実行したときのメッセージには注意しておく必要がありそうだなと思いました。個人的には新しく Homebrew で入れる時は brew info で内容を確認しているので、そのときに気づけそうだなーと思っています。