Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
系列文章
前言
最近在使用 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 业务使用自托管代理有效地查看私有数据中心。

△ SSO
总结思考
Q: 如果我们也要基于 Terraform OSS 来做一个企业内部的 IaC 云服务,我们应该增强哪些功能?
A: 需要从以下几方面入手:
- 增强 Terraform 的功能和使用体验
- 基于 S3 提供开箱即用的 Backend 和 Remote State
- 提供和内部代码仓库(如 GitLab) 的无缝对接
- 基于 Terraform Workspace 开发一套友好 UI, 并结合企业实际情况,延伸出入:环境、Project 等概念
- 基于 HashiCorp Vault 提供开箱即用的安全和密钥管理功能
- 自动创建预配置好 Terraform 的临时 VM 或 Pod 以在云服务上开箱即用地运行 Terraform, 而不需用户在本地运行 Terraform; 同时提供每次 Terraform Apply 后的状态历史
- 提供内部私有 Terraform Registry
- 开发完整而丰富的 API 接口,供企业内部其他系统(如 DevOps) 集成使用。
- 丰富团队管理功能:
- 丰富完善团队管理功能、设置和 UI
- 引入 FinOps 理念:对接主流公有云费用 API, 在 Plan 阶段进行成本估算。
- (可选)策略及代码
- 安全/合规/治理功能增强
- 集成企业内部单点登录
- 开发审计日志功能
- 自托管的代理不需要,因为就在企业内部
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?的更多相关文章
- 基于Spring Cloud和Netflix OSS 构建微服务-Part 1
前一篇文章<微服务操作模型>中,我们定义了微服务使用的操作模型.这篇文章中,我们将开始使用Spring Cloud和Netflix OSS实现这一模型,包含核心部分:服务发现(Servic ...
- Building microservices with Spring Cloud and Netflix OSS, part 2
In Part 1 we used core components in Spring Cloud and Netflix OSS, i.e. Eureka, Ribbon and Zuul, to ...
- 基于Spring Cloud和Netflix OSS构建微服务,Part 2
在上一篇文章中,我们已使用Spring Cloud和Netflix OSS中的核心组件,如Eureka.Ribbon和Zuul,部分实现了操作模型(operations model),允许单独部署的微 ...
- Java9系列第6篇-Stream流API的增强
我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 ...
- Terraform状态State管理,让变更有记录
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Ter ...
- Azure Terraform(二)语法详解
一,引言 上篇文章开始,我们简单介绍了以下通过基础设施管理工具----- Terraform,通过它来统一管理复杂的云基础设施资源.作为入门演示,使用Terraform 部署Azure 资源组的方式直 ...
- Azure Terraform(三)部署 Web 应用程序
一,引言 上一节关于 Terraform 的文章讲到 Terraform 使用到的一些语法,以及通过演示使用 Terraform 在Azure 上部署资源组,极大的方便了基础设施实施人员,也提高了基础 ...
- Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源
一,引言 上一篇我们结合学习 Azure Traffic Manger 的内容,做了一个负载均衡的基础设施架构.通过 Terraform 部署执行计划,将整个 Azure Traffic Manage ...
- Azure Terraform(六)Common Module
一,引言 之前我们在使用 Terraform 构筑一下 Azure 云资源的时候,直接将所以需要创建的资源全面写在 main.tf 这个文件中,这样写主要是为了演示使用,但是在实际的 Terrafor ...
- Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)
一,引言 之前一篇文章有讲解到利用 利用Azure DevOps 实现自动化部署基础资源,当时 TF 代码没有针对 Azure 各个资源的封装,所有的资源代码全部写在一个 main.tf 文件中.然后 ...
随机推荐
- Jenkins集成appium自动化测试
一,引入问题 自动化测试脚本绝大部分用于回归测试,这就需要制定执行策略,如每天.代码更新后.项目上线前定时执行,才能达到最好的效果,这时就需要进行Jenkins集成. 不像web UI自动化测试可以使 ...
- JMeter参数化(二)--数据库参数化
1.下载mysql驱动,解压得到mysql-connector-java-8.0.17.jar(驱动一般放在java的 \java\jre\lib\ext 路径下): 2.在 测试计划-->浏览 ...
- Java swing图形界面计算器
效果图如下所示 : import java.awt.Color; import java.awt.Container; import java.awt.Font; import java.awt.Gr ...
- 第二次python作业
#3.1 print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n") number = int(input("请输入你认为符合条件的数: & ...
- MyBatis-Plus使用SQL语句
项目中碰到一个必须要使用动态SQL的地方, 想着在xml文件中进行一层一层的判断太麻烦了,也不好理解,要是能在Java代码中组织好SQL,进行查询操作 QueryWrapper<object&g ...
- 华为ME60 配置PPPOE-radius 业务
华为ME60 配置PPPOE-radius 业务 1.创建radius 认证 # radius-server source interface LoopBack0 radius-server grou ...
- Python操作数据库读书笔记
SQLite 简介 什么是 SQLite? SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它是一个零配置的数据库,这意味着与其他数据库一样,您不需 ...
- NX 二次开发 多个功能集成一个DLL的方法
用C++做NX二次开发,一个功能建一个工程,管理起来很不方便,在网上找了些资料学习,成功的把多个功能做到一个工程里(多功能集成到一个DLL). 1.首先要了解外挂的菜单文件的基础,要实现多个功能集合在 ...
- 随笔:for in 和 for of的区别
百度前端面试题:for in 和 for of的区别详解以及为for in的输出顺序 - 知乎 以该页面为例,我稍微总结一点东西: 在这⾥我们把对象中的数字属性称为 「排序属性」,在V8中被称为 el ...
- 利用easyExcel生成excel并上传文件服务器(单独设置表头)
结合相关easyExcel的相关信息//上传服务器方法,返回url链接地址public String exportToMinIO(List<aaaDto> list) { String p ...