【问题标题】:Terraform version error when deploying to AWS through jenkins?通过 jenkins 部署到 AWS 时出现 Terraform 版本错误?
【发布时间】:2020-10-20 00:07:23
【问题描述】:

我正在通过 Jenkins Terraform 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'.

【问题讨论】:

  • 错误消息对我来说看起来很清楚:Terraform 不允许您针对比它更新的状态文件运行旧版本的 Terraform,以防止它损坏状态文件或破坏事物。升级您的 Jenkins 的 Terraform 版本,并考虑设置 Terraform 版本以在您的代码中使用:terraform.io/docs/configuration/…

标签: amazon-web-services jenkins terraform


【解决方案1】:
  • 使用 v0.11.1 运行:$ terraform destroy
  • 删除.tfstate 文件
  • 使用 v0.10.7(或您想从现在开始使用的任何版本),运行:$ terraform apply

【讨论】:

  • 虽然销毁资源可能是一种方式,但不是生产基础设施的理想解决方案:)
  • 我想/希望这不是产品,因为他们是从本地机器部署并使用不同的 Terraform 版本。
【解决方案2】:

如果您使用 TFE,也许您可​​以重新排队使用 0.11.x 创建的先前状态。或者,也许您可​​以查看 Jenkins 历史以获取使用 0.11.x 创建的最后一个状态。

【讨论】:

    【解决方案3】:

    我的一位同事 Manuel Sierra 遇到了这个错误并得出以下解决方案:(注意以下问题,如果您碰巧降级到与代码不兼容的另一个版本,它会给出版本错误)

    在我们的例子中,从0.11.14 降级到0.11.13 没有产生任何错误。

    1. 执行terraform pull state > current.state
    2. 用您执行的版本修改版本
    3. 执行terraform push state current.state

    现在您可以使用降级版本了。

    【讨论】:

      猜你喜欢
      • 2020-07-01
      • 2021-01-08
      • 2021-10-30
      • 2021-10-05
      • 2022-01-18
      • 2014-05-15
      • 2015-01-21
      • 2022-12-24
      • 2020-01-09
      相关资源
      最近更新 更多