🎉

tfenv: ローカルのTerraformバージョンを管理する

2024/01/24に公開

大抵のプログラム言語にはxenvという、プログラム言語のランタイム環境を複数バージョン扱えるようにするためのツールが存在する。

Javaだとjenv、JavaScriptだとnodenv、Pythonはpyenv、Goはgoenvといったように、様々な言語でxenvが用意されているが、Terraformにも同様にtfenvというツールが提供されている。

xenvは設定方法や操作方法が似通っていて、かつランタイムのバージョンのインストールや切り替えをコマンド1つで行えることから、プログラム言語だけでなくTerraformのバージョンもtfenvで管理することをおすすめしたい。

インストール

tfenvの導入はMacのhomebrewユーザの場合、以下のコマンドを発行するだけでよい。

$ brew install tfenv

その他のインストール手順はこちら

tfenvがインストールされたら、インストール可能なTerraformのバージョンを一覧表示して、使いたいバージョンのインストールを行う。

# インストール可能なTerraformのバージョンを表示
$ tfenv list-remote
# 1.6.6バージョンのTerraformをインストール
$ tfenv install 1.6.6
# ローカルで使用するTerraformを1.6.6に切り替え
$ tfenv use 1.6.6
# terraformコマンドが利用できることを確認
$ terraform version
Terraform v1.6.6
...

以上の手順だけでTerraformのインストールが完了する。

Terraformのバージョンアップ手順

最近Terraformのバージョン1.7がリリースされ、Mockを使いたいのでTerraformのバージョンアップを行う必要が出てきた。

Terraformのバージョンアップ手順は以下のようになる。

1. 目当てのバージョン1.7があることを確認してインストール

$ tfenv list-remote
$ tfenv install 1.7.5
$ tfenv use 1.7.5
$ terraform version
Terraform v1.7.5
...

2. terraformブロックのrequired_versionを変更

Terraformのバージョンを変更したらterraformブロックのrequired_versionも変更する必要がある。

$ vi /path/to/terraform.tf
terraform {
  required_providers {
    ...
  }
  ...
  # ~> 1,7でもいいかもしれないが、個人的には完全固定派
  required_version = "1.7.5"
}

3. terraform initの実行

あとはTerraformのリソースが置かれているルートフォルダ直下でterraform initを実行して、エラーが発生しなければバージョンアップは完了となる。

その他にもCIやテストなどで使用しているTerraformのバージョンがあれば、そちらも新しいバージョンに揃える必要がある。

以上がtfenvの導入、運用手順となる。

追記

Mockを使いたい

数ヶ月後、当面不要と判断。

https://zenn.dev/erueru_tech/articles/f6e3985e0c7c45

Discussion