如何解决与“本地” Terraform相比,Terragrunt DRY配置的好处是什么?
我刚刚了解了Terragrunt。虽然我看到了Terraform中缺少的一些不错的东西,但我还没有完全理解DRY配置方面(这似乎是Terragrunt中最受推崇的方面)的真正好处。
在我所看到的所有这些示例中,HCL文件(例如,用于各个阶段的文件)对我而言似乎很多余-基本上包含与普通Terraform中的module {}
块中传递的信息相同的信息。
通过用纯实例化的Terraform编写仅实例化其他模块的“组成模块”,您能否用大致相同的代码量实现相同的目的?我想念什么吗?
解决方法
我想说,如今的典型设计模式是,您将拥有您称为“组合模块”的层,该层调用许多底层模块来完成它们的工作。这在其他世界中称为其他事物 - 有些人称之为蓝图,地形云称之为您的“配置”,但大多数设计都包含这些方面的内容。
terragrunt 允许您做的是获取“组合模块”并每次使用唯一变量多次实例化它。如果您还没有使该模块非常可重用,这将是不可能的,但如果是这样,则模式是:
-
Terragrunt 使用来自 1 个目录的唯一值调用您的合成模块。这会调用其所有底层模块,以便为您提供该目录/工作区/任何您的工具感觉如何调用它的完整部署。而这个区域有自己的远程状态。
-
Terragrunt 使用不同的值从另一个目录调用您的合成模块。这再次调用所有底层模块,为您提供不同目录/工作区/任何您想要调用的完整部署。这个区域也有自己的远程状态。
并且您可以以完全独特的方式重复使用相同的组合模块 50/100/无穷次,所有这些方式都不会相互冲突。
这是现在非常常见的设计模式。你也可以在没有 terragrunt 的情况下达到同样的效果。这是一个很好的包装器,但它使它变得非常容易。
还有很多其他好处,但就执行上下文而言,这就是它的帮助方式。
,我也是Terragrunt的新手,起初,我有同样的想法。
您读过https://terragrunt.gruntwork.io/docs#features吗?
正如Terragrunt自己所说,在TF之上添加某些功能只是Terraform之上的一薄层。一些DRY功能对我很突出:
- 生成远程后端配置
- 生成提供商配置代码
- 在多模块设计中不需要重复输入变量
- 可以在每个子模块以及所有模块上同时执行
如果同时使用Terraform模块组成和Terragrunt创建相同的设计以查看差异,也许会更清楚。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。