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