第06天:理解干净的 Terraform 项目结构
发布: (2025年12月8日 GMT+8 20:49)
3 min read
原文: Dev.to
Source: Dev.to
常见的 Terraform 项目结构
Terraform 会自动加载目录中的所有 *.tf 文件,拆分文件不会影响执行。一个典型且组织良好的布局如下所示:
terraform-project/
├── main.tf # 核心资源定义(例如 EC2、S3、VPC)
├── provider.tf # Provider 配置
├── backend.tf # 远程状态存储配置
├── variables.tf # 输入变量声明
├── terraform.tfvars # 具体变量值
├── outputs.tf # 输出定义
└── .gitignore # 被忽略的文件(见下文)
文件职责
main.tf– 包含主要的资源块。provider.tf– 设置 Provider(AWS、Azure、GCP 等)。backend.tf– 配置远程状态(S3 bucket、Terraform Cloud 等)。variables.tf– 声明所有输入变量及其类型和默认值。terraform.tfvars– 为变量提供实际的取值。outputs.tf– 定义terraform apply后要显示的输出值。
需要排除的敏感文件
某些 Terraform 产物不应提交到版本控制,因为它们可能包含机密或生成的数据。
# Terraform 状态文件(可能包含机密)
*.tfstate
*.tfstate.backup
# 本地 Terraform 目录
.terraform/
# 含有敏感值的变量文件
terraform.tfvars
为什么这很重要
- 状态文件 可能泄露凭证和基础设施细节。
- Provider 二进制文件 是自动生成的,仓库中不需要它们。
- 变量文件 常常保存敏感信息(密码、API 密钥)。
忽略这些文件可以保护你的基础设施和凭证。
第 06 天的关键收获
- Terraform 会自动读取工作目录中的每个
*.tf文件。 - 将配置拆分为逻辑文件可提升可读性和调试效率。
- 干净的项目结构可以防止错误,尤其是在大型代码库中。
- 正确的
.gitignore规则可保障敏感数据安全。 - 有条理的代码体现了专业的 Terraform 实践。
一个优秀的 Terraform 项目不仅仅在于你部署了哪些资源,还在于你如何组织这些资源。合理的文件结构让代码更易理解、更安全管理,并且适合实际使用。第 06 天再次强调,干净的基础设施即代码(IaC)始于干净的项目结构。