简而言之,是的,您发布的两个文件片段会起作用。
terragrunt 不支持多个源,我们一次只能调用一个模块。
terraform { ... }
更长的答案:将您的块terragrunt.hcl
视为指向“根地形模块”的指针很有用。此根模块与任何其他 terraform 模块一样,但很特别,因为它位于所有 terraform 配置的根或顶部。
因此 terragrunt 仅支持一个根模块,但该根模块可以根据需要使用任意数量的附加模块。
terragrunt 给我们的力量是重用这些根模块的能力。在 vanilla terraform 中,您不能重复使用此根模块。
在您的示例中,terragrunt 文件指向同一文件(./main.tf
)中的根模块。这工作得很好,但是因为我们使用 terragrunt 来保持干燥,我们通常会将这个根模块放在不同的目录中,甚至可能在 git repo 中并在 terragrunt.hcl 文件中适当地引用它
这是一个快速图表:
+-------------------------------+
| /my/root-module |
| |
| main.tf |
| |
+--------------+----------------+
+------------------+ | +----------------+
| /my/modules/vpc | | | /my/modules/s3 |
| | | | |
| module "foo" <----+----> module "bar" |
| | | |
| | | |
+------------------+ +----------------+
未显示的是指向 的 terragrunt.hcl 文件/my/root-module
,它可以位于磁盘或 git 中的其他位置。