openstack學習-理解heat編排管理和簡單操做

HEAT服務

編排服務經過運行調用生成運行中雲應用程序的OpenStack API爲描述雲應用程序提供基於模板的編排。該軟件將其餘OpenStack核心組件整合進一個單文件模板系統。模板容許你建立不少種類的OpenStack資源,如實例,浮點IP,雲硬盤,安全組和用戶。它也提供高級功能,如實例高可用,實例自動縮放,和嵌套棧。這使得OpenStack的核心項目有着龐大的用戶羣。html

服務使部署人員可以直接或者經過定製化插件來與編排服務集成,簡單來講就是用戶能夠預約義一個格式的任務模板,其中定義了一系列的相關任務,交給heat就會按必定的順序執行heat模板中定義的任務。python

架構

openstack學習-理解heat編排管理和簡單操做

用戶在horizon中或者命令行中提交包含模板和參數輸入的請求,轉化爲REST格式的api調用,Heat-api和heat-api-cfn會驗證模板的正確性,而後經過消息列隊傳遞給heat engine來處理。
heat中的模板是openstack資源的集合,經過定義模板,能夠將須要建立的資源在模板中描述,用此模板能夠屢次建立須要的資源api

組件

Heat-api:提供REST API服務,是與其餘組件交換的入口,接收api請求傳給heat-engine
Heat-api-cfn:提供兼容AWS CloudFormation的api,接收請求轉發給heat-engine
Heat-engine:核心組件,主要實現資源調度,資源生命週期管理等做用,自身並不提供資源建立功能,只負責編排資源後交給其餘組件去處理安全

Heat Engine架構

openstack學習-理解heat編排管理和簡單操做

模板

heat模板默認編寫語言是YAML,關於yaml語言的定義和使用https://yaml.org/start.html網絡

openstack學習-理解heat編排管理和簡單操做

openstack學習-理解heat編排管理和簡單操做
resource ID:資源ID,在模板的resources部分中必須是惟一的
type:資源類型:例如OS::Nova::Server或OS::Neutron::Port,必選屬性
properties:特定資源的屬性列表,可選屬性
metadata:特定資源的元數據,可選
depends_on:資源依賴模板中的一個或者多個資源上,可選屬性
update_policy:刪除資源的策略,可選
deletion_policy:刪除資源的策略。容許的刪除策略是delete,retain和snapshot,可選,默認策略是從stack中刪除資源時刪除物理資源
external_id:容許爲現有外部(到堆棧)資源指定resource_id,可選屬性
condition:資源的條件,決定是否建立資源架構

Heat Stack

stack:資源的集合,管理一組資源的基本單位,用戶操做的最小單位,經過對stack的生命週期管理,進而完成應用的部署和對資源的管理負載均衡

經常使用命令
stack list
stack create
stack show
stack delete
stack output list
stack resource list
stack event showide

編排場景

openstack學習-理解heat編排管理和簡單操做
基礎架構資源編排:對計算、存儲和網絡等基礎資源進行編排,支持用戶自定義腳本配置虛擬機
應用資源編排:實現對虛擬機的複雜配置,例如軟件安裝,配置軟件
高級編排:例如應用的負載均衡和自動伸縮
第三方工具集成編排:複用現有的Ansible Playbook配置工具

基礎架構編排

對於不一樣的openstack資源,heat提供了不一樣的資源類型。
例如虛擬機,heat提供了OS::Nova::Server,並提供參數,(key,image,flavor),參數能夠在模板中指定,也能夠在建立stack時提供
openstack學習-理解heat編排管理和簡單操做學習

軟件配置和部署的編排

經常使用的是OS::Heat::SoftwareConfig和OS::Heat::SoftwareDeployment
openstack學習-理解heat編排管理和簡單操做

openstack學習-理解heat編排管理和簡單操做

自動伸縮的編排

openstack學習-理解heat編排管理和簡單操做

負載均衡的編排

openstack學習-理解heat編排管理和簡單操做

openstack學習-理解heat編排管理和簡單操做

配置管理工具集成

openstack學習-理解heat編排管理和簡單操做

編排管理

openstack學習-理解heat編排管理和簡單操做

編寫HOT模板建立簡單虛擬機實例

HOT模板能夠經過在Openstack中建立yaml文件進行編寫,也能夠從外部導入已經完成的HOT模板
登錄controller節點,導入管理員環境變量

. admin-openrc.sh

安裝python-heatclient

sudo apt install python-heatclient

而後輸入如下命令,查看當前可用的鏡像,規格,密鑰對等信息

openstack image list
openstack flavor list
openstack keypair list

openstack學習-理解heat編排管理和簡單操做

openstack學習-理解heat編排管理和簡單操做

建立一個demo-template.yaml文件,做爲HOT模板

touch demo-template.yaml
vi demo-tempalte.yaml

按照以下編寫,注意每一個":"後都要有空格,即時沒有字符也要有空格
能夠用notpad++將文件寫完後,上傳,避免寫錯

heat_template_version: 2015-10-15
parameters: 
 NetID: 
  type: string
  description: Network ID to use for the instance.

resources: 
 server: 
  type: OS::Nova::Server
  properties: 
   image: Img_cli
   flavor: Flavor_cli
   key_name: KeyPairCli
   networks: 
   - network: { get_param: NetID }

outputs: 
 instance_name: 
  description: Name of the instance.
  value: { get_attr: [server,name] }
 instance_ip: 
  description: IP address of the instance.
  value: { get_attr: [server,first_address] }

openstack學習-理解heat編排管理和簡單操做

其中resources.server中的image,flavor,key_name爲環境中可用的鏡像、規格和密鑰對
查看當前網絡

openstack network list

openstack學習-理解heat編排管理和簡單操做
記錄provider的id
執行如下命令設置環境變量的NET_ID

export NET_ID=<NETWORK_ID>

openstack學習-理解heat編排管理和簡單操做

使用HOT模板 demo-template.yaml,建立堆棧Stack_demo

openstack stack create -t demo-template.yaml --parameter "NetID=$NET_ID" Stack_demo

openstack學習-理解heat編排管理和簡單操做
等待幾分鐘後,查看堆棧的建立過程

openstack stack event list Stack_demo

openstack學習-理解heat編排管理和簡單操做
查看堆棧列表,狀態變爲CREATE_COMPLETE表示建立成功

openstack stack list

openstack學習-理解heat編排管理和簡單操做
查看堆棧的詳細信息

openstack stack show Stack_demo

openstack學習-理解heat編排管理和簡單操做

查看堆棧建立完成後輸出的虛擬機實例名稱和IP

openstack stack output show --all Stack_demo

openstack學習-理解heat編排管理和簡單操做

查看虛擬機實例列表進行確認

openstack server list

openstack學習-理解heat編排管理和簡單操做

相關文章
相關標籤/搜索