您好,登錄后才能下訂單哦!
編排服務通過運行調用生成運行中云應用程序的OpenStack API為描述云應用程序提供基于模板的編排。該軟件將其他OpenStack核心組件整合進一個單文件模板系統。模板允許你創建很多種類的OpenStack資源,如實例,浮點IP,云硬盤,安全組和用戶。它也提供高級功能,如實例高可用,實例自動縮放,和嵌套棧。這使得OpenStack的核心項目有著龐大的用戶群。
服務使部署人員能夠直接或者通過定制化插件來與編排服務集成,簡單來說就是用戶可以預定義一個格式的任務模板,其中定義了一系列的相關任務,交給heat就會按一定的順序執行heat模板中定義的任務。
用戶在horizon中或者命令行中提交包含模板和參數輸入的請求,轉化為REST格式的api調用,Heat-api和heat-api-cfn會驗證模板的正確性,然后通過消息列隊傳遞給heat engine來處理。
heat中的模板是openstack資源的集合,通過定義模板,可以將需要創建的資源在模板中描述,用此模板可以多次創建需要的資源
Heat-api:提供REST API服務,是與其他組件交換的入口,接收api請求傳給heat-engine
Heat-api-cfn:提供兼容AWS CloudFormation的api,接收請求轉發給heat-engine
Heat-engine:核心組件,主要實現資源調度,資源生命周期管理等作用,自身并不提供資源創建功能,只負責編排資源后交給其他組件去處理
heat模板默認編寫語言是YAML,關于yaml語言的定義和使用https://yaml.org/start.html
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:資源的條件,決定是否創建資源
stack:資源的集合,管理一組資源的基本單位,用戶操作的最小單位,通過對stack的生命周期管理,進而完成應用的部署和對資源的管理
常用命令
stack list
stack create
stack show
stack delete
stack output list
stack resource list
stack event show
基礎架構資源編排:對計算、存儲和網絡等基礎資源進行編排,支持用戶自定義腳本配置虛擬機
應用資源編排:實現對虛擬機的復雜配置,例如軟件安裝,配置軟件
高級編排:例如應用的負載均衡和自動伸縮
第三方工具集成編排:復用現有的Ansible Playbook配置
對于不同的openstack資源,heat提供了不同的資源類型。
例如虛擬機,heat提供了OS::Nova::Server,并提供參數,(key,image,flavor),參數可以在模板中指定,也可以在創建stack時提供
常用的是OS::Heat::SoftwareConfig和OS::Heat::SoftwareDeployment
HOT模板可以通過在Openstack中創建yaml文件進行編寫,也可以從外部導入已經完成的HOT模板
登陸controller節點,導入管理員環境變量
. admin-openrc.sh
安裝python-heatclient
sudo apt install python-heatclient
然后輸入以下命令,查看當前可用的鏡像,規格,密鑰對等信息
openstack image list
openstack flavor list
openstack keypair list
創建一個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] }
其中resources.server中的image,flavor,key_name為環境中可用的鏡像、規格和密鑰對
查看當前網絡
openstack network list
記錄provider的id
執行以下命令設置環境變量的NET_ID
export NET_ID=<NETWORK_ID>
使用HOT模板 demo-template.yaml,創建堆棧Stack_demo
openstack stack create -t demo-template.yaml --parameter "NetID=$NET_ID" Stack_demo
等待幾分鐘后,查看堆棧的創建過程
openstack stack event list Stack_demo
查看堆棧列表,狀態變為CREATE_COMPLETE表示創建成功
openstack stack list
查看堆棧的詳細信息
openstack stack show Stack_demo
查看堆棧創建完成后輸出的虛擬機實例名稱和IP
openstack stack output show --all Stack_demo
查看虛擬機實例列表進行確認
openstack server list
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。