terraform - 如何正确安排 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
会更干净。
谢谢
解决方案
不确定我是否做对了。一般关于结构: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)
推荐阅读
- airflow - Airflow 中的多个 BashOperator 无法识别当前文件夹
- php - PHP mysql数据库两个请求同时在同一张表上
- mocha.js - afterEach 顶层描述
- java - 如何将文件名作为参数传递,创建然后读取文件
- android - 将 Firebase Analytics 安装到我的 React Native Android 版本时遇到问题
- apache-kafka - Spring Cloud Stream 与 Kafka Stream 的 Exactly Once 功能
- java - 在 android studio 上创建我的第一个 HelloWorld 应用程序的问题
- java - 使用 Mockito 进行 Spring Boot 服务层单元测试 - 模拟数据为空
- javascript - 如何从嵌套数组中获取字段值?
- c++ - 如何使用 GLM 设置鸟瞰相机?