我通过 JenkinsTerraform v0.10.7 使用 terraform进行部署。 使用Terraform v0.11.1从我的本地机器成功部署后,我无法从 Jenkins 再次执行此操作,我有此错误:
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.1'.
- 使用 v0.11.1 运行:
$ terraform destroy
- 删除
.tfstate
文件 - 使用 v0.10.7(或从现在开始使用的任何版本(,运行:
$ terraform apply
如果您使用的是 TFE,也许您可以重新排队之前使用 0.11.x 创建的状态。或者,也许您可以查看 Jenkins 历史记录以获取使用 0.11.x 创建的最后一个状态。
我的一位同事曼努埃尔·塞拉(Manuel Sierra(遇到了这个错误,并以以下解决方案得出结论: (请注意以下内容,如果您碰巧降级到与代码不兼容的另一个版本,它将给出版本错误(
在我们的例子中,从0.11.14
降级到0.11.13
没有产生任何错误。
- 执行
terraform pull state > current.state
- 使用您执行的版本修改版本
- 执行
terraform push state current.state
现在,您可以使用降级版本。