- 文档首页
Terraform
cc 版本的 Terraform(推荐)
Terraform开发指南
基本概念
基本概念
Terraform 是一款开源的“基础设施即代码”(Infrastructure as Code, IaC)工具,由 HashiCorp 公司推出。它允许您使用一种名为 HCL (HashiCorp Configuration Language) 的高级配置语言,像编写代码一样来定义、部署和管理你的云资源。通过 Terraform,您可以将服务器、网络、存储等基础设施的状态记录在文件中,并对其进行版本控制,从而实现自动化、可重复和可预测的资源管理。
Terraform 的工作流程围绕三个动作展开,形成一个完整的生命周期:
- 编码:在 .tf 文件中,使用 HCL 语法描述您想要创建的基础设施资源。
- 计划:运行 terraform plan 命令。Terraform 会分析你的配置文件,并与当前环境中的实际资源状态进行对比,生成一份详细的执行计划。这份计划会清晰地展示为了达到配置文件中定义的目标状态,需要新增、修改或删除哪些资源。
- 应用:运行 terraform apply 命令。在确认执行计划无误后,Terraform 会按照计划,通过调用云产品的 OpenAPI (cc 版本的 terraform 通过 CCAPI 统一代理)来精确地执行创建、修改或删除操作,最终使您的基础设施状态与配置文件保持一致。
此外,当资源不再需要时,可以通过 terraform destroy 命令,依据配置文件和状态记录,安全地销毁所有被管理的资源,避免资源遗留和成本浪费。
Terraform 的强大功能主要依赖以下几个核心组件的协同工作:
- Terraform Core:Terraform 的核心引擎,负责解析配置文件、管理资源状态、生成和执行计划、以及与插件进行通信。
- Provider:连接 Terraform 与具体云服务商(如火山引擎、Byteplus 等)的“适配器”。每种 Provider 都封装了平台的 API 调用逻辑,使得 Terraform 能够理解并管理该平台上的资源。
- State:状态文件,通常存储为 terraform.tfstate。它是一个 JSON 格式的文件,记录了由 Terraform 管理的所有资源的实际状态以及依赖关系。State 是 Terraform 的“单一事实来源”,确保了 Terraform 能够准确地追踪和管理资源。
一个典型的 Terraform 项目通常由以下几个文件组成,这是一种推荐的最佳实践,有助于保持代码的整洁和模块化。
- main.tf:项目的核心入口文件,通常用于定义核心的资源、数据源和对其他模块的调用。
- provider.tf:声明当前模块使用到的提供商的名称、版本以及认证方式。
- variables.tf:用于声明输入变量,这些变量允许你将配置中的动态值提取出来,使得配置更加灵活和可复用。
- outputs.tf:用于声明输出变量,当 Terraform 成功应用后,可以在该文件中定义需要被导出的资源属性值。
您也可以将一组相关的资源定义封装在一个独立的目录中,形成一个模块。其他配置可以通过 module 块来调用该模块,从而降低核心入口文件的复杂度并提升复用性。
Terraform 状态是基础设施配置的元数据存储库,Terraform 把它管理的资源状态保存在一个名为 terraform.tfstate的状态文件中。Terraform 使用状态来创建执行计划并更改您的基础设施,在计划阶段会读取代码期望状态和上一次记录的状态计算出需要创建、更新还是销毁哪些资源。
在团队协作管理基础设施的场景下,推荐将状态文件放至远程存储,当基础设施发生变化时,Terraform 状态文件会及时更新并同步,保证团队中的所有人员将始终使用最新的基础设施状态。
最近更新时间:2026.03.17 15:06:00