どんな事でもお気軽にお問い合わせください
0120-803-656
24時間受付いたします

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を使ってみてください!


お問い合わせ 採用情報 エンジニアブログ
ISO27001認証
Contact PageTop
株式会社ビヨンド

© beyond Co., Ltd. All rights reserved.