
普段 Terraform のバージョン管理ツールとして tfenv を使っている.機能面で困ることはないけど,tfenv の GitHub リポジトリを確認すると,直近数年は特にアップデートがなく,メンテナンスの観点で少し不安を感じていた💦
念のため tfenv の代替ツールを探しておこうと思って,tenv を試してみた❗️tenv は tfenv と同じように使えて,OpenTofu や Terragrunt もサポートしているという特徴がある.そして現在も活発に開発がされているようだった.tenv 以外だと tfswitch もあって少し試したけど,個人的には tenv が良さそうだった.
セットアップ
Homebrew で簡単にセットアップできる👌
$ brew install tenv $ tenv version tenv version 4.2.4
代表的なコマンドを試す
今回は Terraform サブコマンドを前提に試す❗️
tenv terraform list-remote コマンド
tenv terraform list-remote コマンドを使うとインストール可能な Terraform バージョンを確認できる.1.10 も 1.11 もある👌あと --stable オプションを付ければ alpha / beta / rc を除外できる.
$ tenv terraform list-remote | egrep ^1.10 1.10.0-alpha20240606 1.10.0-alpha20240619 1.10.0-alpha20240717 1.10.0-alpha20240730 1.10.0-alpha20240807 1.10.0-alpha20240814 1.10.0-alpha20240828 1.10.0-alpha20240911 1.10.0-alpha20240918 1.10.0-alpha20240926 1.10.0-alpha20241009 1.10.0-alpha20241023 1.10.0-beta1 1.10.0-rc1 1.10.0-rc2 1.10.0-rc3 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 $ tenv terraform list-remote --stable | egrep ^1.10 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 $ tenv terraform list-remote | egrep ^1.11 1.11.0-alpha20241106 1.11.0-alpha20241211 1.11.0-alpha20241218 1.11.0-alpha20250107 1.11.0-beta1 1.11.0-beta2 1.11.0-rc1 1.11.0-rc2
tenv terraform install コマンド
tenv terraform install コマンドを使うと指定した Terraform バージョンをインストールできる.バージョン指定を省略すると,ドキュメント(微妙に探しにくいけど README.md の Project binaries に書いてある)に載っている「バージョン解決順序」に沿って自動的に決まる💡
$ tenv terraform install 1.10.0 Installing Terraform 1.10.0 Fetching release information from https://releases.hashicorp.com/terraform/1.10.0/index.json Downloading https://releases.hashicorp.com/terraform/1.10.0/terraform_1.10.0_darwin_arm64.zip Downloading https://releases.hashicorp.com/terraform/1.10.0/terraform_1.10.0_SHA256SUMS Downloading https://releases.hashicorp.com/terraform/1.10.0/terraform_1.10.0_SHA256SUMS.sig Downloading https://www.hashicorp.com/.well-known/pgp-key.txt Installation of Terraform 1.10.0 successful
tenv terraform install コマンドと .terraform-version
tfenv で使っていた .terraform-version は引き続き使える👌たとえば以下のような .terraform-version を用意しておく.
1.10.2
そしてバージョン指定を省略して tenv terraform install コマンドを実行すると,自動的に 1.10.2 になる.
$ tenv terraform install Resolved version from /Users/kakakakakku/ghq/github.com/kakakakakku/sandbox-tenv/.terraform-version : 1.10.2 Installing Terraform 1.10.2 Fetching release information from https://releases.hashicorp.com/terraform/1.10.2/index.json Downloading https://releases.hashicorp.com/terraform/1.10.2/terraform_1.10.2_darwin_arm64.zip Downloading https://releases.hashicorp.com/terraform/1.10.2/terraform_1.10.2_SHA256SUMS Downloading https://releases.hashicorp.com/terraform/1.10.2/terraform_1.10.2_SHA256SUMS.sig Downloading https://www.hashicorp.com/.well-known/pgp-key.txt Installation of Terraform 1.10.2 successful
tenv terraform detect コマンド
tenv terraform detect コマンドを使うと現在のプロジェクトで使うべき Terraform バージョンを検出できる..terraform-version を用意したプロジェクトで実行すると 1.10.2 を検出できた.
$ tenv terraform detect Resolved version from /Users/kakakakakku/ghq/github.com/kakakakakku/sandbox-tenv/.terraform-version : 1.10.2 Terraform 1.10.2 will be run from this directory.
tenv terraform install コマンドと provider.tf
.terraform-version に latest-allowed と書いておくと,自動的に provider.tf などに実装されている required_version を参照して指定された範囲から最新を解決する.たとえば以下のような provider.tf を用意しておく.
terraform { required_version = "~> 1.10.0" }
そしてバージョン指定を省略して tenv terraform install コマンドを実行すると,自動的に 1.10.5(現時点の 1.10.x 最新)になる.
$ tenv terraform install Resolved version from /Users/kakakakakku/ghq/github.com/kakakakakku/sandbox-tenv/.terraform-version: latest-allowed Scan project to find IAC files Fetching all releases information from https://releases.hashicorp.com/terraform/index.json Found compatible version remotely : 1.10.5 Installing Terraform 1.10.5 Fetching release information from https://releases.hashicorp.com/terraform/1.10.5/index.json Downloading https://releases.hashicorp.com/terraform/1.10.5/terraform_1.10.5_darwin_arm64.zip Downloading https://releases.hashicorp.com/terraform/1.10.5/terraform_1.10.5_SHA256SUMS Downloading https://releases.hashicorp.com/terraform/1.10.5/terraform_1.10.5_SHA256SUMS.sig Downloading https://www.hashicorp.com/.well-known/pgp-key.txt Installation of Terraform 1.10.5 successful
tenv terraform list コマンド
tenv terraform list コマンドを使うとインストールした Terraform バージョンを一覧できる.今までの流れでインストールした3種類を確認できる👌
$ tenv terraform list 1.10.0 (never used) 1.10.2 (never used) 1.10.5 (never used)
tenv terraform use
tenv terraform use コマンドを使うと指定した Terraform バージョンを切り替えられる.デフォルトだとホームディレクトリにある ~/.tenv/Terraform/version に書き込むため,--working-dir オプションを指定すれば .terraform-version を更新できる.
$ tenv terraform use 1.10.5 --working-dir Written 1.10.5 in .terraform-version
まとめ
tfenv の代替ツールとして tenv を試してみた❗️同じように使えて,特にハマるところなく移行もできた.今後はまず個人プロジェクトから tenv を使っていこうかな〜と思う😀