My title

不能用Terraform了?怎么办?

发表时间:2020-06-01 11:16作者:骞云科技

近期在云计算运维圈出来一个爆炸性新闻,HashCorp不允许中国公司使用Terraform,consul等多个产品了。作为国内领先的提供云服务编排能力的公司,我们也被经常问起,你们SmartCMP和Terraform有啥区别。借这个事件,我们来介绍一下Terraform,IaC,服务编排等概念和Terraform和SmartCMP差异。


Terraform 是什么


Terraform 是 HashiCorp 推出的一个很棒的基础设施即代码工具( https://www.terraform.io/ )。Terraform相比传统人工操作,有如下好处:


• 基于 IaC(基础设施即代码,Infrastructure as Code)的设计,可以将基础设施以一种领域特定语言描述出来,消除了在基础设施自动化时描述语义上的歧义,同时减轻了人为因素造成的不确影响。


• Terraform 在执行编排动作前,会生成一份可读性良好的执行计划,关键基础设施的变更可以得到充分审查,保证了基础设施的可靠性。


• 基于 DAG(有向无环图,Directed Acyclic Graph)描述资源与资源之间的关系,由于 DAG 良好的拓扑性质,当资源属性与资源关系发生改变时,变更动作将被充分并行地执行。



让我们来看看Terraform的例子创建阿里云 ECS一台VM的例子:


1.   配置好环境,确保访问信息均已在执行系统中设置完毕。


2.   编写如下ECS创建代码:

3. 运行Terraform apply开始创建。


总共就3步,是不是看起来很简单?但对于一款企业级应用而言,这一点都不简单!


社区版Terraform真的适合构建企业级的IaC平台吗?我们不妨看看运维小李的遭遇。



SmartCMP对IaC和服务编排的支持


骞云旗舰产品SmartCMP云管理平台从1.0版本 — 6.0版本的迭代中,始终将强大的服务编排和基础设施即代码能力作为平台的核心价值之一。SmartCMP云管理平台的IaC能力是基于国际标准的TOSCA构建的。在分析SmartCMP的IaC技术细节前,我们来看看用户是如何通过SmartCMP云管理平台自服务申请一台阿里云ECS主机的。

SmartCMP提供可视化的,自服务的申请门户,如下图:



普通用户根据需求点击“阿里云ECS”服务卡片,就会进入到申请页面。整个页面分成以下三大块:


1. 申请服务的蓝图和申请人的组织信息。组织信息让平台能够根据申请人的背景提供可选择的资源环境。



2. 申请的基本信息,包括标签,租期



3. ECS节点的参数配置

通过和Terraform的比较,可以发现SmartCMP可以提供非常类似的配置,但都是通过策略限制和下拉的方式提供,是SmartCMP云管理平台具备一定的优势。

  • 用户通过平台统一管理阿里云访问密钥,

  • 根据需求动态调整阿里云可用区等资源,镜像也会提供下拉的方式供用户灵活选择等等,

  • 清晰直观地查看整体服务的预估费用,并进行不同云平台的比价。



申请后,平台就根据配置自动化创建云资源,SmartCMP平台每次申请的结果都是服务部署,因为一次编排可能产生一个或者任意多个云资源。下图是申请后的服务的详情状态。



可以跳转到右下角的节点,可以到创建的阿里云Instance详情页面,看到ECS Instance的动态信息,并做变更操作。



看到这里,也许有人认为,这些都是UI直接交互的,和IaC,和Terraform有什么关系呢?其实IaC,服务编排时SmartCMP的核心基础。我们来看看SmartCMP的IaC能力是如何构建的。


骞云SmartCMP是基于云应用拓扑和编排规范(Topology and Orchestration Specification for Cloud Applications,简称TOSCA)开发的。TOSCA是一种用于描述在云计算平台上的服务和应用程序以及它们之间的关系和依赖性的语言规范。TOSCA可以描述云计算服务及其组件,并记录这些组件的组织方式以及使用或修改这些组件和服务所需的编排流程。这为管理员提供了一种管理云应用程序和服务的通用方法,从而使这些应用程序和服务可以跨不同云供应商的平台进行移植。其实Terraform可以说是TOSCA语法的一种实现方案。


下面介绍一下TOSCA在SmartCMP中的实现方案。


完美支持TOSCA标准的IaC规范


TOSCA本身是一个语言规范,本身不提供任何实现功能。骞云SmartCMP作为从产品设计初始,就采用TOSCA作为云服务描述语言,提供了业界对TOSCA最完美的支持。SmartCMP对TOSCA的支持也包括如下核心功能


云组件 – 对应TOSCA的Node


在最新的版本里面,平台将之前软件组件扩展成为任意云组件,进一步完善了对TOSCA的模型支持能力。


云组件的核心目标有如下几点:


1.   用户可以非常方便的添加任意云资源类型,包括IaaS,PaaS,SaaS等。更好的支持SmartCMP构建XaaS的能力。


2.   用户可以非常方便的扩充现有云资源类型的能力,包括添加组件额外的属性,额外的操作,操作的UI交互等。


TOSCA的组件是基于面向对象的,所以SmartCMP的云组件也一样。平台的组件也同意支持面向对象的核心能力,包括:

  • 对象类型定义,包括私有属性,操作

  • 继承关系

  • 多态

  • 覆盖




Terraform也有每一个对象类型的定义,并且也是可扩展的,Terraform使用的alicloud_instance就是一个云资源类型,类似上面的信息。 SmartCMP提供了UI方式方便添加任意新的云资源。


服务蓝图 – 对应TOSCA的Topology


服务蓝图目前已经是面向服务,面向应用的云管理平台的核心能力之一。通过基于TOSCA的蓝图,我们可以构建一个面向目标的编排引擎,也就是我们画出来什么,最后就出来部署出来什么,变更出来什么。市场更多的是基于流程的编排,用户需要自己定义每一步需要做什么,该怎么做。

SmartCMP有两种服务蓝图设计状态:

1.     所见即所得的画布设计;

2.     YAML语言编辑,会根据可视化蓝图动态生成。



大家可以看到,这个YAML里面并没有任何环境特殊的信息,包括云平台的访问,区域信息,操作系统镜像,安全组ID等。这是为什么呢?原因是我们希望蓝图是一个抽象的拓扑模板,可以在不同场景复用。所以平台化提供了如下基础设施抽象



SmartCMP把这些和云平台具体环境相关的内容,抽象出来后,就提供用户,将一个特定云应用,部署到任意云平台的任意区域。申请人完全不需要了解在不同的云,不同的可用区,其实存储,网络,操作系统镜像,规格其实都是不一样的。我们认为,非专业运维人,不需要也没必要了解这些专业知识。


大家是不是觉得,SmartCMP的可视化蓝图,云环境的封装,友好的申请,符合IT规范的自动化,比Terraform美丽多了呢?


最后,在回答一下朋友关切的内容?SmartCMP的编排是否完全依赖Terraform?是否会受到影响呢?答案是没有,Terraform是SmartCMP编排引擎里面支持的一种特定语言,但更多是给用户的扩展场景使用的。平台自身的组件,都是基于SDK的直接调用,而且这样的直接调用也有非常明显的好处。以阿里云VPC组件为例,平台原生代码使用的Python SDK,如下图。



总结

Terraform是一个非常优秀的IaC和服务编排引擎。但它的定位更多是专业运维人员的自动化脚本,和它更匹配的是Ansible等工具。


SmartCMP同样提供了IaC和服务编排能力,但定位是面向企业所有用户的统一云服务中台,需要提供完全的流程管控,强化IT规范策略,简单易用的自服务能力等等。


在Terraform不能用的时候,各位小伙伴们来体验一下SmartCMP的强大服务编排能力吧!



Terraform在中国禁止使用期间

骞云科技提供SmartCMP在50节点以内的免费使用

快来申请!!!




联系我们
 
 
 
 
 联系方式
咨询电话:400-669-7728