用例
我已经通过自制程序安装了 Terraform v0.11.13,并且按照 terraform 的建议,我想在主要升级到 v0.12.0 之前升级到版本 v0.11.14。
问题
当我运行
brew upgrade terraform
或从 terraform 网站下载 Mac 软件包时,我认为它会立即将我的 terraform 版本更新到 v0.12.0。
那么我该如何升级到v0.11.14呢?
尤其是在使用 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
对于任何想在不使用自制软件的情况下做同样事情的人:
$ wget https://releases.hashicorp.com/terraform/0.11.14/terraform_0.11.14_linux_amd64.zip
$ unzip terraform_0.11.14_linux_amd64.zip
$ chmod +x terraform
$ sudo mv terraform /usr/local/bin/
$ terraform --version
来源:https://titosoft.github.io/kvm/terraform-and-kvm/#installing-terraform
有一个很好的替代方案来替代我已经使用了几年的 tfenv - tfswitch。
# MacOS
brew install warrensbox/tap/tfswitch
# Linux
curl -L https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh | bash
tfswitch VERSION_NUMBER
。version.tf
文件中描述的版本。.tfswitchrc
、.terrafom-version
自动切换 - 需要最少的设置并支持 bash、zsh 和 Fish。总而言之,这是一个很棒且简单的帮手,推荐这个。
除了传统的解决方案之外,解决所需问题的一个简单方法是安装tfswitch。它只需一个命令即可更改 terraform 版本。 给定的链接中提供了安装和使用指南。
注: 脚本初始化后无法降级到以前的版本(
terraform init
)。
简单且最好的方法:-
# 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
我从 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 密钥不应该进入存储库。
我知道这有点过时,但对我来说非常有用。
只需使用 tfenv 或 tfswitch 这两个工具都非常好。 好处是,如果您在执行 tfswitch 时 terraform 文件中有版本要求,它将自动下载并安装您需要的版本。
我意识到我使用的是 terraform 云远程执行而不是本地执行,因此,即使我将本地 terraform 升级到 1.3.7,我的远程版本仍然是 1.1.7,因此我只需选择适当的即可更新远程版本我的工作区设置中的版本,一切正常。
下面的命令将显示 terraform 的所有可用版本
sudo apt 策略 terraform
安装所需版本:
sudo apt-get install terraform=1.4.4-1
如果您已有旧版本,请将其卸载并运行上述命令
sudo apt删除terraform
我的两分钱
有一个工具的工作方式与
tfenv
非常相似,但它还可以处理许多其他软件
mise-en-place:https://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
希望你喜欢