升级地形到特定版本

用例

我已经通过自制软件安装了 Terraform v0.11.13,根据 Terraform 的建议,我想在升级到 v0.12.0之前先升级到 v0.11.14。

问题是

当我运行 brew upgrade terraform或从 terraform 网站下载 Mac 软件包时,我认为它会立即更新我的 terraform 版本到 v0.12.0。

那么如何升级到 v0.11.14呢?

95972 次浏览

特别是在玩 Terraform 0.12 beta 的时候,我学会了爱上 Tfenv

安装完成后(通过 MacOS 上的 brew install tfenv) ,您可以轻松发现、安装和激活任何 Terraform 版本:

$ tfenv list-remote
0.12.0
0.12.0-rc1
0.12.0-beta2
0.12.0-beta1
0.12.0
0.11.14
...


$ tfenv install 0.11.14
[INFO] Installing Terraform v0.11.14
[INFO] Downloading release tarball from https://releases.hashicorp.com/terraform/0.11.14/terraform_0.11.14_darwin_amd64.zip
...
[INFO] Installation of terraform v0.11.14 successful
[INFO] Switching to v0.11.14
[INFO] Switching completed

如果你想切换到不同的版本:

$ tfenv use 0.12.0
[INFO] Switching to v0.12.0
[INFO] Switching completed

对于那些希望不用自制程序也能做同样事情的人:

  1. 去找线人
$ wget https://releases.hashicorp.com/terraform/0.11.14/terraform_0.11.14_linux_amd64.zip


$ unzip terraform_0.11.14_linux_amd64.zip
  1. 给予二进制可执行权限并安装(将覆盖当前版本)
$ chmod +x terraform


$ sudo mv terraform /usr/local/bin/
  1. 确认版本
$ terraform --version

资料来源: https://titosoft.github.io/kvm/terraform-and-kvm/#installing-terraform

除了传统的解决方案之外,所需问题的一个简单实现是安装 Tfswitch。它只需一个命令就可以改变地形版本。 在给定的 链接中提供了安装和使用指南。

注: 在脚本初始化后,您不能降级到以前的版本(terraform init)。

我从0.6开始使用 TF,并且在我的工作站上积极地使用许多不同的版本。我使用 direnv [ https://direnv.net/]做这件事,因为它已经存在很长一段时间了,它可以很好地管理目录中的 TF 二进制版本,而且它允许我轻松地将每目录的 env vars 传递给 TF。

样本:

export AWS_PROFILE=prod
export PATH=/usr/local/terraform/terraform-0.12.20:$PATH


export TF_VAR_dd_api_key=REDACTED
export TF_VAR_dd_app_key=REDACTED

当我录入包含这个的目录时。Envrc,它不仅将正确的 TF 二进制文件放入我的 PATH 中,还设置了我的 AWS 配置文件,在本例中设置了一些 DataDog API 键。

当我想要升级 TF 时,我确保将所需的二进制文件放置到正确的位置并编辑。Envrc,因此它在 PATH 中。理想情况下。Envrc 没有被推到 Github,因为其他人可能有不同的设置,特别是 API 密钥不应该进入回购。

我知道这有点过时,但对我很有用。

有一个很好的替代 Tfenv,我已经使用了几年了-翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳

  1. 简单的安装过程:
# MacOS
brew install warrensbox/tap/tfswitch


# Linux
curl -L https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh | bash
  1. 提供阿尔法,贝塔和释放候选人地形版本。
  2. 支持更改版本的多个选项,如:
  • tfswitch VERSION_NUMBER手册。
  • 自动检测并切换到 version.tf文件中描述的版本。
  • 自动切换到自定义路径下的自定义二进制文件(对于特权有限的用户或服务很有帮助)。
  • 自动切换与 .tfswitchrc.terrafom-version-需要最低限度的设置,并支持 bash,zsh 和 fish。
  1. 可以很容易地与 詹金斯CircleCI集成-我还没有测试出来,这些功能是在10和5个月前分别添加。

总而言之,它是一个伟大而简单的帮助者,将推荐这一个。

最简单和最好的方法:-

# MacOS
brew install warrensbox/tap/tfswitch


# Linux
curl -L https://raw.githubusercontent.com/warrensbox/terraform-
switcher/release/install.sh | bash

然后使用其中一个命令更改版本-

1. tfswitch ==> you will see option to select version.




2. tfswitch 0.14.3 ==> this way

使用 tfswitch,它简单有效。

只需使用 tfenv 或 tfswitch 两种工具都很好。 好的一点是,如果你有版本要求在地形文件时,你做 tfswitch 它会自动下载和安装你需要的版本。

Https://tfswitch.warrensbox.com/