【问题标题】:Terraform show and plan not matchingTerraform 显示和计划不匹配
【发布时间】:2021-01-16 11:43:19
【问题描述】:

我是(危险的)现场环境中的 terraform 初学者。

我运行了一个脚本来在 AWS Organizations 中创建 3 个新账户。生成了两个,由于服务限制错误,我无法创建一个。

补充一下,脚本中的 parent-id 有错误。我通过将控制台上的帐户移至正确的父 ID 来更正帐户。

这让我只需要创建一个帐户。

在对服务限制进行必要的更改后,我尝试运行脚本。该计划显示要添加 3 个帐户,要销毁 2 个帐户。无法删除和添加这些帐户。 (因为脚本现在是版本控制的 - 我不能只为这个帐户运行)。

这就是我所做的 - 我修改了 S3 存储桶中的 terraform 状态(父 ID)。确保 terraform show 反映了新的变化。 terraform 计划仍显示要添加 3 个帐户和要销毁 2 个帐户。

如何解决这个问题?任何帮助都深表感谢。

谢谢。

【问题讨论】:

  • 您手动编辑了 Terraform 状态文件?
  • 是的(由我的前辈指示)。我看到“terraform show”选择了我们必须对 OU 进行的最新修改。然而,“terraform plan”显示了要添加的 x 个帐户和要删除的 y 个帐户。
  • 如果 Terraform 想要销毁现有的存储桶,则意味着当前配置与 Terraform 代码不匹配。您能否在“地形计划”中确定桶的哪个字段/参数导致“强制替换”?或者更好的是,您可以上传“terraform plan”的完整输出作为要点吗?
  • 另外,尽可能避免直接/手动修改状态,尤其是如果您是 Terraform 新手。

标签: terraform


【解决方案1】:

代码是使用基础设施即代码时的真实来源,即使您更改状态文件,您也需要更新代码和状态文件。

当检测到您的资源有偏差时,Terraform 无法更新源代码。

所以你需要:

1- 将您在 AWS 中所做的手动更改写入 Terraform 代码。

2- 制定地形计划。它将刷新状态并显示是否仍有差异

【讨论】:

  • 对不起,我的错。 terraform show 未反映最新版本的 s3 存储桶中显示的修改,因此 3 创建和 2 销毁资源。手动更改已包含在云中。
  • 希望这能解释得更好。 $ terraform 秀 | grep ou-x-z parent_id = "ou-x-z" parent_id = "ou-x-z" $ terraform plan | grep ou-x-z - parent_id = "ou-x-z" -> null - parent_id = "ou-x-z" -> null + parent_id = "ou-x-z" + parent_id = "ou-x-z" + parent_id = "ou-x-z"我怎样才能挽救这个只添加一个帐户。谢谢。
【解决方案2】:

如果像我一样修改状态文件,后果自负。我按照如何清理你的 terraform 状态并进行了手术!

确保正确反映代码以选择更改。

【讨论】:

    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2019-10-13
    • 2021-12-27
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多