首页 > 解决方案 > 如何正确安排 terraform 文件/模块

问题描述

我有多个可重复使用的terraform模块。我正在重用这些模块来创建具有不同配置的相同资源。

所以我的文件夹结构是这样的:

modules/
    vpc
    subnet
    lb
    s3
main.tf
variables.tf

因此,在我的内部,我main.tf一次又一次地使用上述模块(即,每个模块重复/重复使用超过 10 次)

所以我想知道有没有更好的方法来安排这些模块main.tf

作为建议,我可以在如下不同的 terraform 文件中重复使用这些模块,并在其中调用这些 terraform 文件main.tf以提高可读性和理解性吗?

modules/
    vpc
    subnet
    lb
    s3
service_one.tf
service_two.tf
.
.
service_ten.tf
main.tf
variables.tf

在里面main.tf,我可以调用这些 service_*.tf 文件,这样main.tf会更干净。

谢谢

标签: terraform

解决方案


不确定我是否做对了。一般关于结构:TF Modules Structure

Terraform 将文件夹中的所有内容视为模块的内容。因此,您当然可以根据需要创建任意数量的 *.tf 文件。您甚至不必在 main.tf 中引用/调用它们。主文件夹(不包括子文件夹)中的所有 *.tf 文件构成主模块,每个子文件夹自动成为子模块。可以把它想象成一个文件夹中的所有 *.tf 文件都合并为一个大文件。

一般来说,我只在 main.tf 中定义操作 terraform 所需的内容,例如后端、terraform 和提供程序版本等。除此之外,我根据更适合项目的内容将资源分组为主题或服务/产品,例如:

rds.tf
ecs.tf
networking.tf

或者

product1.tf (includes rds, lambdas etc. for product1)
product2.tf (includes rds, lambdas etc. for product2)

推荐阅读