返回架构笔记
Arch Day 122

Arch Day 122: Infrastructure as Code深度 — Terraform vs OpenTofu vs Pulumi vs CDK

Infrastructure as Code (IaC)是用代码声明式管理基础设施的方法论,其核心价值不是"写代码创建资源",而是让基础设施具备可版本控制、可审计、可重复、可测试的软件工程属性。

2026-07-30
第五阶段 - 云架构深度
IaCTerraformOpenTofuPulumiAWSCDK基础设施即代码

日期: 2026-07-30 (Day 122) 阶段: 第五阶段 - 云架构深度 标签: #IaC #Terraform #OpenTofu #Pulumi #AWSCDK #基础设施即代码


核心概念

一句话定义

Infrastructure as Code (IaC)是用代码声明式管理基础设施的方法论,其核心价值不是"写代码创建资源",而是让基础设施具备可版本控制、可审计、可重复、可测试的软件工程属性。

为什么关注

2023-2026年IaC领域发生了剧烈变化:HashiCorp许可证变更 → OpenTofu分叉 → IBM $65亿收购HashiCorp → CDKTF归档。选错IaC工具可能面临许可证风险和技术债务。

误区与反模式

误区真相
"Terraform是开源的"2023年8月已改为BSL 1.1,不是开源
"IaC工具都差不多"声明式HCL vs 命令式编程语言,范式完全不同
"用CDK就不用学CloudFormation"CDK底层生成CloudFormation,调试时必须理解CF
"State文件放Git就行"State包含敏感数据,必须加密+远程存储

知识点详解

1. 四大IaC工具全面对比

维度TerraformOpenTofuPulumiAWS CDK
最新版本1.x (BSL 1.1)1.12 (2026.02)3.xv2
许可证BSL 1.1 (非开源)MPL 2.0 (真开源)Apache 2.0Apache 2.0
语言HCL (声明式)HCL (兼容TF)Python/TS/Go/Java/C#TS/Python/Java/C#/Go
多云300+ providers兼容所有TF providers复用TF providers仅AWS
State加密需外部方案原生支持 (v1.7+)原生支持N/A (CloudFormation)
AI能力有限社区驱动Neo (Agentic AI)CDK Mixins
治理方HashiCorp/IBMLinux Foundation/CNCFPulumi IncAWS

2. HashiCorp许可证风暴与IBM收购

时间线

  1. 2023.08: Terraform从MPL 2.0改为BSL 1.1,禁止第三方提供竞争性托管服务
  2. 72小时内: OpenTofu manifesto发布,社区迅速分叉
  3. 2024.04: IBM以**$65亿**收购HashiCorp
  4. 2025.12: CDKTF正式sunset归档,仓库只读

影响:41%的平台工程师将IaC许可证不确定性列为工具链规划的前三大风险。

3. OpenTofu关键特性演进

版本关键特性
1.7原生State加密(PBKDF2/AWS KMS/GCP KMS)
1.8Early variable evaluation(变量可用于module sources)
1.9Provider iteration with for_each
1.11Ephemeral resources(secrets仅存内存不写入state)
1.12Provider-defined functions in dynamic blocks

4. Pulumi Neo — AI驱动的IaC

Pulumi 2025年推出Neo——Agentic AI平台:

  • 自然语言到基础设施:描述需求,Neo自动生成代码
  • Custom Instructions:编码组织标准,Neo自动应用
  • MCP Server:连接Claude Code、Cursor等AI编辑器

5. AWS CDK v2最新改进

  • CDK Mixins(2026.03 GA).with()语法为Construct添加可组合功能
  • EKS v2 L2 Constructs:原生资源支持,单栈多集群
  • 合成引擎优化:大型栈从分钟级缩短到秒级

6. 选型决策

场景推荐原因
多云大型企业(开源优先)OpenTofu真开源、state加密、Linux Foundation治理
开发者为主的团队Pulumi用熟悉语言、Neo AI、测试友好
纯AWS环境AWS CDK最紧密集成、高级抽象
已有大量TF代码OpenTofu无缝迁移、不受BSL限制

面试题

问题:如何处理IaC的State管理和安全?

回答

  1. 远程Backend:S3+DynamoDB(锁)/Terraform Cloud/OpenTofu Cloud
  2. State加密:OpenTofu原生支持KMS加密,Terraform需要backend层加密
  3. 最小权限:State文件包含敏感数据,CI/CD用临时凭证访问
  4. State锁定:防止并发修改导致状态不一致
  5. Drift检测:定期plan检测手动变更(OpenTofu/Crossplane自动修复)