Windows でWSL2 にtfenv を導入しTerraform のバージョン管理をする
パブリッククラウドのリソースのプロビジョニングなどを行うツール・Terraform で複数のバージョンを管理したいことはありませんか?今回はWindows のWSL2 にtfenv を導入しTerraform のバージョン管理を行う方法について説明します。

実施環境
WSL OS | Ubuntu-22.04 |
|---|---|
tfenv | 3.0.0-49-g39d8c27 |
前提条件
- WSL2 を導入済みであること
- Git がインストール済みであること
Windows にWSL を導入していない場合は以下ドキュメントを参考に導入してください。
WSL を使用して Windows に Linux をインストールする方法
tfenv とは
tfenv はプロビジョニングツール・Terraform で複数のバージョン管理を行えるツールです。個人でTerraform を利用する場合は良いですが、チームでTerraform を利用したり、複数のシステム (アプリケーション) を扱う場合、Terraform のバージョンを他のメンバーやシステムに合わせることもあります。その都度Terraform のバージョンをダウンロードして導入するのはとても面倒です。tfenv はコマンド操作でTerraform のバージョン切り替えや複数のバージョンを導入できるため、Terraform のバージョンを管理するのに便利です。
Windows でtfenv を導入するには
tfenv は現在Mac OS とLinux をサポートしており、Windows ではサポートされておりません。そのため、Windows でtfenv を利用したい場合はWSL のOS 内にtfenv を導入し利用する必要があります。試しにWindows 11 上にtfenv をダウンロードし環境変数を設定後に実行しましたが、tfenv の実行はできずどのアプリケーションで実行するかを聞かれるだけとなります。
事前準備
初めにtfenv の一部コマンドで必要となるunzip、curl を導入します。既に導入済みの方はこの手順をスキップして問題ありません。
# unzipをインストールする
sudo apt install unzip curltfenv の導入
unzip のインストールが完了したら、GitHub のtfenv をclone します。今回はホームディレクトリに .tfenv を配置し環境変数を設定する方法としますが、各々で設定しやすい場所に配置しても問題ありません。
# tfenvをダウンロード
git clone https://github.com/tfutils/tfenv.git ~/.tfenv
.profileにtfenvのPATHを通す
cat << 'EOF' >> ~/.profile
tfenv environmental variables
export PATH="$HOME/.tfenv/bin:$PATH"EOF
環境変数を反映
source ~/.profiletfenv 導入後、バージョン確認を行いtfenv のバージョンが表示されることを確認します。
# tfenvのバージョンを確認するtfenv -vtfenv のコマンドについて
tfenv のコマンドの使い方は以下のとおりになります。
tfenv <command> [<options>]tfenv のコマンドを確認したい場合は、「tfenv」のみで実行すると確認できます。
# tfenvのコマンドを確認する$ tfenvtfenv 3.0.0-49-g39d8c27Usage: tfenv <command> [<options>]
Commands: install Install a specific version of Terraform use Switch a version to use uninstall Uninstall a specific version of Terraform list List all installed versions list-remote List all installable versions version-name Print current version init Update environment to use tfenv correctly. pin Write the current active version to ./.terraform-version各コマンドの使い方は以下の通りとなります。
tfenv install
指定したTerraform のバージョンをインストールします。バージョン部分に「latest」を指定すると最新の安定版をインストールします。
# Terraform v1.6.6をインストールするtfenv install 1.6.6
Terraformの最新の安定版をインストールする
tfenv install latesttfenv use
デフォルトで利用するTerraform のバージョンを設定します。tfenv はTerraform をインストールだけではデフォルトのTerraform を設定しないため、install コマンド実行後はuse コマンドで設定を行うようにしてください。
# Terraform v1.6.6をデフォルトに設定するtfenv use 1.6.6デフォルトのTerraform バージョンを初期化したい場合は「.tfenv/version」に記載されているバージョンを削除すると初期化されます。
tfenv uninstall
指定したTerraform のバージョンをアンインストールします。
# Terraform v1.6.6をアンインストールするtfenv uninstall 1.6.6tfenv list
ローカルPC 上にインストールされているTerraform のバージョンを確認します。バージョンの左側に「*」が表示されているバージョンがデフォルトのバージョンとなります。
# ローカルPC上にインストールされているTerraformのバージョンを確認するtfenv listtfenv list-remote
現在インストール可能なTerraform のバージョンをインターネットから取得します。バージョン取得にはcurl を利用しているため、curl がインストールされていない場合屋インターネットに接続できない状態の場合はコマンドが失敗します。
# 現在利用可能なTerraformの全てのバージョンを確認するtfenv list-remote
特定のバージョンに一致する利用可能なTerraformのバージョンを確認する
実行例は1.6.x系で利用可能なものを確認する
tfenv list-remote | grep "^1.6"tfenv version-name
現在のTerraform のバージョンを表示します。tfenv list と違い現在のバージョンのみ表示します。
# 現在のTerraformのバージョンを表示するtfenv version-nametfenv init
「.tfenv/bin」を環境変数PATH に追加します。
# tfenvの実行ファイルを環境変数・PATHに追加するtfenv inittfenv pin
デフォルトで設定されているバージョンを「.terraform-version」に書き込みます。「.terraform-version」にバージョンを記載している場合、記載されたバージョンを優先して利用します。
# デフォルトのバージョンを.terraform-versionに書き込むtfenv pinまとめ
- tfenv はTerraform で複数のバージョンのインストール、切り替えができるツール
- tfenv はMac OS とLinux でのみサポートされているため、Windows で利用する場合はWSL への導入が必要となる
