如何强制Terraform重置其状态?

时间:2019-12-18 20:43:45

标签: terraform

我不小心使用了错误的次要版本,但现在我什么也不能做。

Error: 
Terraform doesn't allow running any operations against a state
that was written by a future Terraform version. The state is
reporting it is written by Terraform '0.11.14'

我只想重置自己的地形状态,以便可以使用正确的版本。

1 个答案:

答案 0 :(得分:0)

如果您保持远程状态,并且已对其进行版本控制(我强烈建议您同时进行),则可以很简单地还原为较旧的版本。但是我想你不会问这个问题是否那么简单。

因此,Terraform状态只是一个简单的JSON文件,并且没有对其进行完整性检查-是好是坏。尝试直接编辑状态文件,以正确的版本运行terraform plan,然后查看提供的内容。很有可能它会起作用,但最坏的情况是您会遇到错误,因此值得一试。

也就是说,如果您的配置在新版本的Terraform上运行得很好,为什么不随它滚动?通常,我建议您使用与您的代码兼容的最新版本的Terraform,并更改您的代码以使其与可下载的最新版本的Terraform兼容。

将来,您可能需要提出有关如何管理和更新Terraform版本的策略和过程。我一直在尝试使用Terraform CI/CD tool I'm building(目前处于私人Beta版,可以随时加入候补名单)来解决此问题,这里的the doc详细介绍了该解决方案。但是要点是-您可以在任何CI / CD平台上使用它,在其中您可以将Terraform的版本放入您的工作定义文件(例如CircleCI)中-您尝试始终使用更新的Terraform版本运行terraform plan在功能分支中,请查看结果并修复所有不兼容性,然后再将版本凹凸合并到代码更改触发terraform apply的主分支中。