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 curl
tfenv の導入
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 ~/.profile
tfenv 導入後、バージョン確認を行いtfenv のバージョンが表示されることを確認します。
# tfenvのバージョンを確認する
tfenv -v
tfenv のコマンドについて
tfenv のコマンドの使い方は以下のとおりになります。
tfenv <command> [<options>]
tfenv のコマンドを確認したい場合は、「tfenv」のみで実行すると確認できます。
# tfenvのコマンドを確認する
$ tfenv
tfenv 3.0.0-49-g39d8c27
Usage: 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 latest
tfenv 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.6
tfenv list
ローカルPC 上にインストールされているTerraform のバージョンを確認します。バージョンの左側に「*」が表示されているバージョンがデフォルトのバージョンとなります。
# ローカルPC上にインストールされているTerraformのバージョンを確認する
tfenv list
tfenv 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-name
tfenv init
「.tfenv/bin」を環境変数PATH に追加します。
# tfenvの実行ファイルを環境変数・PATHに追加する
tfenv init
tfenv pin
デフォルトで設定されているバージョンを「.terraform-version」に書き込みます。「.terraform-version」にバージョンを記載している場合、記載されたバージョンを優先して利用します。
# デフォルトのバージョンを.terraform-versionに書き込む
tfenv pin
まとめ
- tfenv はTerraform で複数のバージョンのインストール、切り替えができるツール
- tfenv はMac OS とLinux でのみサポートされているため、Windows で利用する場合はWSL への導入が必要となる