无法更新 terraform 版本

x89*_*x89 2 version terraform terraform-provider-aws hashicorp

我的provider.tf 文件中已经有最新版本:

  required_providers {
    archive = {
      source  = "hashicorp/archive"
      version = "2.2.0"
    }
    aws     = {
      source  = "hashicorp/aws"
      version = "3.72.0"
    }
  }
Run Code Online (Sandbox Code Playgroud)

然而,当我检查terraform version我的终端时,我得到了这个:

Terraform v1.0.7
on darwin_amd64
+ provider registry.terraform.io/hashicorp/archive v2.2.0
+ provider registry.terraform.io/hashicorp/aws v3.72.0

Your version of Terraform is out of date! The latest version
is 1.1.4. You can update by downloading from https://www.terraform.io/downloads.html
Run Code Online (Sandbox Code Playgroud)

我已经尝试过terraform init -upgrade,但这也没有什么区别。我还从网站手动下载了 terraform 的新版本,但我的终端仍然显示 1.0.7。

由于旧的 Terraform 版本,我面临其他错误。如何使用终端更新到最新版本?

Mar*_*o E 7

提供程序terraform二进制文件之间存在差异。使用您正在使用的命令,您将更新提供程序模块版本。从您的问题中我了解到您已将二进制文件下载到您的 Mac 上。这当然还不够。您必须用新的二进制文件替换旧的二进制文件。最简单的方法是运行:

echo $PATH
Run Code Online (Sandbox Code Playgroud)

这应该为您提供有关在何处放置新二进制文件的信息,以便系统知道在哪里查找它。输出应类似于:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

然后随后运行:

which terraform
Run Code Online (Sandbox Code Playgroud)

它应该显示terraform二进制文件所在的位置,并且在大多数情况下它与环境变量中列出的位置之一匹配PATH。例子:

/usr/local/bin/terraform
Run Code Online (Sandbox Code Playgroud)

然后,解压缩您下载的文件并将其复制到旧二进制文件的位置。请注意,这将删除旧版本。

不过,有更好的方法来处理多个 terraform 版本。其中之一是使用tfenv[1]。

安装(和覆盖) terraform 版本的另一种方法是遵循此处的指南 [2] 并使用homebrewMacOS 的包管理器,但简而言之,命令是:

brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Run Code Online (Sandbox Code Playgroud)

[1] https://github.com/tfutils/tfenv

[2] https://www.terraform.io/downloads