一,Heat模板結構
Heat的模版是Heat的核心。
1,模板格式
Heat 目前支持兩種格式的模板,一種是基於 JSON 格式的 CFN 模板;另外一種是基於 YAML 格式的 HOT 模板。
CFN 模板主要是爲了保持對 AWS 的兼容性。HOT 模板是 Heat 自有的,資源類型更加豐富,更能體現出 Heat 特點的模板。
此處只涉及HOT( Heat Orchestration Template)模板。
2,模板組成
典型的 HOT 模板由下列元素構成:
模板版本、模板描述、參數組列表、參數列表、資源列表、輸出列表、聲明條件。
heat_template_version: 2016-10-14
description:
# a description of the template
parameter_groups:
# a declaration of input parameter groups and order
parameters:
# declaration of input parameters
resources:
# declaration of template resources
outputs:
# declaration of output parameters
conditions:
# declaration of conditions
元素說明:
1)heat_template_version: 必填字段,指定對應的模板版本,Heat會根據版本進行檢驗。
2)description: 選填字段,用於模板的描述
3)parameter_groups: 選填字段,允許指定如何對輸入參數進行分組,以及提供參數的順序。
4)parameters: 選填字段,指輸入參數列表。允許指定實例化模板時必須提供的輸入參數。這些參數通常用於部署時的每個自定義值(例如,設置自定義用戶名或密碼)。每個參數都在一個獨立的嵌套塊中指定,該嵌套塊具有第一行中定義的參數的名稱和其他屬性,如嵌套元素定義的類型或默認值。
5)resources: 必填字段,指生成的 Stack 所包含的各種資源,比如服務器、卷、對象、存儲和網絡資源。可以定義資源間的依賴關係。
6)outputs: 選填字段,指生成的 Stack 暴露出來的信息,可以用來給用戶使用,也可以用來作爲輸入提供給其它的 Stack。
7)conditions: 選填字段,定義了一個或多個條件,這些條件根據用戶創建或更新stack時提供的輸入參數值進行評估。條件可以與資源、資源屬性和輸出相關聯。
3,模板resources元素結構
resources:
<resource ID>:
type: <resource type>
properties:
<property name>: <property value>
metadata:
<resource specific metadata>
depends_on: <resource ID or list of ID>
update_policy: <update policy>
deletion_policy: <deletion policy>
external_id: <external resource ID>
condition: <condition name or expression or boolean>
resources元素的key值當中,除了resource ID和type兩個必選項外,其它都是可選項。
properties也是可選項。
(不同的properties有不同的可選項和必選項,例如OS::Nova::Server類型的properties就有必選項和可選項,因此如果使用OS::Nova::Server,則properties不能爲空)。
具體參考:https://docs.openstack.org/heat/latest/template_guide/openstack.html
4,HOT模板舉例-部署一個簡單實例
heat_template_version: 2015-04-30 # heat模板版本必須有
description: #描述項是可選的,建議添加詳細描述
resources: # resources選項是必須的
my_instance:
type: OS::Nova::Server
properties:
key_name: my_key
image: ubuntu-trusty-x86_64
flavor: m1.small
5,模板舉例-使用parameters參數
heat_template_version: 2015-04-30
description: Simple template to deploy a single compute instance
parameters:
image_id:
type: string
label: Image ID
description: Image to be used for compute instance
flavor:
type: string
label: Instance Type
description: Type of instance (flavor) to be used
default: m1.small # 如果用戶沒有爲參數定義值,則在stack部署期間使用默認值。 如果模板沒有爲參數定義默認值,那麼用戶必須定義該值,否則stack創建失敗。
constraints:
- allowed_values: [ m1.medium, m1.large, m1.xlarge ] # 約束列表限制輸入參數的值
description: Value must be one of m1.medium, m1.large or m1.xlarge.
resources:
my_instance:
type: OS::Nova::Server
properties:
image: { get_param: image_id }
flavor: { get_param: flavor }
二,Heat功能應用
1,stack核心命令
heat stack-create / openstack stack create
heat stack-update / openstack stack update
heat stack-list / openstack stack list
heat stack-show / openstack stack show
heat stack-delete / openstack stack delete
heat output-list / openstack stack output list
heat output-show / openstack stack output show
2,stack其它命令
heat stack-abandon / openstack stack abandon
heat stack-adopt / openstack stack adopt
heat stack-cancel-update / openstack stack update cancel
heat stack-preview / openstack stack update --dry-run
heat action-check / openstack stack check
heat action-resume / openstack stack resume
heat action-suspend / openstack stack suspend
heat hook-clear / openstack stack hook clear
heat hook-poll / openstack stack hook poll
3,resource相關命令
heat resource-list / openstack stack resource list
heat resource-metadata / openstack stack resource metadata show
heat resource-show / openstack stack resource show
heat resource-signal / openstack stack resource signal
heat resource-type-list / openstack orchestration resource type list
heat resource-type-show / openstack orchestration resource type show
4,template相關命令
heat template-show / openstack stack template show
heat template-validate / openstack stack create --dry-run
heat template-version-list / openstack orchestration template version list
heat resource-type-template / openstack orchestration resource type show --format (hot|cfn)
5,event相關命令
heat event-list / openstack stack event list
heat event-show / openstack stack event show
6,軟件配置命令
heat config-create / openstack software config create
heat config-delete / openstack software config delete
heat config-show / openstack software config show
heat config-list / openstack software config list
heat deployment-create / openstack software deployment create
heat deployment-delete / openstack software deployment delete
heat deployment-list / openstack software deployment list
heat deployment-metadata-show / openstack software deployment metadata show
heat deployment-output-show / openstack software deployment output show
heat deployment-show / openstack software deployment show
7,stack快照命令
heat stack-restore / openstack stack snapshot restore
heat stack-snapshot / openstack stack snapshot create
heat snapshot-delete / openstack stack snapshot delete
heat snapshot-list / openstack stack snapshot list
heat snapshot-show / openstack stack snapshot show
8,其它命令
heat build-info / openstack orchestration build-info
heat service-list / openstack service list (need to integrate with existing command)
常見操作鏈接:
https://docs.openstack.org/python-heatclient/latest/cli/index.html
https://specs.openstack.org/openstack/heat-specs/specs/mitaka/python-openstackclient.html