将 Terraform 升级到特定版本
Upgrade terraform to specific version
用例
我已经通过自制软件安装了 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 测试版时,我学会了爱 tfenv。
安装后(通过 brew install tfenv
在 MacOS 上),这使您可以轻松发现、安装和激活任何 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
除了传统的解决方案之外,解决所需问题的一个简单方法是安装 tfswitch。它可以只用一个命令更改 Terraform 版本。
给定的 link.
中提供了安装和使用指南
注:
脚本初始化后无法降级到以前的版本(terraform init
)。
我从 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
当我进入包含此 .envrc 的目录时,它不仅将正确的 TF 二进制文件放入我的 PATH 中,还设置了我的 AWS 配置文件,在本例中设置了一些 DataDog API 键。
当我想升级 TF 时,我确保将所需的二进制文件放在正确的位置并编辑 .envrc 使其位于 PATH 中。理想情况下,.envrc 不会被推送到 Github,因为其他人可能有不同的设置,尤其是 API 密钥不应该进入 repo。
我知道这有点过时,但对我来说很管用。
我已经使用了几年 tfenv 的一个很好的替代品 - tfswitch.
- 简单的安装过程:
# MacOS
brew install warrensbox/tap/tfswitch
# Linux
curl -L https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh | bash
- 提供 alpha、beta 和发布候选 terraform 版本。
- 支持多种更改版本的选项,例如:
- 手动
tfswitch VERSION_NUMBER
。
- 自动检测并切换到
version.tf
文件中描述的版本。
- 自动切换到自定义路径下的自定义二进制文件(对权限有限的用户或服务有帮助)。
- 自动切换
.tfswitchrc
、.terrafom-version
- 需要最少的设置并支持 bash、zsh 和 fish。
- 可以轻松地与 Jenkins 和 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,简单高效。
用例
我已经通过自制软件安装了 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 测试版时,我学会了爱 tfenv。
安装后(通过 brew install tfenv
在 MacOS 上),这使您可以轻松发现、安装和激活任何 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
除了传统的解决方案之外,解决所需问题的一个简单方法是安装 tfswitch。它可以只用一个命令更改 Terraform 版本。 给定的 link.
中提供了安装和使用指南注:
脚本初始化后无法降级到以前的版本(terraform init
)。
我从 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
当我进入包含此 .envrc 的目录时,它不仅将正确的 TF 二进制文件放入我的 PATH 中,还设置了我的 AWS 配置文件,在本例中设置了一些 DataDog API 键。
当我想升级 TF 时,我确保将所需的二进制文件放在正确的位置并编辑 .envrc 使其位于 PATH 中。理想情况下,.envrc 不会被推送到 Github,因为其他人可能有不同的设置,尤其是 API 密钥不应该进入 repo。
我知道这有点过时,但对我来说很管用。
我已经使用了几年 tfenv 的一个很好的替代品 - tfswitch.
- 简单的安装过程:
# MacOS
brew install warrensbox/tap/tfswitch
# Linux
curl -L https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh | bash
- 提供 alpha、beta 和发布候选 terraform 版本。
- 支持多种更改版本的选项,例如:
- 手动
tfswitch VERSION_NUMBER
。 - 自动检测并切换到
version.tf
文件中描述的版本。 - 自动切换到自定义路径下的自定义二进制文件(对权限有限的用户或服务有帮助)。
- 自动切换
.tfswitchrc
、.terrafom-version
- 需要最少的设置并支持 bash、zsh 和 fish。
- 可以轻松地与 Jenkins 和 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,简单高效。