第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)始于干净的项目结构。

Back to Blog

相关文章

阅读更多 »

Terraform 数据源 (AWS)

Terraform 数据源是什么?Terraform 中的数据源是对现有资源的只读查找。Terraform 并不是创建新资源,而是查询…

第13天:Terraform 中的数据源

什么是 Data Sources?您可以使用 data sources 来获取现有 VPC、子网、AMI、security groups 等信息。hcl data 'data_source_type' 'dat...

第13天:Terraform 数据源

数据源 将数据源想象成一个电话簿,其中用户名和电话号码以键值对的形式通过 API 访问。不要将值硬编码……