tfenvでTerraformのバージョンを管理する

皆さん、こんにちは。技術開発グループのn-ozawanです。
WBC日本優勝!おめでとうございます!

本題です。
クラウド環境の構築に利用されるIaCとしてTerraformは有名ですね。そのTerraformのバージョンを管理するツールとしてtfenvがあります。今回はそのtfenvについてのお話です。

tfenvとは?

tfenvはTerraformのバージョンを管理するツールです。複数のプロジェクトで、それぞれで異なるバージョンを利用している場合、バージョン管理が必要になります。もちろん、tfenvを使わなくてもTerraformをインストールすることは可能なのですが、tfenvを使えばバージョンの切り替えなどが楽になるのでお勧めです。

インストール手順

tfenvなのですが、残念ながらWindowsには対応しておらず、macOSかLinuxのどちらかになります。なのでWindowsユーザーはWSLを利用してtfenvをインストールします。

$ git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
$ echo 'export PATH=$PATH:$HOME/.tfenv/bin' >> ~/.bashrc
$ source ~/.bashrc

tfenvでTerraformのインストールするにはunzipをインストールしておく必要があります。

$ sudo apt-get update
$ sudo apt-get install zip

これにてtfenvを使用する準備は完了しました。

チートシート

Terraformをインストールする

$ tfenv install 0.7.0            # ver 0.7.0 をインストールする
$ tfenv install latest           # 最新バージョンをインストールする
$ tfenv install latest:^0.8      # 正規表現`^0.8`に合致する最新バージョンをインストールする
$ tfenv install latest-allowed   # Terraformのrequired_versionから、最新バージョンをインストールする
$ tfenv install min-required     # Terraformのrequired_versionから、最低バージョンをインストールする

Terraformをアンインストールする

$ tfenv uninstall 0.7.0
$ tfenv uninstall latest
$ tfenv uninstall latest:^0.8

使用するバージョンを指定する

$ tfenv use min-required
$ tfenv use 0.7.0
$ tfenv use latest
$ tfenv use latest:^0.8

インストールしたバージョンを確認する

$ tfenv list

インストール可能なバージョンを確認する

$ tfenv list-remote

そのプロジェクトで使用するバージョンを指定しておく

プロジェクトルートに.terraform-versionというファイルを配置して、そこに使用するTerraformのバージョンを記述することで、そのバージョンを優先して利用することが出来ます。.terraform-versionファイルを活用することで、「人によって使っているTerraformのバージョンが違う!」という問題を回避することが出来ます。

$ echo 1.3.5 > .terraform-version
$ tfenv install     # ver 1.3.5 がインストールされる
$ tfenv use         # ver 1.3.5 を使用する

$ echo 1.2.9 > .terraform-version
$ tfenv install     # ver 1.2.9 がインストールされる
$ tfenv use         # ver 1.2.9 を使用する

おわりに

tfenvのようなバージョン管理ツールは、プロジェクト毎に初期化された端末が貸与される現場では、常に扱うバージョンが固定になりがちなので、あまり恩恵は感じないと思います。しかし、1台の端末で複数のプロジェクトにかかわる場合には、その恩恵を受けれると思いますので、バージョン管理ツールを使ってインストールしてみてください。

ではまた。

採用情報

「チームアイオス」入団者募集

〜就活で悩むアナタに来て欲しい〜