? allowed_values限制条件适用于字符串或者数字类型的参数,指明一组可用
的参数值,在部署的时候,用户提供的参数值必须在这一组参数值中。语法格式如下:
allowed_values: [
或者可以使用下面的格式: allowed_values: -
? allowed_pattern 允许模式限制条件适用于字符串参数,定义一个具体的正则
表达式,用于匹配用户提供的参数值,语法格式如下:
allowed_pattern:
? custom_constraint限制条件提供一个额外的验证步骤,通常用于检验后台中
资源是否存在,custom_constraint限制条件是通过插件的方式实现的,能够提供更高级的限制条件验证逻辑。语法格式如下:
custom_constraint:
Pseudo Parameters 模板中除了用户自定义的参数外,Heat也为每个stack创建了两个参数,一个是“OS::stack_name”,是stack的名字,另一个是“OS::stack_id”,是stack的id,这两个值可以像用户自定义的参数一样通过“get_param”内建函数被访问。
3.2.3 Resources详细介绍
在资源部分,实际资源的模板将从被定义的HOT模板中构成一个stack的部署,每个资源在资源部分被定义成一个单独的块,语法格式如下:
resources:
type:
? properties 这个可选部分包含一个资源指定属性的列表,属性值可以在适当
的位置提供或者通过函数提供。
? metadata 这个可选部分包含资源类型的特定metadata。
? depends_on 这个可选属性允许指明当前资源跟其他资源的依赖关系。 ? update_policy 该可选属性允许以嵌套字典的形式指明资源更新的策略,支
持更新或者不更新策略,同时确切的语义依赖于当前的资源。
? deletion_policy 该可选属性允许为资源指明删除策略,具体哪种删除策略依
赖于当前资源的类型。根据资源的类型,资源块可以包含更多的资源具体数据,基本上能被用于CFN模板的所有资源类型同样可以被用于HOT模板中,适用于上文所述YMAL结构。
下面是一个简单的带有固定属性值的计算资源定义的例子: resources: my_instance: type: OS::Nova::Server 陕西省信息化工程研究院软件研发部第12页/ 共21页
properties: flavor: m1.small image: F18-x86_64-cfntools Resource Dependencies通过在一个属性部分的depends_on属性,能够定义资源与资源之间的依赖关系,如果一个资源仅仅依赖另外一个资源,那么另外一个资源的ID将作为depends_on属性的值,如下例所示:
resources: server1: type: OS::Nova::Server depends_on: server2 server2: type: OS::Nova::Server 如果一个资源依赖的资源不止一个,depends_on属性值将以一个资源IDs列表的形式呈现,如下例所示:
resources: server1: type: OS::Nova::Server depends_on: [ server2, server3 ] server2: type: OS::Nova::Server server3: type: OS::Nova::Server 3.2.4 Outputs 详细介绍
Outputs Section 在输出部分,任何向用户于提供可用输出参数将被定义,通陕西省信息化工程研究院软件研发部第13页/ 共21页
常,参数可以是所部署的实例的IP地址或者所部署的栈的web应用实例的URLs,每个输出参数将在输出部分作为一个单独的块被定义,语法格式如下:
outputs:
名字在模板中的输出部分是独一无二的。
? Desceiption 这个元素提供一个关于输出参数的简短的描述。
? Parameter value 这部分是输出参数的值,通常是通过一个函数来解析去获得
值,例如去获得一个stack的资源属性值。下面的例子表明一个计算资源的IP地址是如何作为一个输出参数: outputs: instance_ip: description: IP address of the deployed compute instance value: { get_attr: [my_instance, first_address] }
以上只是介绍部分字段,各字段参数详情可参考:
http://docs.openstack.org/developer/heat/template_guide/index.html
http://docs.openstack.org/developer/heat/template_guide/hot_spec.html#heat-template-version
4. Heat应用
4.1 命令行使用
创建名为demo的Stack:
陕西省信息化工程研究院软件研发部第14页/ 共21页
heatstack-create demo –f ./template1.yaml
观察stack启动的状态:heat stack-list
查看stack详情:heat resource-list demo
简单实例template1.yaml:
heat_template_version: 2013-05-23 description: Simple template to deploy a single compute instance resources: my_instance: type: OS::Nova::Server properties: key_name: heat_key image: 9a51863b-e58a-4bbe-bddc-920178c738a2 flavor: m1.small networks: - {network: 7e83541b-3bb9-4649-b307-9d3fbcd9e998} 陕西省信息化工程研究院软件研发部第15页/ 共21页