【问题标题】:Listing out the resources that are not managed via terraform列出不通过 terraform 管理的资源
【发布时间】:2022-01-11 20:38:07
【问题描述】:

我有一个资源组,其中许多资源通过 terraform 进行管理。但是,最近几天,我注意到有些资源是用户手动创建的。有没有一种简单的方法可以找出或列出不通过 terraform 管理的资源?

【问题讨论】:

  • 您可能需要使用 Terraformer,然后将该状态与您当前的托管资源状态进行比较。不过,对此没有超级好的答案。

标签: terraform terraform-provider-azure


【解决方案1】:

Terraform 仅跟踪连接到 Terraform 资源的对象,因此我认为您需要通过提出以下问题来进行此分析:

  1. 资源组中的所有对象是什么?将这组资源称为 A。
  2. Terraform 跟踪的所有对象是什么?将这组资源称为 B。
  3. 如果我们从集合 A 中减去集合 B,还剩下什么?这就是你的结果。

这里的主要挑战是资源集 A 仅以 Azure 的术语表示,而资源集 B 以 Terraform 的术语表示,因此可能需要进行一些自定义分析才能将它们都转换为可以转换的形式决定上面的问题 3。

幸运的是,hashicorp/azurerm 提供程序在将完全限定的 Azure 资源 ID 放入大多数资源类型的 id 字段中非常一致,因此如果您使用 terraform show -json 来获取保存在其中的内容的 JSON 表示状态,然后使用您自己的一些脚本从类型名称以azurerm_ 开头的任何资源中仅提取id 属性,这有望为您提供资源集 B 作为资源集的合理答案ID。

然后,您有望使用 Azure API 到 retrieve all of the objects belonging to your resource group 并获取每个结果的 id 以获取资源集 A。

对此没有现成的答案,因为 Terraform 被有意设计为 与它不管理的对象进行交互,除非明确要求使用 terraform import,但希望以上足以构建满足您需求的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2021-07-16
    相关资源
    最近更新 更多