模板是一个 JSON 格式的文本文件,使用 UTF-8 编码。模板用于创建资源栈,是描述基础设施和架构的蓝图。模板编辑者在模板中定义阿里云资源和配置细节,并说明资源间的依赖关系。
ROS 模板结构 { "ROSTemplateFormatVersion" : "2015-09-01",
"Description" : "模板描述信息,可用于说明模板的适用场景、架构说明等。", "Metadata" : { // 关于模板的元数据信息,比如存放用于可视化的布局信息。 }, "Parameters" : { // 定义创建资源栈时,用户可以定制化的参数。 },
"Mappings" : { // 定义映射信息表,映射信息是一种多层的 Map 结构。 },
"Conditions": { // 使用内部条件函数定义条件。这些条件确定何时创建关联的资源。 },
"Resources" : { // 所需资源的详细定义,包括资源间的依赖关系、配置细节等。 },
"Outputs" : { // 用于输出一些资源属性等有用信息。可以通过 API 或控制台获取输出的内容。 } }
ROSTemplateFormatVersion(必需) ROS 支持的模板版本号,当前版本号:2015-09-01。
Description(可选) 模板的描述信息。可用于说明模板的适用场景、架构说明等。通常情况下,对模板进行详细描述,有利于模板的用户理解模板的内容。
Metadata(可选) 模板编写者可以使用 Metadata 来存放与模板相关的元数据信息,内容可以是自由的 JSON 格式。
Parameters(可选) 定义创建资源栈时,模板用户可以定制化的参数。通常,模板的编辑者会把 ECS 的规格设计成一个参数。参数支持默认值。使用参数可以增强模板的灵活性,提高复用性。使用模板创建资源栈时,可以根据实际的评估结果来选择合适的规格。
更多详细信息,请参见参数(Parameters)。
Mappings(可选) Mappings 定义了一个多层的映射表,可以通过 Fn::FindInMap 函数来选择 Key 对应的值,或根据不同的输入参数值作为 Key 来查找映射表。例如,您可以根据 Region 不同,自动查找 Region-镜像映射表,从而找到适用的镜像。
更多详细信息,请参见映射(Mappings)。
Conditions(可选) Conditions 使用 Fn::And、Fn::Or、Fn::Not、Fn::Equals 定义条件。多个条件之间用逗号(,)隔开。在创建或更新资源栈时,系统先计算模板中的所有条件,然后再创建资源。创建与 true 条件关联的所有资源,忽略与 false 条件关联的所有资源。
更多详细信息,请参见条件(Conditions)。
Resources(可选) 用于详细定义使用该模板创建的资源栈所包含的资源,包括资源间的依赖关系、配置细节等。
更多详细信息,请参见资源(Resources)。
Outputs(可选) 用于输出一些资源属性等有用信息。可以通过 API 或控制台获取输出的内容。
更多详细信息,请参见输出(Outputs)。
在创建模板时,使用参数(Parameters)可提高模板的灵活性和可复用性。创建资源栈时,可根据实际情况,替换模板中的某些参数值。
例如,要为一个Web应用创建一个资源栈,包含1个负载均衡实例,2个ECS实例,1个RDS实例。如果该Web应用负载较高,可以在创建资源栈时,选择使用高配的ECS实例;否则可以在创建资源栈时,选择使用低配的ECS实例。这种情况下,可以按照如下示例,在模板中定义ECS实例规格参数:
"Parameters" : { "InstanceType" : { "Type" : "String", "AllowedValues":["ecs.t1.small","ecs.s1.medium", "ecs.m1.medium", "ecs.c1.large"], "Default": "ecs.t1.small", "Label": "ECS规格类型", "Description" : "请选择创建ECS示例的配置,默认为ecs.t1.small,可选ecs.t1.small, ecs.s1.medium, ecs.m1.medium,ecs.c1.large。" } } 示例中,定义的InstanceType参数允许模板用户在使用模板创建资源栈时,对InstanceType进行重新赋值。如果模板用户不设置参数值,则使用默认值: ecs.t1.small。
在定义资源时
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。