我的 Terraform Git 存储库最终出现一些不可调和的数据错误,我无法推送最近的更改。我将我的提交导出到一个补丁,重新克隆,应用补丁,然后意识到我只是吹走了我所有的本地状态。我使用 AWS CLI 同步整个状态文件树,将其复制到/作为我想要应用的路径的 .terraform/terraform.tfstate,运行 init,现在出现版本错误。
这与最初生成状态文件的运行环境完全相同。这也是唯一应用更改的机器,因此一切都应该保持同步(不是说它与眼前的问题有关,但一旦我们解决了这个问题,它就不会引起任何其他问题)。
我试过运行的命令:
$ terraform init
$ terraform init -upgrade
$ terraform init -upgrade -migrate-state
不可避免的,坚定不移的输出:
Initializing the backend...
╷
│ Error: Failed to load state: Terraform 1.3.9 does not support state version 4, please update.
我似乎无法在任何地方找到任何关于如何从远程状态恢复的帖子或评论,但我猜几乎每个人都必须在某个时候从远程状态恢复。我无法理解。
从远程恢复的过程应该是什么?如果环境、项目配置和项目状态没有改变,为什么我会出现版本问题?
谢谢。任何帮助表示赞赏。
当我运行时
terraform init
,它已将状态初始化为 .terraform/terraform.tfstate。因此,我清除了元数据并将我的状态文件恢复到该文件路径(我从 S3 手动下载的状态副本)。那是我开始看到上面的错误的时候。不知道为什么。这些都没有道理。然而,在注意到帖子中的微妙引用之后,我将状态文件移回了该项目路径的根目录,事情神奇地起作用了。