tfenvを使ってTerraformのバージョンを切り替える
目次
インフラエンジニアの寺岡です。
今回はtfenvでTerraformのバージョンを切り替える方法をご紹介します。
1.tfenvとは
tfenvは実行するTerraformのバージョンをCLIで切り替えることが出来るツールです。
名前が似ているので気づいた方もいるかもしれませんが
rbenvにインスパイアされて作られています。
今はalphaの状態ですが、近いうちにTerraformの0.12がリリースされてHCLの書式が大幅に変わるので
今のうちにtfenvでいつでもバージョンを切り替えられるようにしておいたほうが便利かもしれません。
2.tfenvのインストール
githubからcloneしてパスを通します。
$ git clone https://github.com/tfutils/tfenv.git ~/.tfenv $ echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile $ source ~/.bash_profile
3.tfenvの使い方
コマンド一覧
$ tfenv tfenv 0.6.0-16-g4475b71 Usage: tfenv <command> [<options>] Commands: install Install a specific version of Terraform use Switch a version to use uninstall Uninstall a specific version of Terraform list List all installed versions list-remote List all installable versions
インストール(0.11)
$ tfenv install 0.11.11 [INFO] Installing Terraform v0.11.11 [INFO] Downloading release tarball from https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_linux_amd64.zip ######################################################################## 100.0% [INFO] Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_SHA256SUMS tfenv: tfenv-install: [WARN] No keybase install found, skipping GPG signature verification Archive: tfenv_download.s1KQnc/terraform_0.11.11_linux_amd64.zip inflating: /root/.tfenv/versions/0.11.11/terraform [INFO] Installation of terraform v0.11.11 successful [INFO] Switching to v0.11.11 [INFO] Switching completed
インストール済みバージョン一覧
$ tfenv list * 0.11.11 (set by /root/.tfenv/version)
ここまで実行してTerraformを実行すると
tfenvでインストールしたバージョンを利用することができます。
$ terraform --version Terraform v0.11.11
0.11ではなく0.12も試しに使ってみたいですよね。
バージョンを切り替えてみます。
インストール(0.12)
$ tfenv install 0.12.0-alpha4 [INFO] Installing Terraform v0.12.0-alpha4 [INFO] Downloading release tarball from https://releases.hashicorp.com/terraform/0.12.0-alpha4/terraform_0.12.0-alpha4_terraform_0.12.0-alpha4_linux_amd64.zip ######################################################################## 100.0% [INFO] Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.12.0-alpha4/terraform_0.12.0-alpha4_SHA256SUMS tfenv: tfenv-install: [WARN] No keybase install found, skipping GPG signature verification Archive: tfenv_download.gut3iL/terraform_0.12.0-alpha4_terraform_0.12.0-alpha4_linux_amd64.zip extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-aws_v1.40.0-6-gb23683732-dev_x4 extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-azurerm_v1.17.0-5-ga3b48ba3-dev_x4 extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-google_v1.19.1-3-g59efc8b9-dev_x4 extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-oci_v3.9.0-3-ga5859820-dev_x4 extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-null_v1.0.0-5-gf54ff98-dev_x4 extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-template_v1.0.0-5-g317c9c9-dev_x4 extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-random_v2.0.0-5-g612dff2-dev_x4 extracting: /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-local_v1.1.0-5-ga2df742-dev_x4 [INFO] Installation of terraform v0.12.0-alpha4 successful [INFO] Switching to v0.12.0-alpha4 [INFO] Switching completed
インストール済みバージョン一覧
$ tfenv list * 0.12.0-alpha4 (set by /root/.tfenv/version) 0.11.11
0.12が読み込まれているみたいなのでTerraformを実行してみます。
$ terraform --version Terraform v0.12.0-alpha4 (2c36829d3265661d8edbd5014de8090ea7e2a076)
切り替わっているみたいですね。
もちろん0.11に戻すことも可能です。
バージョン切り替え
$ tfenv use 0.11.11 [INFO] Switching to v0.11.11 [INFO] Switching completed $ terraform --version Terraform v0.11.11
その他、rbenvにも同様の機能がありますが
特定のディレクトリのみバージョンを変更することもできます。
変更したいディレクトリに「.terraform-version」というファイルを置きます。
バージョン切り替え(特定ディレクトリ)
$ tfenv list 0.12.0-alpha4 * 0.11.11 (set by /root/.tfenv/version) $ pwd /opt/tfenv-version-test $ echo 0.12.0-alpha4 > .terraform-version $ terraform version Terraform v0.12.0-alpha4 (2c36829d3265661d8edbd5014de8090ea7e2a076)
tfenv listで見ると0.11.11になっていますが
.terraform-versionがあるディレクトリは0.12.0が読み込まれていますね。
ディレクトリを一つ戻ってバージョンを見るともちろん0.11.11が読み込まれます。
$ cd ../ $ terraform version Terraform v0.11.11
4.まとめ
tfenvを使うとバージョンの切り替えがCLIから簡単に行えます。
- 新しいバージョンの試験導入と動作テスト
- 特定のバージョンに依存したプラグインの利用
というシーンで非常に活躍するのではないでしょうか。
Terraformの0.12の正式リリースが楽しみでなりません。
皆様も是非tfenvを使ってみてください!