第三种是openstack的heat特有的hot格式的头部,也是基于yaml格式的。
\\\3.1 *formatversion字段介绍
AWSTemplateFormatVersion和HeatTemplateFormatVersion支持的字
段”AWSTemplateFormatVersio”格式版本,指定了编写模板时依据的AWS CloudFormation模板版本 ;
“HeatTemplateFormatVersion”格式版本,指定了编写模板时依据的HeatTemplateFormation模板版本
“Description”字段,可选描述,记录该模板的描述。
“Mappings”可选映像,通过映像部分,可以声明条件值,可在Resources和Outputs部分使用内建函数Fn::FindInMap将与键对应的值返回到 Mappings 部分声明的双层映射中。
“Parameters”, 可选字段,可以定义用于控制是否创建某些资源或者是否在堆栈创建或更新过程中为某些资源属性分配值的条件。
“Resources”, 资源部分将列出堆栈的成员资源。每项资源将予以分别列明,并指定创建此特定资源所必需的资源属性。可在资源和输出部分取消资源参考。
“Outputs”,可选输出,在 Outputs 部分,您可以选择对响应
aws cloudformation describe-stacks 命令而返回的自定义 值进行定义。这些输出值将包括基于文本、资源、参数、虚拟参数和内部函数的信息。 陕西省信息化工程研究院软件研发部第6页/ 共21页
3.2 heat_template_version字段介绍
这里具体介绍,openstack的hot模板格式,后边的应用实例也以基于hot格式。 ? heat_template_version: 2013-05-23
2013-05-23或者是在这个日期之后的日期表明YAML被定义为是HOT模板 ? description: 用来描述模板的一些信息,通常可以在创建完模板之后看到。 ? parameter_groups: 用来表明一些参数应该被怎样分组以及提供参数的方式,
这部分是可选的,当没有输出值时可以省略。
? Parameters: 用来对初始化模板时必须要提供的一些参数的说明,是可选的,
当没有输出值时可以省略。
? Resources: 这部分包含模板单一资源的声明,必须包含至少一个应该在HOT
模板中被定义的资源,否则模板不会做任何实例化的事。
? Outputs: 这部分用于在模板被实例化后输出给用户可以使用参数信息,这部
分是可选的,当没有输出值时可以省略
3.2.1 parameter_groups详细介绍
这些组被定义为一个列表,列表中每个组包含一个相关的参数列表。这些列表用于定义参数的期望顺序。每个参数应该跟只使用一次参数名称同时将这个参数绑定到parameters section中的参数定义部分的指定的组相关联。
下面看下parameter_groups具体内容:
parameter_groups: - label:
parameters: - - label标签 一个定义与参数相关联的组的可读的标签。 description 这个属性允许给参数组一个可读的描述。 Parameters 与参数组相关联的参数列表。
Param name 在后面参数部分被定义的参数的名字。
3.2.2 Parameters 详细介绍
参数部分允许为在实例化模板的时候指定输入参数,这些参数通常被用于自定义每个部署或者应用,例如设定自定义的用户名和密码。每个参数会在一个单独的小模块(嵌套块)中被定义,模块中第一行是参数的名称,其他的属性比如类型或者默认值将作为模块中其他的的元素。
下面看下parameter的具体内容:
parameters: : type:
? Type 这个属性是参数的类型。目前所支持的类型有tring、number、
comma_delimited_list、json、 boolean。 Label 这个可选属性允许为参数提陕西省信息化工程研究院软件研发部第8页/ 共21页
供一个可读的名字,通常省略。
? Description 这个可选属性允许为参数提供一个可读的描述。
? Default 这个可选属性是为了在部署或者应用中没有指定参数的值 时定义
一个默认的值。
? Hidden 这个可选属性允许当从模板运行时创建一个栈的时候隐藏参数的值,
如果没有指明,默认值是false。
? Constraints 这个可选属性允许指明其他的参数限制条件,比如数字参数的最
大值或者最小值。
下面是一个关于两个参数定义的简单的例子,可以看出description和label实际上是可选的,但是为每个参数提供description和label是很好的做法。
Parameters: user_name: type: string label: User Name description: User name to be configured for the app port_number: type: number label: Port Number description: Port number to be configured 参数定义的限制模块允许定义额外的参数值的限制条件,在模板实例化的时候,用户所提供的参数值会被这些条件去验证以确保用户所提供的值是符合用户的期望的,限制条件被定义在一个列表中,如下所示:
constraints: -
description:
所提供的输入值不符合限制条件,这个描述内容将会被呈现给用户(其实就是创建过程中如果出现错误,错误的具体描述),如果省略,一个默认的值将会呈现给用户。
下面的例子是定义了一个带有两个限制条件的一个字符串参数,表明当尽管每个限制条件的描述是可选的,为每个应用部署时提供限制条件的描述是非常重要的。
Parameters: user_name: type: string label: User Name description: User name to be configured for the application constraints: - length: { min: 6, max: 8 } description: User name must be between 6 and 8 ? 长度的限制适用于字符串类型的参数,允许定义字符串参数值的最大长度和
最小长度,语法格式如下:
length: { min:
? 范围的限制适用于数值类型的参数,允许定义数值类型的参数的最大值和最
小值,语法格式如下:
range: { min: 0, max: 10 }
陕西省信息化工程研究院软件研发部第10页/ 共21页