将 terraform 升级到特定版本

问题描述 投票:0回答:10

用例

我已经通过自制程序安装了 Terraform v0.11.13,并且按照 terraform 的建议,我想在主要升级到 v0.12.0 之前升级到版本 v0.11.14。

问题

当我运行

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

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

homebrew terraform
10个回答
409
投票

尤其是在使用 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

46
投票

对于任何想在不使用自制软件的情况下做同样事情的人:

  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


15
投票

有一个很好的替代方案来替代我已经使用了几年的 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 个月前添加的。

总而言之,这是一个很棒且简单的帮手,推荐这个。


6
投票

除了传统的解决方案之外,解决所需问题的一个简单方法是安装tfswitch。它只需一个命令即可更改 terraform 版本。 给定的链接中提供了安装和使用指南。

注: 脚本初始化后无法降级到以前的版本(

terraform init
)。


4
投票

简单且最好的方法:-

# 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

1
投票

我从 0.6 开始就使用 TF,并在我的工作站上积极使用许多不同的版本。我使用 direnv [https://direnv.net/] 执行此操作,因为它已经可用了相当长一段时间,并且它非常适合管理目录中的 TF 二进制版本,而且它允许我传递每个目录的环境变量轻松进入 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

当我 cd 进入包含此 .envrc 的目录时,它不仅将正确的 TF 二进制文件放入我的 PATH 中,还设置我的 AWS 配置文件,在本例中设置一些 DataDog API 密钥。

当我想要升级 TF 时,我确保将所需的二进制文件放入正确的位置并编辑 .envrc,使其位于 PATH 中。理想情况下,.envrc 不会推送到 Github,因为其他人可能有不同的设置,尤其是 API 密钥不应该进入存储库。

我知道这有点过时,但对我来说非常有用。


1
投票

只需使用 tfenv 或 tfswitch 这两个工具都非常好。 好处是,如果您在执行 tfswitch 时 terraform 文件中有版本要求,它将自动下载并安装您需要的版本。

https://tfswitch.warrensbox.com/


1
投票

我意识到我使用的是 terraform 云远程执行而不是本地执行,因此,即使我将本地 terraform 升级到 1.3.7,我的远程版本仍然是 1.1.7,因此我只需选择适当的即可更新远程版本我的工作区设置中的版本,一切正常。


0
投票

下面的命令将显示 terraform 的所有可用版本

sudo apt 策略 terraform

安装所需版本:

sudo apt-get install terraform=1.4.4-1

如果您已有旧版本,请将其卸载并运行上述命令

sudo apt删除terraform


0
投票

我的两分钱

有一个工具的工作方式与

tfenv
非常相似,但它还可以处理许多其他软件

mise-en-placehttps://mise.jdx.dev

您可以通过插件管理 terraform terragrunt go java node python ruby .net awscli postgres redis mongodb 等的版本

完整插件列表:https://github.com/mise-plugins/registry/blob/main/README.md

希望你喜欢

© www.soinside.com 2019 - 2024. All rights reserved.