Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraformのバージョン管理を劇的に快適に!「tenv」のインストールから使い方まで解説

Last updated at Posted at 2025-03-19

皆様Terraformを利用されていますでしょうか。

私もAWSエンジニアとして、よく利用していますが、その中でもTerraformのバージョンの切り替えツールとして「tenv」というものがあります。

今回は、「tenv」について紹介&解説していきたいと思います。

1. はじめに

Terraformのバージョン管理の重要性

Terraformを利用する場合、非常に重要なことの1つとして、「バージョンを揃えて開発する」ということがあげられます。

例えば、Terraformの以下の2つのバージョンについて比較してみます。

  • v1.5.0 # 2023年6月12日にリリース
  • v1.11.0 # 2025年2月27日にリリース

Terraformは非常に開発が盛んであり、上記のバージョン間の1年半の間には、様々な機能アップデートがなされています。

  • importブロックの追加(v1.5.0)
  • terraform testコマンドの追加(v1.6.0)
  • ephemeral リソースの追加(v1.10.0)
  • S3単体でのステートロック機能がGA(v1.11.0)
    ・・・

これらの機能はコード上で表現されるため、(当たり前かもしれませんが)v1.11.0でリリースされた機能はv1.5.0で利用しようとすると、エラーが起こってしまいます。
またそれぞれのバージョンで、非互換なアップデートが入ることもあります。

そのため、Terraformでは、利用できるTerraformバージョンを固定する方法として、terraformブロック内にrequired_versionという属性を持っています。

terraform {
 required_version = ">= 1.11.0"  # 1.11.0 以上に固定
}

これで万事解決!

かと思いきや、落とし穴があります。

例えば、

  • Terraformの新機能を試したい
  • 別の案件では、Terraform v1.9.0を利用しているので、揃えてほしい
  • 特定バージョンでの致命的なバグが見つかったため、マイナーバージョンをあげる必要がある

こういったときに、都度Terraformをインストールするのではなく、簡単にバージョン切り替えできるツールがtenvです。

tenvとは何か

tenvは、Terraformのバージョンを簡単にインストール・管理・切り替えできるツールです。

tenv を活用することで、システム全体に影響を与えることなく、異なるバージョンのTerraformをスムーズに切り替えることができます。

またTerraformだけでなく、以下のツールについても統合してバージョンのインストール・管理・切り替えが可能です。

  • OpenTofu
  • Terragrunt
  • Atmos

tfenvとの違い

tfenvも同様に、Terraformのバージョンを簡単にインストール・管理・切り替えできるツールです。

tfenvは以前広く利用されていましたが、Bashスクリプトで実装されており、Windows環境での利用が制限されていました。 ​(tenvはGo言語で実装されており、様々なプラットフォームで利用可能)
また、開発も2023年末で停止状態であり、現在はtenvでのバージョン切り替えがメジャーになりつつあります。

2. tenvのインストール

tenvのインストールについて説明します。

対応環境

2025年3月8日時点

  • MacOS
  • Windows
  • Arch Linux
  • Alpine Linux
  • Linux
  • Ubuntu
  • NixOS

事前準備

go言語のインストールが必要です。
今回は他記事に任せます。

MacOSでのGoインストール

WindowsでのGoインストール

LinuxでのGoインストール

最終的に以下コマンドを実行し、バージョン情報が出ればインストール完了です。

> go version
go version go1.23.5 windows/amd64

インストール方法

Windows

Chacolatey、Scoop、Nixが利用可能です。

Chocolatey による tenv インストール:

choco install tenv

Scoop による tenv インストール:

scoop install tenv

Nix パッケージ マネージャーによる tenv インストール:

nix-env -i tenv

MacOS

HomeBrewによる tenv インストール

brew install tenv

Linux

snap install tenv

手動インストール(バイナリダウンロード)

Windowsでのやり方を解説していきます。

1.以下URLにアクセス

2.tenv_v4.2.4_Windows_x86_64.zipをクリックし、ローカルにダウンロードし解凍
image.png

3.PATHを設定
image.png

以下コマンドで設定する場合、

# インストール先ディレクトリを作成
$basePath = 'C:\terraform\'
mkdir $basePath

# 最新バージョンをダウンロード
$uri = 'https://github.com/tofuutils/tenv/releases/download/v4.2.0/tenv_v4.2.0_Windows_x86_64.zip'
Invoke-WebRequest -Uri $uri -OutFile './tenv_windows_x86_64.zip'
# 解凍
Expand-Archive -LiteralPath './tenv_windows_x86_64.zip' -DestinationPath $basePath

# ダウンロードしたzipを削除
Remove-Item -LiteralPath './tenv_windows_x86_64.zip'

# 環境変数に保存
[Environment]::SetEnvironmentVariable('PATH', [Environment]::GetEnvironmentVariable('PATH', 'User') + ";C:\tofuutils\tenv\", 'User')

最終的に以下コマンドを実行し、バージョン情報が出ればインストール完了です。

> tenv --version
tenv version v4.2.4

3. tenvの基本的な使い方

特定バージョンのインストール(1.10.0の場合)

> tenv tf 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_windows_amd64.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\versionで指定されているバージョンがインストールされます。
.\tenv\Terraform\versionが存在しない場合、最新バージョンがインストールされます。

インストール済みバージョンの確認

> tenv tf list
  1.10.0 (never used)

インストール可能なバージョンの確認

tenv tf list-remote
Fetching all releases information from https://releases.hashicorp.com/terraform/index.json
0.1.0
0.1.1

・
・
・


1.11.0
1.11.1
1.12.0-alpha20250213

バージョンの切り替え

> tenv tf use 1.10.0
Written 1.10.0 in C:\Users\user\.tenv\Terraform\version

TENV_AUTO_INSTALL=trueに環境変数を設定すると、useコマンド実行時に該当バージョンがインストールされていない場合、自動インストールすることができます

バージョンのアンインストール(1.9.0の場合)

tenv tf uninstall 1.9.0

tfの部分を変更することで、以下のツールにもtenvを利用可能です。
tofu - OpenTofu
tg - Trragrunt
at - atmos

7. まとめ

Terraformのバージョン管理は、プロジェクトの安定性と開発の効率化に直結します。
tenv を利用すれば、複数のTerraformバージョンを簡単に管理でき、非常に便利です。
Terraformを日常的に扱うエンジニアなら、ぜひ導入してみてください!

8. 参考資料

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

ymrl、Masanobu Naruse, Takeshi Kano, Junichi Ito, uhyo, Hiroshi Tokumaru, MinoDriven, Minorun, Hiroyuki Sakuraba, tenntenn, drken, konifar

View event details
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?