【问题标题】:Benefits of Terragrunt DRY configuration over "Native" Terraform?Terragrunt DRY 配置优于“本机”Terraform 的优势?
【发布时间】:2020-12-07 20:30:15
【问题描述】:

我刚刚了解了 Terragrunt。虽然我看到了 Terraform 中缺少的一些好东西,但我并不完全理解 DRY 配置方面的真正好处(这似乎是 Terragrunt 最受推崇的方面)。

在我见过的所有这些示例中,HCL 文件(例如,用于各个阶段的文件)对我来说看起来非常多余 - 并且基本上包含在纯 Terraform 中的 module {} 块中传递的相同信息。

你不能通过在普通的 Terraform 中编写一个只实例化其他模块的“组合模块”,用大致相同数量的代码来实现同样的事情吗?我错过了什么吗?

【问题讨论】:

    标签: terraform terragrunt


    【解决方案1】:

    我也是 Terragrunt 的新手,一开始我也有同样的想法。

    你读过https://terragrunt.gruntwork.io/docs#features吗?

    正如 Terragrunt 自己所说,它只是 Terraform 之上的一个薄层,用于在 TF 上添加某些功能。一些令我印象深刻的 DRY 功能:

    1. 生成远程后端配置
    2. 生成提供者配置代码
    3. 不需要在多模块设计中重复输入变量
    4. 可以同时在每个子模块以及所有模块上执行

    如果您使用 Terraform 模块组合和 Terragrunt 创建相同的设计以查看差异,可能会更清楚。

    【讨论】:

    • 我认为当前在 Terraform 中的解决方案与迁移到 Terragrunt 的相同设计之间没有太大区别。因此我的问题在这里。
    • 再想一想,我认为只有在使用 Terragrunt 将您的 root 模块分成更小的部分时才会开始出现好处。然后您可以减少后端和提供程序配置中的冗余 - 正如您已经说过的那样。也许 Terragrunt 是为了支持你吐出你的根模块。结合它的依赖特性是有意义的。我猜 Terragrunt 文档不善于指出它的好处......
    • 是的,从表面上看,如果我们只是有一个环境的大根模块,那么使用 tf 模块组合与 Terragrunt 不会有太多区别。 Terragrunt 将允许我们为多云、多区域和多环境使用深层文件夹结构来隔离 terraform 配置并实现 DRY root/ - cloud/ -- region/ --- env/ ---- infra/ ----- .terragrunt.hcl ---- app/ ----- .terragrunt.hcl ---- 等等 ----- .terragrunt.hcl
    【解决方案2】:

    我想说的是,如今典型的设计模式是,您将拥有您所指的“组合模块”层,调用许多底层模块来完成它们的工作。这在其他世界中被称为其他东西 - 有些人称它们为蓝图,terraform cloud 将其称为您的“配置”,但大多数设计都包含这些内容。

    terragrunt 允许您做的是获取该“组合模块”并每次使用唯一变量多次实例化它。如果您还没有使该模块非常可重用,这是不可能的,但如果是这样的话,模式是:

    1. Terragrunt 使用来自 1 个目录的唯一值调用您的合成模块。这会调用其所有底层模块,为您提供该目录/工作区/无论您的工具感觉如何调用它的完整部署。而且这个区域有自己的远程状态。

    2. Terragrunt 使用不同的值从另一个目录调用您的合成模块。这再次调用所有底层模块,为您提供不同目录/工作区/您想要调用的任何内容的完整部署。这个区域也有自己的远程状态。

    您可以以完全独特的方式重复使用相同的合成模块 50/100/无限次,所有这些方式不会相互冲突。

    这是现在很常见的设计模式。你也可以在没有 terragrunt 的情况下达到同样的效果。这是一个很好的包装器,但它非常容易。

    还有很多其他好处,但就执行上下文而言,这就是它的帮助。

    【讨论】:

      猜你喜欢
      • 2013-09-11
      • 2012-09-20
      • 1970-01-01
      • 2015-05-23
      • 2014-03-06
      • 2020-11-23
      • 2010-11-15
      • 2012-04-20
      • 2011-03-27
      相关资源
      最近更新 更多