【Terraform】Terraform ~ tfenv / バージョン管理 ~

■ はじめに

Terraform の本読んで勉強してて
tfenv がでてきたので、メモ。

目次

【1】tfenv
 1)何のため?
【2】主な機能
【3】環境設定
 1)サポートOS
 2)インストール
【4】主なコマンド
 0)tfenv list-remote
 1)tfenv install
 2)tfenv use
 3)tfenv list
【5】「.terraform-version」ファイルについて
 1)ディレクトリごとにバージョン切替

【1】tfenv

https://github.com/tfutils/tfenv#tfenv

Terraform version manager inspired by rbenv
【訳】Terraform バージョン管理。rbenvに感化された。

 => Python でいう pyenv みたいなもん。

仮想環境 ~ pyenv ~
https://dk521123.hatenablog.com/entry/2022/02/13/000000

1)何のため?

* Terraform において、一度適応したバージョンより新しいバージョンでしか
 適用することができない
 => 複数で開発していた場合、古いバージョンを使っているメンバーは
  terraform apply できない事態が発生する
 => tfenv を使うと、同じPCで複数のTerraform バージョンを切り替えて
  使用することができる

【2】主な機能

[1] 複数バージョンのTerraform バイナリの管理
[2] コマンドベースでのTerraform バージョンの切替
[3] 「.terraform-version」ファイルによるディレクトリ内での優先利用設定
 => 詳細は、後述「【5】「.terraform-version」ファイルについて」を参照

【3】環境設定

1)サポートOS

https://github.com/tfutils/tfenv#support

* Linux
* Mac

2)インストール

https://github.com/tfutils/tfenv#manual

git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
source ~/.bash_profile
# For WSL
# echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile
# source ~/.bashrc

# To confirm
tfenv --version
# e.g. tfenv 3.0.0

【4】主なコマンド

0)tfenv list-remote

* 使用可能なバージョンをリモートから取得して一覧表示

https://github.com/tfutils/tfenv#tfenv-list-remote

tfenv list-remote

1.5.0-alpha20230504
1.5.0-alpha20230405
1.4.6
1.4.5
...

1)tfenv install

* 指定したTerraform バージョンをインストール

https://github.com/tfutils/tfenv#tfenv-install-version

tfenv install
tfenv install 0.7.0
tfenv install latest
tfenv install latest:^0.8
tfenv install latest-allowed
tfenv install min-required

2)tfenv use

* 利用するバージョンを切り替え

https://github.com/tfutils/tfenv#tfenv-use-version
コマンド例

tfenv use
tfenv use min-required
tfenv use 0.7.0
tfenv use latest
tfenv use latest:^0.8

3)tfenv list

tfenv list

参考文献

https://qiita.com/kamatama_41/items/ba59a070d8389aab7694
https://zenn.dev/mihohoi/articles/4e15a098a08c25

【5】「.terraform-version」ファイルについて

* プロジェクトルートにファイル「.terraform-version」とを置いておくと
 そのファイルに書かれたバージョンを優先して利用する

1)ディレクトリごとにバージョン切替

mkdir project1
mkdir project2

# 「tfenv list-remote」で使用可能なバージョンを調べてもいい
echo 1.4.6 > .terraform-version
echo 1.1.1 > ./project1/.terraform-version
echo latest:^1.3.2 > ./project2/.terraform-version

# To check version for each directory
terraform --version
# 「Terraform v1.4.6」

cd project1
terraform --version
# Installされていなかったら、インストールする
# version '1.1.1' is not installed ...
# ...
# Terraform v1.1.1

cd ../project2
terraform --version
# version '1.3.2' is not installed ...
# ...
# Terraform v1.3.2

関連記事

Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ direnv / プロジェクト隔離 ~
https://dk521123.hatenablog.com/entry/2023/01/15/000000