将terraform升级到特定版本

时间:2019-05-23 21:55:17

标签: homebrew terraform

用例

我已经通过自制软件安装了Terraform v0.11.13,并且按照terraform的建议,我希望在升级到v0.12.0之前先升级到v0.11.14版本。

问题

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

那我该如何升级到v0.11.14?

6 个答案:

答案 0 :(得分:2)

尤其是在使用Terraform 0.12 Beta时,我学会了爱tfenv

通过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 :(得分:1)

有一个很好的 tfenv 替代品,我已经使用了好几年了 - tfswitch

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

# Linux
curl -L https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh | bash
  1. 提供 Alpha、Beta 和发布候选 terraform 版本。
  2. 支持多个选项来更改版本,例如:
  • 带有 tfswitch VERSION_NUMBER 的手册。
  • 自动检测并切换到 version.tf 文件中描述的版本。
  • 自动切换到自定义路径下的自定义二进制文件(对权限有限的用户或服务很有帮助)。
  • 使用 .tfswitchrc.terrafom-version 自动切换 - 需要最少的设置并支持 bash、zsh 和 fish。
  1. 可以轻松地与 JenkinsCircleCI 集成 - 我还没有测试过,这些功能分别是在 10 个月和 5 个月前添加的。

总而言之,它是一个伟大而简单的帮手,会推荐这个。

答案 2 :(得分:0)

对于那些希望不使用自制软件就这样做的人:

  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

答案 3 :(得分:0)

除常规解决方案外,要解决所需问题的简便方法是安装 tfswitch 。它仅需一个命令即可更改terraform版本。 link中提供了安装和使用指南。

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

答案 4 :(得分:0)

我从0.6开始就使用TF,并且在我的工作站上积极使用许多不同的版本。我使用direnv [https://direnv.net/]来进行此操作,因为它已有相当长的一段时间了,并且可以很好地用于在目录中管理TF二进制版本,此外它还允许我将每个目录的env vars传递到TF中而没有麻烦。

示例.envrc:

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密钥不应该进入存储库。

我知道它有点陈旧,但是对我来说很好用。

答案 5 :(得分:0)

简单且最好的方法:-

# 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 v0.14.3 ==> this way