💨

M1 MacにTerraform + tfenvをインストールする

2022/07/31に公開約2,800字

M1 MacでTerraform + tfenvをインストールしたメモです。

環境

機種 : MacBook Pro 2021(M1 Max)
キーボード : USキーボード
OS : Monterey(12.2.1)

Terraformをインストールする

公式のHomebrew on OS Xを参考にインストールします。

https://learn.hashicorp.com/tutorials/terraform/install-cli
$ brew tap hashicorp/tap

ちなみにここで使っているbrew tabってなんぞ?と思い調べてみました。

https://github.com/Homebrew/brew/blob/master/docs/Taps.md

100%正しい理解か怪しいですが、Homebrewがデフォルトで追跡しているパッケージ以外、つまりサードパーティのパッケージをインストールする場合に実行しなければならないコマンドのようです。

続いてbrew installしていきます。

$ brew install hashicorp/tap/terraform

$ brew upgrade hashicorp/tap/terraform

インストールできているか確認します。

$ which terraform
/opt/homebrew/bin/terraform

$ terraform --version
Terraform v1.2.6
on darwin_arm64

以上でterraformのインストールができました。簡単。

tfenvをインストールする

バージョン切り替えを簡単にできるように下記を参考にtfenvをインストールしていきます。

https://github.com/tfutils/tfenv
$ brew install tfenv
...
Error: Cannot install tfenv because conflicting formulae are installed.
  terraform: because tfenv symlinks terraform binaries

Please `brew unlink terraform` before continuing.

Unlinking removes a formula's symlinks from /opt/homebrew. You can
link the formula again after the install finishes. You can --force this
install, but the build may fail or cause obscure side effects in the
resulting software.

エラーが出てしまいました。。。

どうやら、tfenvの前にterraformをインストールしていると出てしまうようです。

https://kamatimaru.hatenablog.com/entry/2020/05/21/040106

エラー文のコマンドを実行します。

$ brew unlink terraform

もう一度実行でうまくいきました。

$ brew install tfenv

$ tfenv --version
tfenv 3.0.0

インストールできるバージョンを確認します。

$ tfenv list-remote

今回は最新の1.2.6と1つ前の1.2.5をインストールします。

$ tfenv install 1.2.6

$ tfenv install 1.2.5

利用バージョンを切り替えるにはtfenv use [バージョン]です。今回は1.2.6を利用してみます。

$ tfenv use 1.2.6

1.2.6が使えるか確認します。

$ tfenv list
* 1.2.6 (set by /opt/homebrew/Cellar/tfenv/3.0.0/version)
  1.2.5
  
$ terraform --version
Terraform v1.2.6
on darwin_arm64

これでtfenvのインストールもできました。

terraformコマンドをtfで使えるようにする

terraformって打つと長いですよね。tfで使えるようにします。僕のシェルはfishなので~/.config/fish/config.fishに設定を追記します。

~/.config/fish/config.fish
# 追記
alias tf 'terraform'

変更を反映します。

$ source ~/.config/fish/config.fish

使えるか確認します。

$ tf --version
Terraform v1.2.6
on darwin_arm64

使えてますね。
ちなみに、zshの場合は~/.zshrcに設定を追記するようです。

https://qiita.com/terufumi1122/items/1bbb1cf96e376e30e9fc#基本構文と設定の読み込み

.tfの整形をtfmtで使えるようにする

長いのと、オプションで-recursiveをつけて、サブディレクトリも整形したいのでtfmtで使えるようにします。

https://www.terraform.io/cli/commands/fmt#recursive
~/.config/fish/config.fish
# 追記
alias tfmt 'terraform fmt -recursive'
$ source ~/.config/fish/config.fish

使えるか確認します。

$ tfmt ./

Discussion

ログインするとコメントできます