macOS のパッケージ管理は Homebrew が主流だけど、terraform
については Homebrew で管理しないほうが良いと言う話です。以前は Homebrew 経由で入れていたけど、今は mise
を使って terraform
コマンドを管理しています。
きっかけ
仕事では IaC ツールとして Terrafom を採用していて、terraform plan
や terraform apply
は tfaction 経由で実行しているので、基本的に手元の環境で terraform
コマンドを実行する必要はありません。ただし、僕は手元で terraform plan
の結果をみたかったり、Terraform によって管理されているリソースの内容を確認するために terraform state
を実行することがあります。
そんな中であるとき terraform
がエラーを出力するようになったので、調べてみたところ、Terraform の state ファイルが手元の terraform のバージョンと互換性がないことが原因でした。
冒頭の文章からは terraform
を Homebrew で入れているように書かれているけど、このエラーに遭遇した時点では Homebrew で入れた tfenv
で terraform
のバージョンを管理していました。最近は *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 社の方針によって terraform
は OSS ライセンスから BUSL にライセンスが変更されたので、その影響らしいということがわかりました。
念の為、Homebrew の Formula を見に行くと予想通り、ライセンス変更の影響で 1.6.0 以上のバージョンは配布対象にいれないという内容のコメントがありました。また、インストール時やアップデート時に表示されるメッセージに BUSL ライセンスは homebrew/core のポリシーとして受け入れられないということが表示されるようでした。
なるほどねー、と思いつつ、terraform
は Homebrew で入れることは諦めて、mise
を使うことにしました。
おまけ
brew install
やbrew 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 install
や brew upgrade
、brew info
を実行したときのメッセージには注意しておく必要がありそうだなと思いました。個人的には新しく Homebrew で入れる時は brew info
で内容を確認しているので、そのときに気づけそうだなーと思っています。