我正在尝试将我的 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",
}
从那里开始,在非常谨慎的情况下,确保您确实没有更改远程状态中的任何内容,您有一些选择:
- 如果您的文件terraform.tfsate.backup仍然有
"terraform_version": "0.13.0"
,您可以通过删除 terraform.tfsate 并将 terraform.tfsate.backup 重命名为 terraform.tfsate 来进行回滚
- 您可以尝试“破解”实际的 terraform.tfsate 并通过调整行
"terraform_version": "0.14.5"
来更改那里的版本 - 按照以下链接的建议,您可以 create a state version using the API ,因此,通过手动指定您的预期版本来覆盖状态
terraform_version
我的建议仍然是制作 diff
terraform.tfsate 与 terraform.tfsate.backup 进行比较,以查看可能发生的更改,或者如果您的 terraform.tfsate 处于以下状态,请使用版本控制工具版本控制。
关于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/