使用 tfenv 切换 Terraform 版本

目录
大家好,我是基础设施工程师寺冈。
这次,我将向大家展示如何使用tfenv切换Terraform版本。
1. tfenv 是什么?
tfenv是一个允许您通过命令行界面 (CLI) 切换 Terraform 版本的工具。
正如您可能从其相似的名称中注意到的那样,它的
rbenv灵感来源于
目前它处于 alpha 测试阶段,但 Terraform0.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 切换版本。
- 测试和实施新版本
- 使用特定版本的插件
我认为在类似情况下它会非常有用。
我非常期待 Terraform 0.12 的正式发布。
我鼓励大家尝试使用 tfenv!
如果您觉得这篇文章对您有帮助,请点个“赞”!
0
