项目详情

Terraform

云时代的「基础设施即代码」事实标准

GitHub 地址 BSL 1.1 GoHCL

更新于 2026-07-12

← 返回汇总
项目速览

一句话定位

云时代的「基础设施即代码」事实标准

HashiCorp 出品的 IaC 工具。用 HCL 配置文件声明期望的云资源状态,引擎自动算差异、排依赖、并行执行。覆盖几乎所有云平台,数万个 Provider。2023 年改 BSL 许可证引发 OpenTofu fork,2025 年随 HashiCorp 被 IBM 64 亿美元收购。

项目速览

核心数据

49.4k
GitHub Stars
19M
Go 代码行
10.7k
Forks
2014
首次发布

数据截至 2026-07-12。语言构成:Go 99.7% + HCL + Shell。

为什么存在

手动运维的三重困境

云资源碎片化

AWS/Azure/GCP/私有云各有控制台,多云环境配置割裂,难统一管理。

变更不可追溯

手动点控制台改资源,没人记得改了什么、谁改的、何时改的,事故频发。

环境难以复现

「在我机器上能跑」的云版——生产环境没人敢碰,重建一个测试环境耗时数天。

核心理念

四大设计哲学

核心机制

三段式工作流

Write Plan Apply

另有 init(初始化/装 Provider)、destroy(一键回收所有资源)。

架构解析

Terraform Core 架构

Layer 1
CLI / 命令层
用户入口。init/plan/apply/destroy 等子命令,解析参数、驱动执行流程。
Layer 2
配置加载器
解析 HCL 语法的 .tf 文件,构建内部资源图模型。
Layer 3 · 核心
Graph Engine(图引擎)
构建有向无环图(DAG)表达资源依赖,并行调度无依赖节点的创建/销毁,串行处理有依赖的。这是 Terraform 性能关键。
Layer 4
State Manager
读写 terraform.tfstate,支持本地/远程后端(S3/Consul/HCP),加锁防并发写冲突。
Layer 5
Provider Plugin
通过 gRPC 与独立 Provider 进程通信,每个 Provider 封装一个云平台的 API。可独立版本管理。
Layer 6
Registry
公开 Provider/Module 仓库(registry.terraform.io),init 时按版本约束自动下载。
核心机制

Resource Graph:依赖驱动的并行

Terraform 把所有资源建成一张 DAG,依赖边来自显式 depends_on、资源引用(aws_instance.web.subnet_id)或隐式推断。

VPC ──┬── Subnet ──┬── Security Group ──┐
      │            └── EC2 Instance ◄───┘
      └── Internet Gateway ── Route Table
快速上手

30 行代码起一台云主机

main.tf · 声明一个 AWS EC2 实例

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}
provider "aws" {
  region = "ap-northeast-1"
}
resource "aws_instance" "web" {
  ami           = "ami-0d52744d"
  instance_type = "t3.micro"
  tags = {
    Name = "WebServer"
  }
}

执行流程

# 初始化,下载 AWS Provider
terraform init
# 预演,看会创建什么
terraform plan
# Plan: 1 to add, 0 to change, 0 to destroy
# 确认执行
terraform apply
# aws_instance.web: Creating...
# aws_instance.web: Creation complete after 42s
# 销毁,回收资源
terraform destroy

安装:brew tap hashicorp/tap && brew install hashicorp/tap/terraform

生态体系

Provider + Module 双生态

Provider(云对接)

每个 Provider 封装一个平台的 API。Registry 上有数千个,覆盖:

  • 三大云:AWS / Azure / GCP(官方维护)
  • 国内云:阿里云 / 腾讯云 / 华为云
  • 基础设施:Kubernetes / Docker / VMware
  • SaaS:GitHub / Datadog / Snowflake
Module(配置复用)

可参数化的配置组合,类似函数。Registry 上有:

  • 官方认证 Module(terraform-aws-modules)
  • 社区贡献的 VPC/EKS/RDS 模板
  • 版本化引用:source = "..." version = "x.y.z"
  • 团队私有 Module Registry(HCP 付费)
许可证风云

2023 年的 BSL 地震

2023-08-10,HashiCorp 把 Terraform 许可证从 MPL 2.0(开源)改为 BSL 1.1(源码可见但限制商用竞争)。

所有权变迁

IBM 64 亿美元收购 HashiCorp

2025-02-27,IBM 完成 $6.4B 收购,HashiCorp 全线产品(Terraform/Vault/Consul/Nomad)并入 IBM。

战略意图

补齐 IBM 混合云拼图,Terraform 与 Red Hat Ansible 形成双自动化引擎。

许可证悬念

IBM 历史倾向开源(Red Hat 先例),但 Terraform 的 BSL 至今未回退,2026 中仍生效。

生态影响

担忧:大厂官僚拖慢迭代;乐观:资源充裕,企业支持更强。

适用场景

什么时候该用 Terraform

替代品对比

IaC 四强格局

工具语言模型特点
TerraformHCL声明式生态最大,多云王者,BSL 许可
OpenTofuHCL声明式Terraform 的开源 fork,命令兼容
PulumiTS/Python/Go命令式用真编程语言写 IaC,循环/函数自由
AnsibleYAML过程式偏配置管理,不擅长云资源编排
CDK(AWS)TS/Python声明式编译绑定 AWS 生态,跨云能力弱
风险提示

需要警惕的几点

潜力评估

未来空间

IaC 赛道无可争议的王者,但正面临 OpenTofu 的开源分流与 Pulumi 的开发者体验挑战。IBM 入主后能否稳住生态是最大变量。


上一个
Awesome
下一个
Vaultwarden
1 / 16