代码结构与命名规范
采用组织 Terraform 文件和模块的最佳实践,并为资源和变量使用一致的命名规范。
代码结构与命名规范 是 CoddyKit 上的免费 Terraform Infrastructure as Code 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Terraform Infrastructure as Code 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Terraform Infrastructure as Code 课程共包含 4 节课。
为什么要构建 Terraform 代码结构?
就像整理实际的工作空间一样,构建良好的 Terraform 代码结构可以让代码更易于理解、管理和协作。
良好的结构可以提高可读性、减少错误,并帮助新团队成员快速熟悉项目。
Terraform 必备文件
Terraform 项目通常从几个关键文件开始。将配置整理到这些文件中是一种常见的最佳实践:
main.tf:定义资源和模块。variables.tf:声明所有输入变量。outputs.tf:定义基础设施的输出值。versions.tf:指定 Terraform 和提供程序的版本。
为资源命名
统一的命名方式可以让您轻松识别资源。请遵循以下针对局部名称的通用指南(例如,resource "aws_instance" "my_instance" 中的 my_instance):
- 使用描述性名称:这个资源的作用是什么?
- 使用连字符或下划线:以提高可读性(例如
web-server-sg或web_server_sg)。 - 避免使用通用名称:
server不如app-frontend-server提供的信息丰富。
Terraform 局部资源名称在同一个模块中必须唯一。
变量命名规范
变量可以让配置变得灵活。为变量取好名称非常重要:
- 使用小写字母和下划线:这是最常见的命名规范(例如
instance_type、vpc_id)。 - 具体明确:这个变量控制什么?
- 添加描述:说明变量的用途,以便理解。
良好的变量名称可以帮助其他人了解您的模块需要哪些输入。
为输出值命名
输出值会公开有关已部署基础设施的重要信息。保持统一的命名方式有助于使用这些输出的人员:
- 使用小写字母和下划线:与变量类似,例如
web_server_ip。 - 描述值的内容:它提供什么信息?
- 添加描述:对于模块输出而言,描述其返回内容至关重要。
示例:简单配置
这个完整的 main.tf 文件展示了如何为资源、变量和输出采用良好的命名实践。您可以使用它运行 terraform init 和 terraform plan。
terraform {
required_providers {
null = {
source = "hashicorp/null"
version = "~> 3.0"
}
}
}
resource "null_resource" "example_web_server" {
# Descriptive resource name
triggers = {
always_run = timestamp()
}
}
variable "app_environment" {
description = "The application's deployment environment (e.g., dev, prod)."
type = string
default = "development"
}
output "resource_unique_id" {
description = "The unique ID of the example null resource."
value = null_resource.example_web_server.id
}构建 Terraform 模块结构
对于可复用组件,模块具有清晰的独立结构:
- 根模块:包含主配置的顶层目录。
- 子模块:每个子目录都包含自己的
main.tf、variables.tf、outputs.tf等文件。 - README.md:用于说明模块用途、输入和输出,是不可或缺的文件。
这样可以让模块保持自包含,并且易于复用。
组织项目文件夹
除了文件本身之外,如何组织项目文件夹也非常重要,尤其是对于较大的项目:
- 分离环境:为
dev、staging、prod分别创建专用文件夹,每个文件夹都有自己的配置。 - 公共模块文件夹:使用
modules目录存放自定义的可复用模块。 - 用于提供程序的根文件夹:顶层文件夹通常定义提供程序和状态后端。
这样可以防止配置漂移,并提高跨环境管理的效率。
项目文件夹示例
典型的多环境 Terraform 项目可能如下所示,从而实现清晰的隔离和复用:
.
├── modules/
│ ├── vpc/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── outputs.tf
│ └── ec2-instance/
│ ├── main.tf
│ └── variables.tf
├── environments/
│ ├── dev/
│ │ └── main.tf
│ ├── staging/
│ │ └── main.tf
│ └── prod/
│ └── main.tf
└── README.md检查您的理解
以下哪一种是为 Terraform 输入变量命名的最佳实践,该变量用于指定实例数量?
回顾:结构与命名
我们了解到,结构良好且命名统一的 Terraform 代码对于可读性、可维护性和团队协作至关重要。
- 将文件整理到
main.tf、variables.tf和outputs.tf中。 - 为资源、变量和输出使用具有描述性的小写下划线命名。
- 构建模块和项目文件夹结构,以实现复用和环境隔离。
这些实践为高效管理 IaC 奠定了基础!
常见问题解答
「代码结构与命名规范」课时是免费的吗?
是的 — 「代码结构与命名规范」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Terraform Infrastructure as Code 课程的其余内容,请升级到 CoddyKit PRO。 Terraform Infrastructure as Code 课程共包含 4 节课。
「代码结构与命名规范」这节课中我会学到什么?
采用组织 Terraform 文件和模块的最佳实践,并为资源和变量使用一致的命名规范。 你通过在浏览器中直接运行的动手代码来练习 Terraform Infrastructure as Code,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Terraform Infrastructure as Code 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Terraform Infrastructure as Code 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「代码结构与命名规范」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Terraform Infrastructure as Code 课中编写并运行代码吗?
能。每节 Terraform Infrastructure as Code 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 代码结构与命名规范
- 使用 Git 进行版本控制
- 团队协作与工作流
- 文档与自助式工作流