【導入実績300社以上】AWS 構築・運用保守サービス

【導入実績300社以上】AWS 構築・運用保守サービス

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【CPU】AMD EPYC 技術検証(PoC)サービス

【CPU】AMD EPYC 技術検証(PoC)サービス

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

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

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
8,800
facebook twitter はてなブックマーク

この記事をかいた人

About the author

寺岡佑樹

2016年ビヨンド入社、現在6年目のインフラエンジニア
MSPの中の人として障害対応時のトラブルシューティングを行いながら
AWSなどのパブリッククラウドを用いたインフラの設計/構築も行っている。
最近はDockerやKubernetesなどのコンテナ基盤の構築や
運用自動化の一環としてTerraformやPackerなどのHashicorpツールを扱うことが多く
外部の勉強会やセミナーで登壇するEvangelistの役割も担っている。

・GitHub
https://github.com/nezumisannn

・登壇経歴
https://github.com/nezumisannn/my-profile

・発表資料(SpeakerDeck)
https://speakerdeck.com/nezumisannn

・所有資格
AWS Certified Solutions Architect - Associate
Google Cloud Professional Cloud Architect