【问题标题】:Terraform Apply has different "plan" than Terraform PlanTerraform Apply 与 Terraform Plan 有不同的“计划”
【发布时间】:2019-10-13 16:06:52
【问题描述】:

我有时会看到 Terraform ApplyTerraform Plan 有不同的“计划”。

例如,今天我看到我尝试“Terraform Apply”的一个 TF 文件导致只有 1 个“更改”和 1 个“添加”,而它得到了“3 个添加”,使用“Terraform Plan”时的“1 改变”和“3 破坏”

我使用 Terraform 才两个月。这是 Terraform 中的预期行为吗?

谁能解释一下这种行为?谢谢!

Terraform version: 0.11.13

【问题讨论】:

  • 您能否编辑您的问题以分享您现有的 Terraform 代码、计划和应用不同的输出以及您的环境可能有的任何特殊之处?
  • 当您像这样运行 Terraform 时是否也会发生这种情况:terraform plan -out "planfile"terraform apply -input=false "planfile"?然后,Terraform 应该完全(并且仅)应用 terraform plan 命令中的那些更改...

标签: terraform


【解决方案1】:

这是出乎意料的行为,但最好的做法是:

  1. terraform plan -out deploy.tfplan

它将计划保存在 deploy.tfplan 文件中。

  1. 现在,terraform 应用 deploy.tfplan。

这将确保您想要的计划一直执行而不会失败。

【讨论】:

    【解决方案2】:

    这不是 terraform 的预期行为,除非任何地方都乱七八糟。到目前为止,我从未见过这种问题。通过 terraform plan 命令后,您是否曾经编辑或删除过 .tfstate 状态文件?如果您再次观察到此问题或仍然面临此类问题,可能您可以向产品负责人提出问题。但我不认为这是一个问题,你永远不会再遇到这种问题。

    【讨论】:

      【解决方案3】:

      你能解释一下完整的场景吗?通常,根据我的经验,它是相同的。 差异我只能看到 - 您使用带有计划和应用的变量文件,并且某些变量会导致一些资源,而其他方式可能是如果您使用远程位置来获取状态并且其他一些工作/人员也更新状态。 如果您在本地运行所有内容,则不应该这样发生。

      【讨论】:

        【解决方案4】:

        Terraform 构建所有资源的图表。它,然后并行创建非依赖资源,以使资源创建稍微高效。如果资源创建失败,它会使 terraform 处于部分应用状态,并记录在 tfstate 文件中。解决资源问题后,当您重新应用 .tf 文件时,它只会显示要更改的新资源。就您而言,我认为这与某些资源具有“创建前销毁”的策略有关,该策略会在结果中显示出来。因此,当您对 1 个资源应用更改时,它最终会显示 1 个资源已删除 1 个已创建。当某些非“创建前销毁”类型的资源发生这种情况时,最终会像您上面提到的那样为您提供输出

        【讨论】:

          【解决方案5】:

          您在触发命令时是否评论了 terraform 文件中的任何资源:terraform apply ?

          如果是,请检查与在现有 terraform 文件中评论资源相同的内容将导致破坏 terraform 中的这些资源。

          【讨论】:

            猜你喜欢
            • 2018-11-28
            • 2021-03-19
            • 1970-01-01
            • 2019-12-13
            • 1970-01-01
            • 2018-11-21
            • 2021-12-02
            • 2021-07-22
            • 2020-10-15
            相关资源
            最近更新 更多