1. 混合云与Terraform定位

混合云并不是“把公有云和私有云放在一起”这么简单。它真正要解决的问题是:业务系统的一部分必须留在自建机房或专有云中(例如核心数据库、受监管数据、已有的大型机/虚拟化资产),另一部分又希望借助公有云获得弹性、托管服务与全球覆盖。于是,网络、身份、镜像、配置、发布流程都要跨越两个甚至多个环境协同工作。Terraform 的价值,正是在这种“多环境、多供应商、多团队”的背景下,把基础设施从手工操作变成可版本化、可评审、可重复执行的代码。

混合云的架构特征

从架构视角看,混合云通常具备四个显著特征。第一是资源位置异构:本地可能是 VMware vSphere、OpenStack 或裸金属,公有云侧则是 AWS、Azure、阿里云等,API 模型、网络语义、计费方式完全不同。第二是网络连通依赖专线或 VPN:本地网段与云上 VPC 通过专线、IPsec VPN 或云企业网打通,CIDR 不能重叠,路由表需要双向可达。第三是身份与权限跨域:本地 LDAP/AD 与云上 IAM 往往需要联邦或映射,否则同一套发布流程无法统一鉴权。第四是数据与合规边界:哪些数据可以出本地、哪些必须留在本地,直接决定了哪些资源能放在公有云。

这些特征决定了混合云不能靠“各管各的”控制台操作来维护。一旦本地和云上资源需要联动(例如云上应用要访问本地数据库、本地备份要写入云对象存储),任何一次手工改动都可能破坏连通性或合规性。因此,混合云天然需要基础设施即代码(IaC)来提供一致的定义、变更记录和回滚能力。

混合云资源编排:Terraform 统一控制面 Terraform Core 状态管理 · 依赖图 · 变更计划 terraform plan / apply Provider: vSphere 本地虚拟机 / 模板 / 网络 Provider: AWS VPC / EC2 / RDS / S3 Provider: 阿里云 VPC / ECS / OSS / RDS 本地数据中心 核心数据库 AD / LDAP 身份源 备份存储 10.10.0.0/16 公有云 VPC Web / 应用集群 托管数据库 对象存储 10.20.0.0/16 专线 / IPsec VPN 远程 State 后端 记录真实资源 ID 与属性 支持锁定与版本控制 S3 + DynamoDB / OSS 团队共享同一事实来源 同一份 HCL 代码 → 统一计划 → 分别落到本地与云上,State 作为跨环境事实来源

Terraform 在多云与混合云中的角色

Terraform 的定位不是“替代云控制台”,而是充当跨供应商的统一编排层。它通过 Provider 插件把不同云和本地平台的 API 抽象成统一的资源模型:vSphere 的虚拟机、AWS 的 VPC、阿里云的 ECS,在 HCL 中都以 resource 块描述。执行时,Terraform 先读取当前 State,再对比配置,生成一份“计划”(plan),明确哪些资源要创建、修改或销毁,确认后才真正调用各平台 API。

在混合云场景中,这种角色尤其关键。假设本地有一台核心数据库,云上应用需要访问它。传统做法是分别登录 vSphere 和云控制台,手工配置防火墙、路由和安全组,容易遗漏且无法审计。用 Terraform 则可以把本地网络、云上 VPC、专线连接、安全组规则写在同一套代码中,通过依赖关系保证顺序:先建网络,再建连接,最后放行规则。任何变更都先出计划,团队评审后再执行。

需要明确的是,Terraform 管理的是基础设施的生命周期,而不是应用内部配置。它负责“把机器、网络、存储、权限准备好”,应用部署、配置管理通常交给 Ansible、云初始化脚本或 Kubernetes 等工具。理解这条边界,才能避免把 Terraform 当成万能配置工具。

基础设施即代码的核心价值

IaC 的核心价值可以归纳为四点。第一是可重复:同一份代码在测试、预发、生产环境执行,得到结构一致的基础设施,减少“环境不一致”导致的故障。第二是可版本化:基础设施变更进入 Git,谁改了什么、为什么改,都有记录,可以回滚。第三是可评审:terraform plan 的输出就是变更预览,团队可以在执行前发现误删、误改。第四是可自动化:IaC 可以接入 CI/CD,实现基础设施的持续交付,而不是每次靠人工点击。

在混合云中,这四点价值会被进一步放大。因为跨环境的手工操作成本更高、出错概率更大,而 Terraform 的 State 机制恰好提供了跨环境的“事实来源”:它记录每个资源的真实 ID 和属性,让本地与云上的资源都能被同一套流程追踪。

课程实战环境与工具链准备

本课程后续实战将围绕一套可复现的混合云实验环境展开。为便于跟随操作,建议准备如下工具链。以下版本为示例建议,实际以官方最新稳定版为准。

工具建议版本用途
Terraform CLI1.6.x 及以上执行 init / plan / apply / destroy
Git2.40+管理 HCL 代码与变更历史
云厂商 CLIaws-cli v2 / aliyun-cli辅助鉴权与结果核对
本地虚拟化平台vSphere 7.x 或 OpenStack模拟本地数据中心资源
远程 State 后端S3 + DynamoDB 或 OSS存放 state 并支持锁
代码编辑器VS Code + HashiCorp HCL 插件语法高亮与格式化

环境准备的关键步骤是配置鉴权。以 AWS 为例,推荐使用具名 profile,避免把密钥写进代码:

# 配置 AWS 凭证(示例,请替换为真实值)
aws configure --profile hybrid-demo
# AWS Access Key ID: AKIA********
# AWS Secret Access Key: ********
# Default region name: ap-southeast-1
# Default output format: json

# 验证身份
aws sts get-caller-identity --profile hybrid-demo

随后在 Terraform 中通过 provider 引用该 profile:

provider "aws" {
  region  = "ap-southeast-1"
  profile = "hybrid-demo"
}

初始化时执行 terraform init,Terraform 会下载对应 Provider 插件并配置后端。若后端使用 S3,需要提前创建 bucket 和 DynamoDB 锁表,并在 backend "s3" 块中声明。初始化成功后,可以用 terraform validate 检查语法,用 terraform plan 查看将要创建的资源。判断环境是否就绪的标准是:init 无报错、validate 通过、plan 能正常输出资源清单且没有鉴权错误。

建议在实验环境中先使用独立的测试账号或子账号,并给资源打上统一标签(如 Project = "hybrid-course"、Env = "lab"),便于后续按标签检索和清理,避免误删生产资源。