使用 tfenv 切换 Terraform 版本

我是寺冈,一名基础设施工程师。
这次,我将向大家展示如何使用tfenv切换Terraform版本。

1. tfenv 是什么?

tfenv是一个允许您通过命令行界面 (CLI) 切换 Terraform 版本的工具。
正如一些用户可能从其相似的名称中注意到的那样,它的
灵感来源于
rbenv 目前它处于 alpha 测试阶段,但 Terraform 0.12即将发布,其硬件兼容性列表 (HCL) 格式也将发生重大变化,因此
现在使用 tfenv 随时切换版本可能非常有用。

2. 安装 tfenv

从 GitHub 克隆并设置路径。

$ 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 用法:tfenv<command> [<options>命令:install 安装指定版本的 Terraform;use 切换要使用的版本;uninstall 卸载指定版本的 Terraform;list 列出所有已安装的版本;list-remote 列出所有可安装的版本

安装(0.11)

$ tfenv install 0.11.11 [INFO] 正在安装 Terraform v0.11.11 [INFO] 正在从 https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_linux_amd64.zip 下载发布包 ######################################################################## 100.0% [INFO] 正在从 https://releases.hashicorp.com/terraform/0.11.11/terraform_0.11.11_SHA256SUMS 下载 SHA 哈希文件 tfenv: tfenv-install: [WARN] 未找到 keybase 安装,跳过 GPG 签名验证 归档文件:tfenv_download.s1KQnc/terraform_0.11.11_linux_amd64.zip 正在解压: /root/.tfenv/versions/0.11.11/terraform [信息] Terraform v0.11.11 安装成功 [信息] 切换到 v0.11.11 [信息] 切换完成

已安装版本列表

$ tfenv list * 0.11.11 (由 /root/.tfenv/version 设置)

完成上述操作并运行 Terraform 后,
您就可以使用 tfenv 安装的版本了。

$ terraform --version Terraform v0.11.11

我想试试用 0.12 版本代替 0.11 版本。
我们来切换一下版本吧。

安装(0.12)

$ tfenv install 0.12.0-alpha4 [INFO] 正在安装 Terraform v0.12.0-alpha4 [INFO] 正在从 https://releases.hashicorp.com/terraform/0.12.0-alpha4/terraform_0.12.0-alpha4_terraform_0.12.0-alpha4_linux_amd64.zip 下载发布 tarball ##################################################################### 100.0% [INFO] 正在从 https://releases.hashicorp.com/terraform/0.12.0-alpha4/terraform_0.12.0-alpha4_SHA256SUMS 下载 SHA 哈希文件 tfenv: tfenv-install: [WARN] 未找到 keybase 安装,跳过 GPG 签名验证 Archive: tfenv_download.gut3iL/terraform_0.12.0-alpha4_terraform_0.12.0-alpha4_linux_amd64.zip 正在提取:/root/.tfenv/versions/0.12.0-alpha4/terraform 正在提取:/root/.tfenv/versions/0.12.0-alpha4/terraform-provider-aws_v1.40.0-6-gb23683732-dev_x4 正在提取:/root/.tfenv/versions/0.12.0-alpha4/terraform-provider-azurerm_v1.17.0-5-ga3b48ba3-dev_x4 正在提取:正在提取 /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-google_v1.19.1-3-g59efc8b9-dev_x4: 正在提取 /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-oci_v3.9.0-3-ga5859820-dev_x4: 正在提取 /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-null_v1.0.0-5-gf54ff98-dev_x4: 正在提取 /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-template_v1.0.0-5-g317c9c9-dev_x4:正在提取 /root/.tfenv/versions/0.12.0-alpha4/terraform-provider-random_v2.0.0-5-g612dff2-dev_x4:/root/.tfenv/versions/0.12.0-alpha4/terraform-provider-local_v1.1.0-5-ga2df742-dev_x4 [INFO] Terraform v0.12.0-alpha4 安装成功 [INFO] 切换到 v0.12.0-alpha4 [INFO] 切换完成

已安装版本列表

$ tfenv list * 0.12.0-alpha4 (由 /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] 切换到 v0.11.11 [INFO] 切换完成 $ terraform --version Terraform v0.11.11

rbenv 也有类似的功能,但
你只能在特定目录中更改版本。
在你想要更改的目录中放置一个名为“.terraform-version”的文件。

切换版本(指定目录)

$ tfenv list 0.12.0-alpha4 * 0.11.11 (由 /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 切换版本。

  • 测试和实施新版本
  • 使用特定版本的插件

我认为 tfenv 在这种情况下会非常有用。
我非常期待 Terraform 0.12 的正式发布。
希望你们也能试用一下 tfenv!

如果您觉得这篇文章有用,请点击【点赞】!
0
加载中...
0票,平均分:0.00/10
18,658
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

寺冈由纪

他于 2016 年加入 Beyond 公司,目前已是第六年
担任 MSP(托管服务提供商)的基础设施工程师,负责故障排除以及
使用 AWS 等公有云设计和构建基础设施。近期,他开始

使用 HashiCorp 的 Terraform 和 Packer 等工具,用于构建和运维
Docker 和 Kubernetes 等容器基础设施的自动化流程。此外,他还扮演着技术推广者的角色,经常在外部学习小组和研讨会上发表演讲。

・GitHub
https://github.com/nezumisannn

・讲述历史
https://github.com/nezumisannn/my-profile

・演示材料(SpeakerDeck)
https://speakerdeck.com/nezumisannn

・认证:
AWS认证解决方案架构师 - 助理级、
Google Cloud专业云架构师