云时代的「基础设施即代码」事实标准
更新于 2026-07-12
← 返回汇总云时代的「基础设施即代码」事实标准
HashiCorp 出品的 IaC 工具。用 HCL 配置文件声明期望的云资源状态,引擎自动算差异、排依赖、并行执行。覆盖几乎所有云平台,数万个 Provider。2023 年改 BSL 许可证引发 OpenTofu fork,2025 年随 HashiCorp 被 IBM 64 亿美元收购。
数据截至 2026-07-12。语言构成:Go 99.7% + HCL + Shell。
AWS/Azure/GCP/私有云各有控制台,多云环境配置割裂,难统一管理。
手动点控制台改资源,没人记得改了什么、谁改的、何时改的,事故频发。
「在我机器上能跑」的云版——生产环境没人敢碰,重建一个测试环境耗时数天。
.tf 配置,声明资源与依赖terraform plan 生成执行计划,对比 state 与配置算出 diff,展示「将创建/修改/销毁什么」terraform apply 经人工确认后按依赖拓扑顺序执行,更新 state另有 init(初始化/装 Provider)、destroy(一键回收所有资源)。
init/plan/apply/destroy 等子命令,解析参数、驱动执行流程。.tf 文件,构建内部资源图模型。terraform.tfstate,支持本地/远程后端(S3/Consul/HCP),加锁防并发写冲突。init 时按版本约束自动下载。Terraform 把所有资源建成一张 DAG,依赖边来自显式 depends_on、资源引用(aws_instance.web.subnet_id)或隐式推断。
VPC ──┬── Subnet ──┬── Security Group ──┐
│ └── EC2 Instance ◄───┘
└── Internet Gateway ── Route Table
terraform graph 导出 Graphviz 图,排查依赖问题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 封装一个平台的 API。Registry 上有数千个,覆盖:
可参数化的配置组合,类似函数。Registry 上有:
source = "..." version = "x.y.z"2023-08-10,HashiCorp 把 Terraform 许可证从 MPL 2.0(开源)改为 BSL 1.1(源码可见但限制商用竞争)。
2025-02-27,IBM 完成 $6.4B 收购,HashiCorp 全线产品(Terraform/Vault/Consul/Nomad)并入 IBM。
补齐 IBM 混合云拼图,Terraform 与 Red Hat Ansible 形成双自动化引擎。
IBM 历史倾向开源(Red Hat 先例),但 Terraform 的 BSL 至今未回退,2026 中仍生效。
担忧:大厂官僚拖慢迭代;乐观:资源充裕,企业支持更强。
| 工具 | 语言 | 模型 | 特点 |
|---|---|---|---|
Terraform | HCL | 声明式 | 生态最大,多云王者,BSL 许可 |
OpenTofu | HCL | 声明式 | Terraform 的开源 fork,命令兼容 |
Pulumi | TS/Python/Go | 命令式 | 用真编程语言写 IaC,循环/函数自由 |
Ansible | YAML | 过程式 | 偏配置管理,不擅长云资源编排 |
CDK(AWS) | TS/Python | 声明式编译 | 绑定 AWS 生态,跨云能力弱 |
IaC 赛道无可争议的王者,但正面临 OpenTofu 的开源分流与 Pulumi 的开发者体验挑战。IBM 入主后能否稳住生态是最大变量。