模块与代码复用
了解 Terraform 模块如何封装可复用基础设施、接收输入、公开输出,并让配置保持 DRY 且易于维护。
模块与代码复用 是 CoddyKit 上的免费 Terraform Infrastructure as Code 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Terraform Infrastructure as Code 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Terraform Infrastructure as Code 课程共包含 4 节课。
为什么需要模块
在不同环境中重复复制相同的资源会导致偏差和错误。模块是一个可复用、参数化的 Terraform 资源容器,您可以使用不同的输入多次调用它,同时让代码保持 DRY。
每个配置都是一个模块
您运行 terraform apply 的目录就是根模块。它调用的模块是子模块。因此,您已经在使用模块,只是在继续添加更多模块。
模块结构
模块其实就是一个包含 .tf 文件的文件夹,通常包括:
main.tf—— 资源。variables.tf—— 输入变量。outputs.tf—— 对外公开的值。
定义输入
输入以模块内部变量的形式声明,使调用方可以自定义行为。
variable "bucket_name" {
type = string
}
variable "versioning" {
type = bool
default = false
}使用输入
模块中的资源会引用其变量。
resource "aws_s3_bucket" "this" {
bucket = var.bucket_name
}公开输出
输出会向调用方返回有用的值,例如 ID 或 ARN。
output "bucket_arn" {
value = aws_s3_bucket.this.arn
}调用模块
根模块通过 module 块调用子模块,并传入输入。
module "logs" {
source = "./modules/bucket"
bucket_name = "app-logs"
versioning = true
}引用模块输出
您可以在配置的其他位置通过 module.NAME.OUTPUT 访问模块的输出。
resource "aws_s3_bucket_policy" "p" {
bucket = module.logs.bucket_arn
}模块来源
source 可以是本地路径、Git URL 或公共 Terraform Registry。
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"
}模块版本管理
请始终为注册表模块固定 version,以便有意地进行升级。添加或更改模块后运行 terraform init,以下载这些模块。
设计优秀的模块
让模块保持专注(只负责一个逻辑组件),只公开所需的输入,记录输出,并避免将特定环境的值硬编码。小型、可组合的模块胜过一个庞大的模块。
快速检查
测试您对模块的理解。
回顾
模块让 Terraform 具备可复用性并遵循 DRY 原则。
- 模块是一个包含 .tf 文件、变量(输入)和输出的文件夹。
- 使用
module块和source调用模块;通过module.NAME.OUTPUT访问结果。 - 来源可以是本地路径、Git 或注册表;固定
version,并运行init。 - 设计小型、专注且文档完善的模块。
常见问题解答
「模块与代码复用」课时是免费的吗?
是的 — 「模块与代码复用」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Terraform Infrastructure as Code 课程的其余内容,请升级到 CoddyKit PRO。 Terraform Infrastructure as Code 课程共包含 4 节课。
「模块与代码复用」这节课中我会学到什么?
了解 Terraform 模块如何封装可复用基础设施、接收输入、公开输出,并让配置保持 DRY 且易于维护。 你通过在浏览器中直接运行的动手代码来练习 Terraform Infrastructure as Code,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Terraform Infrastructure as Code 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Terraform Infrastructure as Code 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「模块与代码复用」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Terraform Infrastructure as Code 课中编写并运行代码吗?
能。每节 Terraform Infrastructure as Code 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。