【问题标题】:Forced tagging for terraform resources in AWSAWS 中 terraform 资源的强制标记
【发布时间】:2019-10-11 18:12:55
【问题描述】:

我想知道是否有一种好方法可以为所有开发人员强制标记 AWS 资源。或者至少提供一组预定义的自动插入的标签。这背后的原因是一些团队成员忘记标记他们的资源或使用不同的标记集。此外,如果您想为将来的部署更改标签,则必须在任何地方进行更改。 因此,到目前为止,我的想法是创建一个地图,其中包含应默认设置的所有标签(项目、版本、成本分配)。现在,每个人都可以使用此默认列表并在需要时为其资源添加更多标签。但不能保证每个人都使用此地图进行默认标记。 我不知道如何实现这一目标,但也许有人有一个好主意……

【问题讨论】:

  • 我不知道有什么会自动执行此操作。一般来说,执行此类政策的最佳方式是不向无法正确使用政策的人授予访问权限。
  • 说起来容易做起来难。此外,这也将是一个舒适的增益。但是您是对的,我认为没有办法强制执行此操作。我只是想试一试...
  • 有了不错的 terraform 设置,应该不会那么难。任何不够聪明而无法正确标记事物的人都应该使用由真正知道自己在做什么的人创建的模块。这些模块可以在所有东西上设置必要的标签。还可以创建一个单独的进程来每隔一段时间搜索未标记的资源,并使用 CloudTrail 找出创建它们的人,以便适当地惩罚它们。

标签: amazon-web-services terraform terraform-provider-aws


【解决方案1】:

选项 1:在 Terraform Enterprise 中,您可以使用 Sentinel 来强制实施资源应该是什么样子的策略。有关强制标签,请参阅 Hashicorp 示例:https://github.com/hashicorp/terraform-guides/blob/master/governance/second-generation/aws/enforce-mandatory-tags.sentinel

选项 2:如果您没有 Terraform Enterprise,请使用填充模块内标签的参数创建模块,并阻止使用“普通”aws 资源。

选项 3:将标签检查作为自动化测试套件的一部分(例如,使用 terratest),并在没有适当标签时让测试失败。

【讨论】:

  • 实际上这回答了我的问题,即使我想为此提供更好的流程。谢谢。
【解决方案2】:

为了解决这个问题,我们创建了一个tags 模块,每个项目在定义资源时都应该使用它。该模块具有product_nameservice_nameextra_tags 参数的参数。然后,它将这些值与内部地图组合并导出最终地图,以便在整个项目中使用。

在我们的团队文化中,每个团队都明白标记对于保持对 AWS 中的资源和成本的控制和责任很重要。不标记您的资源是获得标记为 declinedneeds work 的 PR 的原因。

我们确实使用 AWS Config 来监控未标记的资源并通知我们,但是保持资源标记的最佳防线是文化和拉取评论。

【讨论】:

    猜你喜欢
    • 2020-04-06
    • 2019-02-27
    • 2018-12-31
    • 2022-01-12
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 2019-11-30
    • 2015-11-29
    相关资源
    最近更新 更多