amazon-web-services - 如何修复 : Terraform error refreshing state: state snapshot was created by Terraform v0. 14.5,它比当前 v0.13.0 更新

标签 amazon-web-services terraform

我正在尝试将我的 terraform 版本从 0.12 升级到 0.13,但之前已经初始化并计划全局安装 terraform 0.14.5。

我正在努力理解这对快照有何影响和/或我可以删除此错误,远程状态尚未更改,那么它从哪里获取此错误?我已经删除了目录中的所有 .terraform。

最佳答案

Terraform 在远程后端或本地后端中保存其状态。

如果您的配置文件中没有类似这样的配置,请注意后端类型可能会根据所使用的不同而有所不同,因此 "..." 中的名称可能会有所不同:

terraform {
  backend "..." { 
  }
}

那么可以安全地假设您有一个名为 terraform.tfsate 的本地 JSON 状态文件,而且,由于您的项目在升级之前就存在,因此有一个文件 terraform.tfsate.backup

如果您深入研究这些文件,您将在文件开头看到用于创建所述状态的 terraform 版本。

例如:

{
  "version": 4,
  "terraform_version": "0.14.5",
}

从那里开始,在非常谨慎的情况下,确保您确实没有更改远程状态中的任何内容,您有一些选择:

  1. 如果您的文件terraform.tfsate.backup仍然有"terraform_version": "0.13.0" ,您可以通过删除 terraform.tfsate 并将 terraform.tfsate.backup 重命名为 terraform.tfsate
  2. 来进行回滚
  3. 您可以尝试“破解”实际的 terraform.tfsate 并通过调整行 "terraform_version": "0.14.5" 来更改那里的版本
  4. 按照以下链接的建议,您可以 create a state version using the API ,因此,通过手动指定您的预期版本来覆盖状态 terraform_version

我的建议仍然是制作 diff terraform.tfsateterraform.tfsate.backup 进行比较,以查看可能发生的更改,或者如果您的 terraform.tfsate 处于以下状态,请使用版本控制工具版本控制。

有用的阅读:https://support.hashicorp.com/hc/en-us/articles/360001147287-Downgrading-Terraform-Version-in-the-State

关于amazon-web-services - 如何修复 : Terraform error refreshing state: state snapshot was created by Terraform v0. 14.5,它比当前 v0.13.0 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69927506/

相关文章:

terraform - 在 Terraform 中使用 `execute` 插值声明一个变量

terraform - 调试 Terraform 时如何查看对象值

Azure - 尝试使用 Terraform 中的 JsonADDomainExtension 将虚拟机加入域

amazon-web-services - Redis——它是如何提高性能的?

php - 在 Amazon EC2 上安装 php-dom 扩展

ubuntu - 在 ubuntu ec2 的 couchdb 中设置自签名 ssl 证书时出现问题

amazon-web-services - 为什么我收到 aws ExpiredToken : The security token included in the request is expired?

amazon-web-services - 如何将弹性 IP 重复用于一组专用于 Fargate 任务的私有(private)和公有子网

azure - Terraform 删除应用程序网关入口 Controller (AGIC) 创建的配置/资源

amazon-web-services - 如何通过cloudformation在非默认vpc上创建自动伸缩组?