【问题标题】:Upgrade terraform to specific version升级 terraform 到特定版本
【发布时间】:2019-10-10 12:17:50
【问题描述】:

用例

我已经通过自制软件安装了 Terraform v0.11.13,并且按照 terraform 的建议,我想先升级到 v0.11.14 版本,然后再对 v0.12.0 进行重大升级。

问题

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

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

【问题讨论】:

    标签: homebrew terraform


    【解决方案1】:

    尤其是在玩 Terraform 0.12 测试版时,我学会了爱上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
    

    【讨论】:

    • 斯蒂芬,你是国王!
    • 添加.terraform-version 文件会使tfenv 自动切换到给定目录的正确版本,如果尚未安装,它甚至会自动安装正确的版本。
    • 我知道:'正在初始化提供程序插件... - 正在查找最新版本的 hashcorp/google... 错误:无法查询可用的提供程序包'
    • 如果已经安装了最新版本。在从 tfenv 安装特定版本之前,您可能需要先取消链接 brew unlink terraform。安装后,输入tfenv use 0.12.30 以使用新版本。
    【解决方案2】:

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

    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

    【讨论】:

    • 我在你的代码中遇到这个错误 -bash: /usr/local/bin/terraform: cannot execute binary file
    • 简单,直接。
    【解决方案3】:

    我已经使用了几年的 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 个月前添加的。

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案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
        

        【讨论】:

          【解决方案6】:

          我从 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
          

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

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

          我知道这有点过时,但对我来说效果很好。

          【讨论】:

            【解决方案7】:

            选择 tfswitch,简单高效。

            【讨论】:

            • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
            猜你喜欢
            • 2017-04-12
            • 1970-01-01
            • 2021-03-21
            • 2015-01-14
            • 2022-01-04
            • 2022-08-07
            • 1970-01-01
            • 1970-01-01
            • 2021-01-09
            相关资源
            最近更新 更多