0Pricing
Terraform Infrastructure as Code · 课时

代码结构与命名规范

采用组织 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 代码结构与命名规范
  2. 使用 Git 进行版本控制
  3. 团队协作与工作流
  4. 文档与自助式工作流
← 返回 Terraform Infrastructure as Code