[Osaka/Yokohama/Tokushima] Looking for infrastructure/server side engineers!

[Osaka/Yokohama/Tokushima] Looking for infrastructure/server side engineers!

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Deployed by over 500 companies] AWS construction, operation, maintenance, and monitoring services

[Successor to CentOS] AlmaLinux OS server construction/migration service

[Successor to CentOS] AlmaLinux OS server construction/migration service

[For WordPress only] Cloud server “Web Speed”

[For WordPress only] Cloud server “Web Speed”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Cheap] Website security automatic diagnosis “Quick Scanner”

[Reservation system development] EDISONE customization development service

[Reservation system development] EDISONE customization development service

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Registration of 100 URLs is 0 yen] Website monitoring service “Appmill”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[Compatible with over 200 countries] Global eSIM “Beyond SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[If you are traveling, business trip, or stationed in China] Chinese SIM service “Choco SIM”

[Global exclusive service] Beyond's MSP in North America and China

[Global exclusive service] Beyond's MSP in North America and China

[YouTube] Beyond official channel “Biyomaru Channel”

[YouTube] Beyond official channel “Biyomaru Channel”

Switching Terraform versions using tfenv

My name is Teraoka and I am an infrastructure engineer.
This time, I will show you how to switch the Terraform version using tfenv.

1.What is tfenv?

tfenv is a tool that allows you to switch the running version of Terraform using the CLI.
Some of you may have noticed because the names are similar, but
it is inspired by
rbenv It is currently in alpha status, but Terraform 0.12 will be released in the near future and the HCL format will change significantly, so
it may be convenient to be able to switch versions at any time with tfenv now.

2.Installing tfenv

Clone from github and pass the path.

$ git clone https://github.com/tfutils/tfenv.git ~/.tfenv $ echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile $ source ~/. bash_profile

3. How to use tfenv

Command list

$ 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

Installation (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

List of installed versions

$ tfenv list * 0.11.11 (set by /root/.tfenv/version)

If you run Terraform after completing this step,
you will be able to use the version installed with tfenv.

$ terraform --version Terraform v0.11.11

I would like to try using 0.12 instead of 0.11.
I'll try switching the version.

Installation (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

List of installed versions

$ tfenv list * 0.12.0-alpha4 (set by /root/.tfenv/version) 0.11.11

It seems that 0.12 is loaded, so I will try running Terraform.

$ terraform --version Terraform v0.12.0-alpha4 (2c36829d3265661d8edbd5014de8090ea7e2a076)

It looks like it's been switched.
Of course, it is also possible to revert to 0.11.

Switch version

$ tfenv use 0.11.11 [INFO] Switching to v0.11.11 [INFO] Switching completed $ terraform --version Terraform v0.11.11

In addition, rbenv has a similar function, but
you can also change the version only for a specific directory.
Place a file called ".terraform-version" in the directory you want to change.

Version switching (specific directory)

$ 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)

When I look at tfenv list, it is 0.11.11, but
0.12.0 is loaded in the directory where .terraform-version is located.
If you go back one directory and look at the version, of course 0.11.11 will be loaded.

$ cd ../ $ terraform version Terraform v0.11.11

4.Summary

Using tfenv, you can easily switch versions from the CLI.

  • Trial implementation and operation test of new version
  • Using plugins that depend on specific versions

I think it will be very useful in that scene.
I'm really looking forward to the official release of Terraform 0.12.
Everyone, please try using tfenv!

If you found this article helpful , please give it a like!
0
Loading...
0 votes, average: 0.00 / 10
17,408
X facebook Hatena Bookmark pocket
[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

[2025.6.30 Amazon Linux 2 support ended] Amazon Linux server migration solution

The person who wrote this article

About the author

Yuki Teraoka

Joined Beyond in 2016 and is currently in his 6th year as an Infrastructure Engineer
MSP, where he troubleshoots failures while
also designing and building infrastructure using public clouds such as AWS.
Recently, I
have been working with Hashicorp tools such as Terraform and Packer as part of building container infrastructure such as Docker and Kubernetes and automating operations, and I
also play the role of an evangelist who speaks at external study groups and seminars.

・GitHub
https://github.com/nezumisannn

・Presentation history
https://github.com/nezumisannn/my-profile

・Presentation materials (SpeakerDeck)
https://speakerdeck.com/nezumisannn

・Certification:
AWS Certified Solutions Architect - Associate
Google Cloud Professional Cloud Architect