【问题标题】:Best way to generate a list of non-Terraform created resources生成非 Terraform 创建资源列表的最佳方法
【发布时间】:2021-03-16 09:09:22
【问题描述】:

几天来,我正在研究一种生成非 terraform 创建资源列表的方法。目前我正在使用标记方法,但这意味着无法标记的 AWS 资源也应从 AWS Config 查询中排除。

标记部分也很麻烦,因为这必须手动完成。

  1. 有没有办法告诉 Terraform(或 Terragrunt)自动在资源上使用通用标签?
  2. 有没有办法让 Terraform 或任何其他工具创建状态文件中不可用的资源列表?

【问题讨论】:

  • 最有可能:没有。对这两个问题。你为什么要那样做?
  • github.com/rebuy-de/aws-nuke 回答了第二个问题(尽管它没有排除基于 Terraform 的资源的概念)。
  • @luk2302 查看是否在我们不知情的情况下在我们的环境中创建了某些东西,还可以跟踪所有内容,然后甚至可以删除“不需要的”资源。
  • 你如何存储你的状态文件?在 S3 中?

标签: amazon-web-services terraform terragrunt


【解决方案1】:
  1. 有没有办法告诉 Terraform(或 Terragrunt)自动在资源上使用通用标签?

不,这是不可能的。可以说,它会违背 Terraform 的概念模型的声明,因此这不太可能成为 Terraform 的一个特性。

Terraform Enterprise 具有可用于强制用户提供特定标签的策略实施,但我认为它不会自动注入标签。

  1. 有没有办法让 Terraform 或任何其他工具创建状态文件中不可用的资源列表?

没有。 Terraform 关心其状态文件中的资源。它不关心其他任何事情。


我个人认为你从错误的角度来处理这个问题。如果可能的话,询问 Terraform“你知道什么”会很方便(但事实并非如此),但如果你查阅它的功能列表,你会得到更好的答案 * 了解并从中推断资源是否属于 Terraform。

我不知道您正在使用的工具或您希望的工作流程,但您可以这样做:

  • 使用terraform show -json 命令生成一个 JSON 文档,表示 Terraform 状态文件中的所有已知基础设施。

  • 使用工具 jq 解析 JSON 以获得资源 ID 列表

  • 使用aws resourcegroupstaggingapi get-resources 命令生成list of all known resources,或者甚至是aws-list-all 之类的工具

  • 遍历“所有资源”列表中的每个条目;对于每一个,遍历“Terraform-managed”列表中的每个条目;如果没有匹配项,请将资源 ID 添加到“not-managed-by-Terraform”资源列表中

【讨论】:

    【解决方案2】:

    由于没有很好的方法可以知道资源是否由 terraform 管理,我会尝试以下方法:

    使用terraformer 导入您的所有资源(并非所有资源都受 terraformer 支持,因此这不是一个完整的解决方案),在您拥有此列表后,只需从中减去您的 terraform 状态管理的所有资源.运行terraform plan 时,您可以看到您的资源ID。

    如果您有所有 terraform 托管资源的标签,您可以使用 terraformer 过滤它们

    【讨论】:

      【解决方案3】:

      我同意 Chuppa Chump 的回答,如果不是很明显,我会添加,以确保所有 Terraform 创建的资源都有一个标签,表明它是由 Terraform 创建的。例如,CreatedBy = "Terraform" OR Automation = "Terraform"。然后任何没有 Automation 或 CreatedBy Tag 的资源都不是由 terraform 创建的。

      【讨论】:

        【解决方案4】:

        对于仍然绊倒这个的人。似乎有一个社区创建了一个名为 Driftctl 的工具,可以根据您的 Terraform 状态检查环境。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-05
          • 1970-01-01
          相关资源
          最近更新 更多