■ はじめに
https://dk521123.hatenablog.com/entry/2023/04/05/000224
でも書いたが、 Terraformはバージョンごとに動かすみたいなことが必要になってくるので バージョンごとに管理できる tfenv について、まとめてみた。
補足:バージョン管理の別方法について
* tfenv とは、別に asdf ってゆーのもあるらしい、、、
asdf ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/01/17/180212
目次
【1】tfenv 【2】利用目的 【3】サポートOS 1)補足:Windowsに関して 【4】主な機能 【5】環境設定 【6】主なコマンド 1)tfenv list-remote 2)tfenv install 3)tfenv use 4)tfenv list 【7】「.terraform-version」ファイルについて 1)ディレクトリごとにバージョン切替
【1】tfenv
* 環境上に 色々な Terraform の バージョンをインストールできるコマンドツール
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
【2】利用目的
* Terraform において、一度適応したバージョンより新しいバージョンでしか 適用することができない => 複数で開発していた場合、古いバージョンを使っているメンバーは terraform apply できない事態が発生する => tfenv を使うと、同じPCで複数のTerraform バージョンを切り替えて 使用することができる
【3】サポートOS
https://github.com/tfutils/tfenv#support
* Linux * Mac
1)補足:Windowsに関して
* 昔は、Windows + Git bash で使えていたっぽいが 現状(2024/01/26)は、「tfenv install <VERSION>」でエラーになり つかなかった(回避方法はあるかもしれないが)
エラー内容
$ tfenv install latest Installing Terraform v1.6.6 Downloading release tarball from https://releases.hashicorp.com/terraform/1.6.6/terraform_1.6.6_windows_amd64.zip ######################################################################## 100.0% Downloading SHA hash file from https://releases.hashicorp.com/terraform/1.6.6/terraform_1.6.6_SHA256SUMS Not instructed to use Local PGP (/c/Users/user/.tfenv/use-{gpgv,gnupg}) & No keybase install found, skipping OpenPGP signature verification shasum: /dev/fd/63: No such file or directory SHA256 hash does not match!
【4】主な機能
[1] 複数バージョンのTerraform バイナリの管理 [2] コマンドベースでのTerraform バージョンの切替 [3] 「.terraform-version」ファイルによるディレクトリ内での優先利用設定 => 詳細は、後述「【5】「.terraform-version」ファイルについて」を参照
【5】環境設定
https://github.com/tfutils/tfenv#manual
Step1: tfenv の ソースをクローンする
git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
Step2: .bash_profile に Path 情報を追加
# Bash # echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile # For WSL echo 'export PATH=$PATH:$HOME/.tfenv/bin' >> ~/.bashrc
Step3: 反映および確認
source ~/.bash_profile # To confirm tfenv --version # e.g. tfenv 3.0.0
【6】主なコマンド
1)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 ...
2)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
3)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
4)tfenv list
* インストールしたバージョンを一覧表示
コマンド例
tfenv list
【7】「.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
参考文献
https://qiita.com/kamatama_41/items/ba59a070d8389aab7694
https://zenn.dev/mihohoi/articles/4e15a098a08c25
関連記事
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
asdf ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/01/17/180212