使用 tfenv 管理多个 Terraform 版本

如果在你的环境中使用多个 Terraform 版本,tfenv 将使你的生活更加轻松。
63 位读者喜欢这篇文章。
Computer screen with files or windows open

Opensource.com

在我关于 Kubernetes 初学者 Terraform 指南 的文章中,我使用了 Terraform 11,在即将发表的文章中,我将介绍从 Terraform 11 升级到 12 的内容。为了做好准备,在本文中,我将向你展示如何使用 tfenv,这个工具可以让你更容易地从一个版本转换为另一个版本,并管理你工作环境中的多个 Terraform 版本。

安装 tfenv

许多编码语言都有工具,允许你根据环境规则在版本之间来回切换。一个例子(tfenv 就是基于此)是 rbenv,它允许你选择要使用的 Ruby 版本。

tfenv 可以在 Linux、macOS 和 Windows 上运行;我将介绍使用 Ubuntu 18.04 的 Linux 安装,但该工具的 GitHub 仓库有针对其他操作系统的 安装说明

Linux 安装使用了一些 Git 命令(如果你还不熟悉 Git,请查看 Git 入门 系列)。

首先,在你的 ${HOME} 目录中创建一个 .tfenv 文件夹

jess@Athena:~$ mkdir .tfenv

克隆 tfenv 仓库

jess@Athena:~$ git clone https://github.com/tfutils/tfenv.git ~/.tfenv
Cloning into '/home/jess/.tfenv'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 1105 (delta 8), reused 10 (delta 2), pack-reused 1084
Receiving objects: 100% (1105/1105), 216.01 KiB | 2.84 MiB/s, done.
Resolving deltas: 100% (703/703), done.

如果你更喜欢 Homebrew,你可以使用

$ brew install tfenv

将你的路径导出到你的 Bash 配置文件中

jess@Athena:~$ echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile

如果你只想使用基于 Ubuntu/Debian 系统的基本命令,还有另一种更简单的方法。在 .tfenv 目录中完成克隆后,设置你的配置文件,以便在下次会话中将 tfenv 命令放入你的配置文件中

jess@Athena:~/.tfenv$ . ~/.profile

配置文件设置完成后,你可以将你的目录符号链接到你的 .local/bin 目录,使 tfenv 成为可执行的二进制文件

jess@Athena:~/.tfenv$ ln -s ~/.tfenv/bin/* ~/.local/bin

运行 which 命令,你应该看到 tfenv 的位置

jess@Athena:~/.tfenv$ which tfenv
/home/jess/.local/bin/tfenv

如何使用 tfenv

现在一切都安装好了,看看有哪些命令可用

jess@Athena:~$ tfenv
tfenv 2.0.0-37-g0494129
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

正如你所看到的,这是一个非常简单的工具,可以让你根据需要安装和卸载 Terraform 版本。

在决定安装什么之前,检查一下有哪些版本可用。这是一个小片段,因为列表大约有一英里长

jess@Athena:~$ tfenv list-remote
0.14.0-beta1
0.14.0-alpha20201007
0.14.0-alpha20200923
0.14.0-alpha20200910
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.13.0-rc1
0.13.0-beta3
0.13.0-beta2
0.13.0-beta1
0.12.29
0.12.28
0.12.27

安装 Terraform 版本

要安装最新版本的 Terraform

jess@Athena:~$ tfenv install latest
Installing Terraform v0.13.5
Downloading release tarball from https://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_linux_amd64.zip
###################################################################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive:  tfenv_download.N3bzZ2/terraform_0.13.5_linux_amd64.zip
  inflating: /home/jess/.tfenv/versions/0.13.5/terraform  
Installation of terraform v0.13.5 successful. To make this your default version, run 'tfenv use 0.13.5'

要安装特定的 Terraform 版本(在本例中为 0.12.29)

jess@Athena:~$ tfenv install 0.12.29
Installing Terraform v0.12.29
Downloading release tarball from https://releases.hashicorp.com/terraform/0.12.29/terraform_0.12.29_linux_amd64.zip
###################################################################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.12.29/terraform_0.12.29_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive:  tfenv_download.1YFOLh/terraform_0.12.29_linux_amd64.zip
  inflating: /home/jess/.tfenv/versions/0.12.29/terraform  
Installation of terraform v0.12.29 successful. To make this your default version, run 'tfenv use 0.12.29'

最后,要安装最新版本的 Terraform 0.11

jess@Athena:~$ tfenv install latest:^0.11
Installing Terraform v0.11.15-oci
Downloading release tarball from https://releases.hashicorp.com/terraform/0.11.15-oci/terraform_0.11.15-oci_linux_amd64.zip
###################################################################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.11.15-oci/terraform_0.11.15-oci_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive:  tfenv_download.8OxQ8k/terraform_0.11.15-oci_linux_amd64.zip
  inflating: /home/jess/.tfenv/versions/0.11.15-oci/terraform  
Installation of terraform v0.11.15-oci successful. To make this your default version, run 'tfenv use 0.11.15-oci'

就是这么简单,现在你可以开始使用它们了!

更改 Terraform 版本

一旦你安装了多个 Terraform 版本,你可以选择一个来使用。首先,通过列出已安装的版本来了解你的选项

jess@Athena:~$ tfenv list
  0.13.5 (set by /home/jess/.tfenv/version)
  0.12.29
  0.11.15-oci

默认情况下,tfenv 选择你已安装的最新版本的 Terraform。通过运行 tfenv use 命令来查找默认版本

jess@Athena:~$ tfenv use
Switching default version to v0.13.5
Switching completed

jess@Athena:~$ terraform --version
Terraform v0.13.5

但是,如果你需要使用旧版本怎么办?此示例切换到我安装的最旧版本

jess@Athena:~$ tfenv use 0.11.15-oci
Switching default version to v0.11.15-oci
Switching completed

jess@Athena:~$ terraform -version
Terraform v0.11.15-oci

Your version of Terraform is out of date! The latest version
is 0.13.5. You can update by downloading from www.terraform.io/downloads.html

就像馅饼一样简单!只需运行 list 命令并使用提供的命名约定。

卸载 Terraform 版本

如果你有不再需要或不需要的 Terraform 版本,你可以使用 uninstall 命令将其删除。例如,我不需要 Terraform 版本 0.13

jess@Athena:~$ tfenv uninstall 0.13.5
Uninstall Terraform v0.13.5
Terraform v0.13.5 is successfully uninstalled

确认它不再安装

jess@Athena:~$ tfenv list
  0.12.29
  0.11.15-oci

最终想法

tfenv 工具在很多方面都很棒。如果你需要从一个 Terraform 版本更新到另一个版本,这是升级和测试结果的更快方法之一。如果你的环境中有一些东西在多个 Terraform 版本上运行,则可以根据需要轻松地来回切换。如果你使用 Terraform,请尝试 tfenv,看看它如何改变你的环境。

接下来阅读什么
标签
User profile image.
技术游民,从事我能找到的任何工作。信息技术领域孤岛预防的倡导者,与所有团队共享信息的重要性。相信教育所有人以及开源开发。热爱所有技术。关注 K8s、混沌以及我能找到的任何新奇事物!Mastodon ID

评论已关闭。

Creative Commons License本作品根据 Creative Commons License 署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.