【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始!

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

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

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

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

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

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【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
15,927
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始いたします!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始いたします!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

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