tfenvとは
tfenv は rbenvやpyenvのようにTerraformのバージョンを切り替えられるツール。
好きなバージョンをインストールして切り替えたり、.terraform-version
ファイルを配置して
指定フォルダ以下のTerraformのバージョンを固定したりできる。
インストール
Macの場合はHomebrewでインストールできる。
$ brew install tfenv
使い方
インストール可能なバージョンの確認 (tfenv list-remote)
インストール可能なバージョンはtfenv list-remote
コマンドで確認できる。
$ tfenv list-remote
1.7.0-alpha20231130
1.7.0-alpha20231108
1.7.0-alpha20231025
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
...
terraformのインストール (tfenv install)
tfenv install
コマンドでインストールできる。
$ tfenv install 1.6.5
##############################
...
Installation of terraform v1.6.5 successful. To make this your default version, run 'tfenv use 1.6.5'
terraformのバージョンを切り替える (tfenv use)
tfenv use
コマンドで切り替えられる。
$ tfenv use 1.6.5
Switching default version to v1.6.5
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: 1.6.5
インストール済みのバージョンの確認 (tfenv list)
tfenv list
コマンドでインストール済みのバージョンとデフォルトのバージョンを確認できる。
$ tfenv list
* 1.6.5 (set by /opt/homebrew/Cellar/tfenv/3.0.0/version)
1.3.7
1.2.8
インストール済みのバージョンの一覧を表示している。*
が付いているのがterraform use
で指定したデフォルトのバージョン。
後述の.terraform-version
ファイルを作成するとそのディレクトリ以下ではそのバージョンのTerraformが使われるようになる。
$ cat .terraform-version
1.3.7
$ tfenv list
1.6.5
* 1.3.7 (set by /Users/sue/work/blog/suer-til-blog.atsum.in-infra/.terraform-version)
1.2.8
デフォルトのバージョンの確認 (tfenv version-name)
現在利用しているバージョンはtfenv version-name
コマンドで確認できる。
$ tfenv version-name
1.6.5
terraformのアンインストール (tfenv uninstall)
tfenv uninstall
コマンドでアンインストールできる。
$ tfenv uninstall 1.6.5
ディレクトリ以下でTerraformのバージョンを固定する
.terraform-version
.terraform-version
ファイルを設置し、内容としてバージョン番号を書くとそのディレクトリ以下ではそのバージョンのTerraformを使うようになる。
$ cat .terraform-version
1.3.7
$ terraform version-name
$ terraform --version 00:09:56
Terraform v1.3.7
on darwin_arm64
Your version of Terraform is out of date! The latest version
is 1.6.5. You can update by downloading from https://www.terraform.io/downloads.html
コマンドで.terraform-versionを作成する
tfenv pin
コマンドで.terraform-version
ファイルを作成できる。
$ tfenv pin
Pinned version by writing "1.6.5" to /Users/sue/work/blog/suer-til-blog.atsum.in-infra/.terraform-version
$ cat .terraform-version
1.6.5
.terraform-versionを更新すると必要なバージョンのTerraformを自動でインストールする
.terraform-versionを編集すると次のTerraformコマンドの実行からそのバージョンのTerraformが実行される。
このとき指定したバージョンのTerraformがインストールされていない場合は自動でインストールされる。
$ cat .terraform-version
1.7.0-alpha20231130
$ terraform plan
version '1.7.0-alpha20231130' is not installed (set by .../.terraform-version). Installing now as TFENV_AUTO_INSTALL==true
Installing Terraform v1.7.0-alpha20231130
Downloading release tarball from https://releases.hashicorp.com/terraform/1.7.0-alpha20231130/terraform_1.7.0-alpha20231130_darwin_arm64.zip
################################################################################################################################################################################################# 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/1.7.0-alpha20231130/terraform_1.7.0-alpha20231130_SHA256SUMS
Not instructed to use Local PGP (/opt/homebrew/Cellar/tfenv/3.0.0/use-{gpgv,gnupg}) & No keybase install found, skipping OpenPGP signature verification
Archive: /var/folders/cg/fbt676qs6c52jd7md724ln7w0000gn/T/tfenv_download.XXXXXX.toFLjPI5Hb/terraform_1.7.0-alpha20231130_darwin_arm64.zip
inflating: /opt/homebrew/Cellar/tfenv/3.0.0/versions/1.7.0-alpha20231130/terraform
Installation of terraform v1.7.0-alpha20231130 successful. To make this your default version, run 'tfenv use 1.7.0-alpha20231130'
...
Terraformのコードをチームで共有している場合、.terraform-version
ファイルを含めておけばチームメンバーの環境でも自動でインストールされる。