Young Leaves

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 とは

tfutils/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 への導入が必要となる