Heat模板及簡單應用

一,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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章