🐥

tfswitchを使って使用するTerraformのバージョンを変更する

2023/05/24に公開

こんにちは。

前書き

Terrafrom を使って複数人で開発する場合、実行環境を合わせるためにTerraformのバージョンを制限している場合があります。
その場合、terraformブロック内でrequired_version = "~> 1.3.7"のように指定するわけですが、このような制限の仕方の場合、1.3.x系のバージョンで1.3.7以上マイナーバージョンという制限になります。
今年3月に1.4系がリリースされましたが、新しいバージョンでコードを書いたりしていると、先ほどのようなバージョン制限をかけた古いコードを実行したりしたいときにバージョン制限に引っかかりTerraformを実行できません。
バージョン制限を書き換えるのではなく、Terraformを一時的にバージョンダウンして実行できるようにするのが今回紹介するtfswitchとなります。

前提

今回はWindowsのWSL2のubuntuにインストールする前提で説明します。

ダウンロード

こちらからダウンロードできます。
https://github.com/warrensbox/terraform-switcher/tree/d7dfd1b44605b095937e94b981d24305b858ff8c

インストールおよび実行

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