tfswitchを使って使用するTerraformのバージョンを変更する
こんにちは。
前書き
Terrafrom を使って複数人で開発する場合、実行環境を合わせるためにTerraformのバージョンを制限している場合があります。
その場合、terraform
ブロック内でrequired_version = "~> 1.3.7"
のように指定するわけですが、このような制限の仕方の場合、1.3.x
系のバージョンで1.3.7
以上マイナーバージョンという制限になります。
今年3月に1.4
系がリリースされましたが、新しいバージョンでコードを書いたりしていると、先ほどのようなバージョン制限をかけた古いコードを実行したりしたいときにバージョン制限に引っかかりTerraformを実行できません。
バージョン制限を書き換えるのではなく、Terraformを一時的にバージョンダウンして実行できるようにするのが今回紹介するtfswitch
となります。
前提
今回はWindowsのWSL2のubuntuにインストールする前提で説明します。
ダウンロード
こちらからダウンロードできます。
インストールおよび実行
root
になるか、sudo
コマンドで下記を実行します。
curl -L https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh | bash
tfswitchを実行すると下記のような表示で、カーソルキーを使ってバージョンを選択できます。
sugiyama@K205-138:~$ tfswitch
Use the arrow keys to navigate: ↓ ↑ → ←
? Select Terraform version:
▸ 1.4.6
1.4.5
1.4.4
1.4.3
↓ 1.4.2
例えば1.3.9を選択するとそのバージョンのTerraformをダウンロードし、/usr/local/bin
に書き込みできないユーザーの場合ではホームディレクトリの下にbin
ディレクトリを作りそこにインストールします。
そのため、そのディレクトリにパスを通すように指示されます。
sugiyama@K205-138:~$ tfswitch
✔ 1.3.9
Unable to write to: /usr/local/bin/terraform
Creating bin directory at: /home/sugiyama/bin
Creating directory for terraform binary at: /home/sugiyama/bin
RUN `export PATH=$PATH:/home/sugiyama/bin` to append bin to $PATH
Downloading to: /home/sugiyama/.terraform.versions
19477757 bytes downloaded
Switched terraform to version "1.3.9"
/usr/local/bin
に書き込みできるユーザーの場合はこのようになります。
root@K205-138:/home/sugiyama# tfswitch
Creating directory for terraform binary at: /root/.terraform.versions
✔ 1.3.9
Downloading to: /root/.terraform.versions
19477757 bytes downloaded
Switched terraform to version "1.3.9"
指定したバージョンになっているか-v
オプションを付けて確認します。
sugiyama@K205-138:~$ terraform -v
Terraform v1.3.9
on linux_amd64
注意
/usr/local/bin
ディレクトリに書き込みできないユーザーでtfswitchをインストールする場合、tfswitchのインストール前にterrafromをインストールしていると/usr/local/bin
にあるterraform
コマンドが優先されるため、ホームディレクトリ以下のbin
ディレクトリにパスを通してあってもtfswitchで変更されたterrafromコマンドは実行されません。
tfswichインストール前にterrafromをアンインストールするか、実行するときはホームディレクトリ以下のbin
ディレクトリにあるterraform
コマンドを実行してください。
Discussion