tfenv: ローカルのTerraformバージョンを管理する
大抵のプログラム言語には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を使いたい
数ヶ月後、当面不要と判断。
Discussion