MacにTerraform + tfenvをインストールする
M1 MacでTerraform + tfenvをインストールしたメモです。
環境
機種 : MacBook Pro 2021(M1 Max)
キーボード : USキーボード
OS : Monterey(12.2.1)
Terraformをインストールする
公式のHomebrew on OS X
を参考にインストールします。
$ brew tap hashicorp/tap
ちなみにここで使っているbrew tab
ってなんぞ?と思い調べてみました。
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をインストールしていきます。
$ 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をインストールしていると出てしまうようです。
エラー文のコマンドを実行します。
$ 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
に設定を追記します。
# 追記
alias tf 'terraform'
変更を反映します。
$ source ~/.config/fish/config.fish
使えるか確認します。
$ tf --version
Terraform v1.2.6
on darwin_arm64
使えてますね。
ちなみに、zshの場合は~/.zshrc
に設定を追記するようです。
.tfの整形をtfmtで使えるようにする
長いのと、オプションで-recursive
をつけて、サブディレクトリも整形したいのでtfmtで使えるようにします。
# 追記
alias tfmt 'terraform fmt -recursive'
$ source ~/.config/fish/config.fish
使えるか確認します。
$ tfmt ./
Discussion