首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用terragrunt应用terraform根模块构造?

如何使用terragrunt应用terraform根模块构造?
EN

Stack Overflow用户
提问于 2022-08-05 11:02:44
回答 1查看 258关注 0票数 1

我是第一次在terragrunt代码库上工作,过去我经常使用terraform而不使用terragrunt。我有点搞不懂地形的构造有多强。我通常会这样组织我的地形:

代码语言:javascript
复制
main.tf
--> module
    main.tf
--> module2
    main.tf

这是terraform文档上的最佳实践:

根模块 Terraform总是在单个根模块的上下文中运行。完整的Terraform配置由根模块和子模块树(包括根模块调用的模块、这些模块调用的任何模块等)组成。

来源

但地球上的任何结构似乎都不代表这一点。它的设计似乎是为了使每个模块是独立的,并使用run-all命令运行。

这对我来说似乎是个问题,从现有的代码库中我可以看到,这为每个模块初始化了terraform,我认为这会导致模块之间共享秘密的问题。因此,我更愿意使用一个根模块和多个子模块。

我找不到一个能让我这么做的地形模式?

对于如何分解这一责任,我也感到困惑,我实际上是构造了我的terraform (如上面所示),还是需要一个额外的根.hcl文件?

我在找一个就像这样我想

代码语言:javascript
复制
└── live
    ├── prod
    │   ├── terragrunt.hcl
    │   ├── app
    │   │   └── terragrunt.hcl
    │   ├── mysql
    │   │   └── terragrunt.hcl
    │   └── vpc
    │       └── terragrunt.hcl
    ├── qa
    │   ├── terragrunt.hcl
    │   ├── app
    │   │   └── terragrunt.hcl
    │   ├── mysql
    │   │   └── terragrunt.hcl
    │   └── vpc
    │       └── terragrunt.hcl
    └── stage
        ├── terragrunt.hcl
        ├── app
        │   └── terragrunt.hcl
        ├── mysql
        │   └── terragrunt.hcl
        └── vpc
            └── terragrunt.hcl

但是,这个示例只讨论指定provider块,而不涉及根main.tf。所以我迷路了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-05 11:42:43

用于使用输入、创建资源和提供输出的每个TF模块。模块的布线是通过main.tf完成的,您指的是平原地形。

在现在使用Terragrunt的情况下,连接将由terragrunt.hcl文件完成。在模块级别(例如live/prod/app/terragrunt.hcl),您可以定义模块依赖项,即该模块输入变量的输入值在哪里,例如:

代码语言:javascript
复制
inputs {
  username = dependency.iam.output.user.name
}

考虑到这一点,您可能使用或不使用根级别的terragrunt.hcl文件。如果要调用父文件夹terragrunt.hcl代码,则需要将以下块添加到模块中:

代码语言:javascript
复制
include "root" {
  path   = find_in_parent_folders()
  expose = true
}

请参阅此函数这里的文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73248728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档