一、什么Heat
-
Heat 是一套業務流程平台,旨在幫助用戶更輕松地配置以 OpenStack 為基礎的雲體系。利用Heat應用程序,開發人員能夠在程序中使用模板以實現資源的自動化部署。
Amazon Web Services 業務流程平台 CloudFormation (CFN) -
Heat 是 OpenStack 提供的自動編排功能的組件,基於描述性的模板,來編排復合雲應用程序。
二、為什么需要Heat
1.Heat 采用了模板方式來設計或者定義編排,為方便用戶使用,Heat 還提供了大量的模板例子,使用戶能夠方便地得到想要的編排。
- 更小的研發成本:引入 Heat,對於不了解 OpenStack 的研發者來說,可以更快的接入現有的業務系統。
三、概念
- 堆棧(stack):管理資源的集合。單個模板中定義的實例化資源的集合,是 Heat 管理應用程序的邏輯單元,往往對應一個應用程序。
- 模板(template):如何使用代碼定義和描述堆棧。描述了所有組件資源以及組件資源之間的關系,是 Heat 的核心。
- 資源(resource):將在編排期間創建或修改的對象。資源可以是網絡、路由器、子網、實例、卷、浮動IP、安全組等。
- 參數(parameters):heat模板中的頂級key,定義在創建或更新 stack 時可以傳遞哪些數據來定制模板。
- 參數組(parameter_groups):用於指定如何對輸入參數進行分組,以及提供參數的順序。
- 輸出(outputs):heat模板中的頂級key,定義實例化后 stack 將返回的數據。
四:架構
Heat 服務重要的組件:
1. heat command-line client
CLI通過與 heat-api 通信,來調用 API 實現相關功能。終端開發者可以直接使用編排 REST API。
2. heat-api
實現 OpenStack 原生支持的 REST API。該組件通過把 API 請求經由 AMQP 傳送給 Heat engine 來處理 API 請求。
3. heat-api-cfn
提供與 AWS CloudFormation 兼容的、AWS 風格的查詢 API,處理請求並通過 AMQP 將它們發送到 heat-engine。
4. heat-engine
heat-engine是heat中的核心模塊,處理主要的邏輯業務。此模塊提供heat最主要的功能。
5. heat-cfntools
完成虛擬機實例內部的操作配置任務,需要單獨下載。這個工具用來完成虛擬機實例內部的操作配置任務。在創建虛擬機鏡像時,需要在鏡像中安裝heat-cfntools工具。
五.工作流程
Heat Engine 在這里的作用分為三層: 第一層處理 Heat 層面的請求,就是根據模板和輸入參數來創建 Stack,這里的 Stack 是由各種資源組合而成。 第二層解析 Stack 里各種資源的依賴關系,Stack 和嵌套 Stack 的關系。第三層就是根據解析出來的關系,依次調用各種服務客戶段來創建各種資源。
六.Heat 模板全稱為heat orchestration template,簡稱為HOT
模版中有四個關鍵段:
. Parameters stack需要輸入的參數 (可選)
. Mapping 一組靜態的Key/ValuePair ,用Fn::FindlnMap 來查找對應的值(可選)
. Resource 資源 CPU Memory (必填)
. Output 用戶的返回值(可選)
編排模板(HEAT)語言
列出可以用於指定模板版本的命令:
列出可用的資源類型:
HOT提供了幾個內置函數,用於執行模板中的特定任務。編排模板中的內部函數將值分配給在創建堆棧期間可用的屬性。
get_attr
get_attr函數引用資源的屬性。
get_param
get_param函數引用模板的一個輸入參數並返回該輸入參數的值。
get_resource
get_resource函數引用模板中的一個資源。
str_replace
str_replace函數將輸入字符串中的變量替換為您指定的值。
list_join
list_join函數將一組字符串附加到單個值中,由指定的分隔符分隔。