前言
最近在使用 Terraform Cloud 来置备 OCI 的 Always Free Tier, 发现它非常好用,相比 Terraform OSS, 用起来省心多了。
也借此总结学习下:Terraform Cloud 比 Terraform OSS 有哪些增强,这些增强功能面向哪些客户,解决了哪些痛点?
可以作为我们基于 Terraform 开发自己的 IaC 云平台的经验。
Terraform OSS 的功能
Terraform OSS 的功能已经在 之前的文章 里介绍过了。
这里再重复一下:
- IaC
- 工作空间
- 变量
- 运行-计划和应用
- 资源图
- 供应商
- 模块
- 注册表
- 声明式编程
- 云无关
- 表达能力强且高度可扩展
- 协同工作(需要进一步配置)
- 生命周期管理
- 测试
- HCL
- 安全和密钥管理(需要进一步配置)
Terraform Cloud 简介
Terraform Cloud 是 HashiCorp 基于 SaaS 的 Terraform 版本。
Terraform Cloud, 理所当然用于 Terraform OSS 的以上所有功能。
Terraform Cloud vs. Terraform OSS
Terraform Cloud 比 Terraform OSS 有哪些增强?具体如下:
IaC 功能增强
- Remote State: Terraform Cloud 自带开箱即用的 Backend, 方便管理 remote state, 确保部署一致性、共同目标和单一事实来源
- VCS 连接: Terraform Cloud 打通了 Github 等 VCS, 可以无缝使用 VCS + Terraform. 使多个团队成员能够在项目中处理单独的代码流,并通过简单的回滚路径以结构化的方式将变更合并回核心项目中。
- 工作空间管理: Terraform Cloud 提供了更为丰富的工作空间管理功能和 UI
- 安全和密钥管理 : Terraform Cloud 基于 Terraform Vault 提供了开箱即用的安全变量(安全和密钥)的存储。
- 远程运行和状态: Terraform Cloud 支持本地运行和远程运行,远程运行无需自己安装 Terraform, 直接使用 Terraform Cloud 提供的 Terraform. 意味着所有部署都是从一个集中位置完成的
- 私有模块注册表: 私有模块存储库允许跨多个工作空间和项目访问模块代码的单个真实源,从而降低差异的可能性,从而提高代码稳定性。

△ Remote State

△ VCS(GitHub) 连接

△ 工作空间管理

△ 安全和密钥管理

△ 远程运行

△ 运行状态

△ 私有模块注册表
团队管理功能增强
- 团队管理: 团队管理是工作空间管理的一个子功能,借助此功能,工作空间管理员可以通过根据其公司的组织结构创建团队来管理云用户的访问级别。这些团队根据反映编码职责或运营职责的组织被授予权限,例如:管理策略,管理工作空间,管理 VCS 设置
- 成本估算: 提供与工作空间中的代码部署关联的成本估算的最佳预估。会明确地显示本次 Run 会增加/减少多少美元的开销。
- 策略即代码: 通过和 HashiCorp Sentinel 的集成,用于自动化治理、安全和基于合规性的策略配置。Sentinel 是一个可嵌入的策略及代码框架。如,您可以定义,如果您要部署到 Dev,则您的任何 EC2 构建实例都不能大于大小 XXX, 如果尝试构建更大的实例,则运行将失败。也可用于执行 CIS 基准和其他合规性框架。
- 配置设计器: 基于 GUI 的工作流程,用于选择、组合、定义变量和创建独特的工作区。降低开发人员使用心智负担,开发人员从预定义的 IaC 模块构建配置;按需预配。

△ 团队管理

△ 成本预估

△ 策略即代码

△ 配置设计器
安全/合规/治理功能增强
- 单点登录 (SSO) : 集成您的企业身份提供商,为您的团队成员提供无缝登录过程。目前,Terraform Cloud 支持以下身份提供程序:
- Azure AD
- Okta
- SAML
- 审计日志: 对于在事件发生后甚至在解决问题时尝试深入研究时启用取证调查是绝对必要的。
- 自托管的代理: 允许 Terraform Cloud 业务使用自托管代理有效地查看私有数据中心。
