Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?

贾环
• 阅读 682

系列文章

👉 Terraform 系列文章

前言

最近在使用 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. 意味着所有部署都是从一个集中位置完成的
  • 私有模块注册表: 私有模块存储库允许跨多个工作空间和项目访问模块代码的单个真实源,从而降低差异的可能性,从而提高代码稳定性。

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ Remote State

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ VCS(GitHub) 连接

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 工作空间管理

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 安全和密钥管理

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 远程运行

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 运行状态

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 私有模块注册表

团队管理功能增强

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

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 团队管理

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?

△ 成本预估

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 策略即代码

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ 配置设计器

安全/合规/治理功能增强

  • 单点登录 (SSO): 集成您的企业身份提供商,为您的团队成员提供无缝登录过程。目前,Terraform Cloud 支持以下身份提供程序:

    • Azure AD
    • Okta
    • SAML
  • 审计日志: 对于在事件发生后甚至在解决问题时尝试深入研究时启用取证调查是绝对必要的。
  • 自托管的代理: 允许 Terraform Cloud 业务使用自托管代理有效地查看私有数据中心。

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?
△ SSO

总结思考🤔

Q: 如果我们也要基于 Terraform OSS 来做一个企业内部的 IaC 云服务,我们应该增强哪些功能?
A: 需要从以下几方面入手:

  1. 增强 Terraform 的功能和使用体验

    1. 基于 S3 提供开箱即用的 Backend 和 Remote State
    2. 提供和内部代码仓库(如 GitLab) 的无缝对接
    3. 基于 Terraform Workspace 开发一套友好 UI, 并结合企业实际情况,延伸出入:环境、Project 等概念
    4. 基于 HashiCorp Vault 提供开箱即用的安全和密钥管理功能
    5. 自动创建预配置好 Terraform 的临时 VM 或 Pod 以在云服务上开箱即用地运行 Terraform, 而不需用户在本地运行 Terraform; 同时提供每次 Terraform Apply 后的状态历史
    6. 提供内部私有 Terraform Registry
    7. 开发完整而丰富的 API 接口,供企业内部其他系统(如 DevOps) 集成使用。
  2. 丰富团队管理功能:

    1. 丰富完善团队管理功能、设置和 UI
    2. 引入 FinOps 理念:对接主流公有云费用 API, 在 Plan 阶段进行成本估算。
    3. (可选)策略及代码
  3. 安全/合规/治理功能增强

    1. 集成企业内部单点登录
    2. 开发审计日志功能
    3. 自托管的代理不需要,因为就在企业内部

💪💪💪

三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
4年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
4年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这