了解阿里云Terraform

更新时间:
复制为 MD 格式

阿里云推荐使用 Terraform 作为 IaC 工具来管理云上基础设施。在开始使用前,先了解 Terraform 是什么、能做什么,以及如何与阿里云协同工作。

什么是 Terraform

Terraform 是 HashiCorp 开源的声明式 IaC 工具。“声明式”意味着只需在配置文件中描述资源的期望状态(例如“一台 2 核 4G 的 ECS 实例,位于华东 1 地域”),Terraform 自动处理 API 调用、依赖关系和执行顺序。

这与通过控制台操作的方式有本质区别:

控制台操作

Terraform

操作方式

在界面上逐项点击和填写参数

在配置文件中描述资源的期望状态

执行过程

手动逐个创建资源,手动处理依赖顺序

自动解析依赖关系,自动完成创建

环境复制

重复操作,难以保证一致性

同一份配置文件可重复部署多套环境

变更记录

依赖操作审计日志

配置文件纳入版本控制(如 Git),变更可追溯、可回滚

团队协作

依赖文档和口头约定

配置文件可审查、可共享、可复用

Terraform 将基础设施管理从“手动操作”变为“编写和维护代码”,适合管理多个资源、多套环境或需要团队协作的场景。如果只是临时创建少量资源,控制台操作更直接。

Terraform 与阿里云

Terraform 通过 Provider 插件与云平台交互。每个云服务商提供各自的 Provider,将配置文件中的资源定义转化为对应平台的 API 调用。

阿里云是国内第一家与 Terraform 集成的云服务商,提供官方维护的 Terraform Provider(alicloud)。该 Provider 覆盖阿里云上的绝大多数资源类型,包括但不限于:

  • 计算与容器:ECS 云服务器、ACK 容器服务、函数计算、弹性伸缩

  • 网络:VPC 专有网络、负载均衡(SLB/ALB/NLB)、NAT 网关、云企业网

  • 存储与数据库:OSS 对象存储、NAS 文件存储、RDS、PolarDB、Redis、MongoDB

  • 安全与管理:RAM 访问控制、密钥管理、Web 应用防火墙

  • 大数据与 AI:MaxCompute、PAI

Terraform 如何管理资源

Terraform 的核心逻辑是对比期望状态与实际状态,自动计算需要执行的操作。

image

整个过程分为三步:

  1. 编写:在配置文件中描述云资源及其属性,例如 ECS 的规格、镜像、所属网络等。

  2. 预览:Terraform 对比配置文件与实际资源状态,生成变更计划,列出将要创建、修改或删除的资源。资源发生实际变化之前,可以先审查这份计划。

  3. 执行:确认计划无误后,Terraform 通过阿里云 OpenAPI 自动完成所有操作,并记录资源的最新状态。

后续每次修改配置文件并重新执行时,Terraform 只处理差异部分——新增的资源创建、变更的属性更新、移除的资源销毁,未变更的资源不受影响。

使用 Terraform 的优势

  • 执行前可预览:每次执行前,Terraform 生成变更计划,列出将要创建、修改或删除的资源,避免意外变更。

  • 增量更新:只处理发生变化的部分,不重建未变更的资源。

  • 多云统一管理:支持多个云平台的 Provider,可在同一套工作流中管理阿里云、AWS 等不同平台的资源。

  • 模块化复用:将常用的资源组合(如 VPC + 子网 + 安全组)封装为模块,在不同项目和环境中复用。

  • 状态持续追踪:通过状态文件持续记录每个资源与实际云资源的对应关系,确保管理的一致性。

image

常见问题

Terraform 是否收费?

Terraform 开源版免费。通过 Terraform 创建的云资源按阿里云标准计费,与控制台创建的资源计费规则相同。

使用 Terraform 需要编程基础吗?

不需要。Terraform 使用专用的 HCL(HashiCorp Configuration Language)配置语言,语法简洁,以声明方式描述资源属性,无需传统编程经验。如果希望免代码操作,可使用 Terraform Explorer 介绍通过图形界面生成和执行配置。

Terraform 操作对已有云资源有什么影响?

Terraform 只管理配置文件中定义的资源,不影响未纳入管理的已有资源。需要注意的是,Terraform 执行的创建、修改、删除操作直接作用于真实云资源,执行前建议审查变更计划。

已经在控制台创建的资源能纳入 Terraform 管理吗?

可以。通过 import 功能将已有资源导入 Terraform 管理范围,导入后编写对应的配置文件描述这些资源,即可通过 Terraform 统一管理。

通过 Terraform 管理的资源还能在控制台操作吗?

技术上可以,但不推荐。Terraform 通过状态文件追踪资源状态,在控制台手动修改会导致状态文件与实际状态不一致,下次执行时可能覆盖手动修改或产生冲突。建议 Terraform 管理的资源统一通过 Terraform 操作。

Terraform 和 ROS 有什么区别?

两者都是声明式 IaC 工具。Terraform 是开源的第三方工具,支持多云管理;ROS(资源编排服务)是阿里云原生服务,与阿里云控制台深度集成。需要多云管理或已有 Terraform 经验时推荐 Terraform;主要管理阿里云资源且倾向原生工具时可选择 ROS。详情参阅什么是资源编排服务

相关文档