【问题标题】:terraform : removing duplicate resources created via terraformterraform :删除通过 terraform 创建的重复资源
【发布时间】:2020-11-26 08:00:08
【问题描述】:

我正在使用 terraform oci 提供程序。当我尝试使用 k8 节点池创建计算实例时遇到了失败,因此我删除了该 tfstate 文件并再次运行脚本,这导致创建了一些重复的资源,例如 vcn 、 LB 。由于一些限制,我想保留旧资源(那些在执行失败期间创建的资源)并删除新资源。两者都是用相同的名称创建的,新的 tfstate 文件包含新(重复)资源的详细信息。如何删除新的重复资源并使 tfstate 文件与所需资源一致?

【问题讨论】:

  • 当您承认删除了状态文件时,说 terraform 创建了重复资源是不公平的。 AFAIK 这里没有快速的胜利。使用远程后端,这将使您在未来免于这场悲剧。我不确定 Oracle Cloud,但云中的每个资源都必须有一些唯一的 ID。名称、标签可能重复。如果资源有限,我会通过 CLI/portal 删除它们。您是否尝试过 terraform destroy 使用新的状态文件,它必须只删除它创建的新创建的资源,而不考虑重复?

标签: terraform oracle-cloud-infrastructure


【解决方案1】:

这是Terraform Import 的一个很好的用例。

只要资源支持就可以在运行terraform delete -target <resource to delete>后导入已有资源terraform import <resource.path>

【讨论】:

  • 如果两个资源具有相同的名称和路径,我如何选择性地删除
  • 在 Terraform 中,两个资源不可能存在于具有完全相同路径的状态文件中。在您提到的情况下,旧资源在您导入之前不会出现在状态文件中,如果您在删除不正确的资源之前导入它,terraform 将无法导入。需要注意的一件事是,如果您使用 for_each 等一些资源,则由一个关键 EG resource["key"] 区分
猜你喜欢
  • 2020-11-07
  • 2020-08-31
  • 2022-07-28
  • 2019-10-31
  • 2022-01-21
  • 2018-10-23
  • 2021-08-28
  • 2021-01-21
  • 2018-09-24
相关资源
最近更新 更多