资源编排
概述
资源编排:一款帮助云计算用户简化云资源管理和自动化部署运维的服务。通过资源栈模板,定义所需的云资源、资源间的依赖关系、资源配置等,可实现自动化批量部署和配置资源,轻松管理云资源生命周期,通过API和SDK集成自动化运维能力。

功能特点
- 用户只需创建资源栈模板或修改已有模板,定义所需的云资源、资源间的依赖关系、资源配置等,资源编排将通过编排引擎自动完成所有资源的创建和配置。
- 云平台提供示例模板,也可使用可视化编辑器,快速创建资源栈模板。
- 可根据业务需要,动态调整资源栈模板,从而调整资源栈以灵活应对业务发展需要。
- 如果不再需要某资源栈,可一键删除该栈及栈内所有资源。
- 可重复使用已创建的资源栈模板快速复制整套资源,无需重复配置。
- 可根据业务场景灵活组合云服务,以满足自动化运维的需求。
资源栈
资源栈:资源编排通过资源栈模板快速创建和配置一组资源(以及资源间的依赖关系),这组资源定义为一个资源栈,通过管理资源栈,维护这组资源。
- 创建资源栈
- 查看资源栈信息
- 删除资源栈
在ZStack Cube 旗舰版主菜单,点击,进入资源栈界面。点击创建资源栈,弹出创建资源栈界面。
创建资源栈
- 资源栈配置。可参考以下示例输入相应内容:
- 区域:自动显示当前区域
- 名称:设置资源栈名称。命名规则:长度限制1~128字符,输入内容只能包含中文汉字、英文字母、数字、空格和以下7种英文字符
- _ . ( ) : +且不支持以空格开头或结尾 - 简介:可选项,可留空不填
- 超时设置:设置创建资源栈的超时时限,超时将失败,默认为60分钟
- 失败回滚:设置创建失败是否清理已创建的资源,默认开启
- 创建方式:选择创建资源栈方式,本章节以创建LNMP为例。支持以下三种方式:
如图 1所示:图 1. 基础配置 
- 模板配置。
模板配置项与所选的模板有关,不同类型的资源栈需要输入的参数不同,本章节以创建LNMP为例。
可参考以下示例输入相应内容:- 镜像:选择创建云主机的镜像
- 计算规格:选择创建云主机的计算规格
- 网络:选择创建云主机的网络
Note:- 该功能通过调用
DecodeStackTemplateAPI实现。 - 开始创建资源栈前,可点击预览查看将要创建的资源列表。
- 创建资源栈需要一定时长,请等待创建完成。
如图 2所示:图 2. 模板配置 
- 确认信息。
查看将要创建的资源栈,支持跳转修改。
如图 3所示:图 3. 确认信息 
查看资源栈信息
- 总览:显示资源栈当前状态、所有者、UUID、模板内容等信息,其中模板内容支持修改
- 资源:显示资源栈所包括的全部资源信息
- 事件:显示资源栈生命周期中发生的每一个事件
- 审计:查看此资源栈的相关操作
删除资源栈
- 删除资源栈默认会删除栈内编排创建的所有资源,包括云主机或云盘。
- 若资源栈所对应的模板事先已设置
DeletionPolicy为Retain,栈内编排创建的所有资源将会被保留,详情可参考资源(Resources)章节。
资源栈模板
资源栈模板:一个UTF8编码格式的文件,基于模板可快速创建资源栈,用户在模板中定义所需的云资源、资源间的依赖关系、资源配置等,资源编排将解析模板,自动完成所有资源的创建和配置。
- 创建资源栈模板
- 查看模板信息
- 启用模板
- 停用模板
- 从模板创建资源栈
- 修改模板
- 删除模板
创建资源栈模板
在ZStack Cube 旗舰版主菜单,点击,进入资源栈模板界面。点击创建资源栈模板,弹出创建资源栈模板界面。

查看模板信息
- 基本信息:显示模板当前状态、名称、简介、模板UUID、MD5码等信息,其中名称和简介支持修改
- 资源栈模板内容:显示模板具体内容,关于模板语法的详细介绍,请参考资源栈模板语法章节
- 审计:查看此模板的相关操作
启用/停用模板
- 启用模板:将已停用的模板启用
- 停用模板:将模板停用,停用的模板不能创建资源栈
修改模板
支持在文件编辑器中修改模板。
从模板创建资源栈
在资源栈模板界面,选择需生成的资源栈模板,点击,弹出创建资源栈界面。可参考资源栈章节填写参数。
删除模板
如果不再使用某一模板,可将该模板删除。
约束条件
- 每个模板文件大小不超过4MB。
- 若通过API提交,则参数大小不可超过64K。
可视化编排
使用可视化编排,可以更直观高效地创建资源栈模板以及显示资源栈结构。打开可视化编排,通过拖曳资源到画布中适当位置,连线创建资源间的依赖关系,并输入需要的参数,即可快速创建资源栈模板,高效编排云资源。
可视化编排界面
在ZStack Cube 旗舰版主菜单,点击,进入可视化编排界面。

- 顶部菜单:可视化资源编辑器的功能菜单。包括:预览模板、生成资源栈、另存为资源栈模板。
- 左侧菜单:可视化资源编辑器支持的资源列表。可通过拖曳连线直观呈现云资源间的关系,高效编排云资源。目前支持以下资源:
- 云资源池:云主机、云盘
- 网络资源:二层网络、公有网络、扁平网络、VPC网络
- 网络服务:安全组、弹性IP、端口转发、负载均衡、监听器
- 网络设备:VPC路由器
- 中间部分:可视化资源编辑器的画布,在此进行可视化资源编排。
- 支持撤销、重做、放大、缩小、适应画布、删除、清除、预览、全局参数操作。
- 当画布中资源布局足够多时,可通过拖动缩略框调整画布位置,也可通过滚动鼠标放大缩小画布。
可视化编排
可视化编排操作
资源栈模板语法
资源栈模板是一个UTF8编码格式的文件。
基于模板可快速创建资源栈,用户在模板中定义所需的云资源、资源间的依赖关系、资源配置等,资源编排将解析模板,自动完成所有资源的创建和配置。
资源栈模板结构
{
"ZStackTemplateFormatVersion" : "YYYY-MM-DD",
"Description" : "模板描述信息,可用于说明模板的适用场景、架构说明等。",
"Parameters" : {
// 定义创建资源栈时,用户可以定制化的参数。
},
"Mappings" : {
// 定义映射信息表,映射信息是一种多层的Map结构。
},
"Resources" : {
// 所需资源的详细定义,包括资源间的依赖关系、配置细节等。
},
"Outputs" : {
// 用于输出一些资源属性等有用信息,可以通过API获取输出的内容。
}ZStackTemplateFormatVersion(必需)模板版本号。- 格式为:
YYYY-MM-DD
- 格式为:
Description(可选)模板描述信息,可用于说明模板的适用场景、架构说明等。- 对模板进行详细描述,有利于用户理解模板内容。
Parameters(可选)定义创建资源栈时,用户可以定制化的参数。- 例如,用户将创建云主机的计算规格设计成一个参数。
- 参数支持默认值。
- 使用参数可以增强模板的灵活性,提高复用性。
- 关于参数(Parameters)的详细介绍,请参考参数(Parameters)章节。
Mappings(可选)定义映射信息表,映射信息是一种多层的Map结构。- 可通过
Fn::FindInMap函数选择key对应的值。 - 可根据不同的输入参数值作为
key查找映射表。 - 例如,可根据区域不同,自动查找区域-镜像映射表,从而找到适用的镜像。
- 关于映射(Mappings)的详细介绍,请参考映射(Mappings)章节。
- 可通过
Resources(可选)所需资源的详细定义,包括资源间的依赖关系、配置细节等。- 关于资源(Resources)的详细介绍,请参考资源(Resources)章节。
Outputs(可选)用于输出一些资源属性等有用信息,可以通过API获取输出的内容。- 关于输出(Outputs)的详细介绍,请参考输出(Outputs)章节。
参数(Parameters)
- 创建资源栈模板时,使用参数可以增强模板的灵活性,提高复用性。
- 创建资源栈时,可根据实际情况替换模板中的某些参数值。
语法
- 参数名称必须为字母数字,同一个模板中不能与其它参数名称重复。
- 可以用
Label字段定义友好的参数名。
| 属性 | 描述 | 是否必需 | 举例 |
|---|---|---|---|
| Type | 参数类型,默认支持:
|
是 | "Type":
"String" |
| Lable | 参数别名,生成预览或正式表单时用 | 否 | "Lable":
"云主机密码" |
| Description | 参数描述 | 否 | "Description":
"云主机登录密码" |
| NoEcho | 该字段是否用*****替代,不填则不替代 |
否 | "NoEcho":
trueNote: 暂不支持 |
| DefaultValue | 参数默认值 | 否 | "DefaultValue":
"password" |
- 常量参数可直接引用,无需在
Parameters中定义(也不可定义)。 - 其值在资源编排运行时确定。
| 常量名 | 描述 |
|---|---|
| ZStack::StackName | 当前栈的名称 |
| ZStack::StackUuid | 当前栈的UUID |
| ZStack::AccountUuid | 当前栈的AccountUuid |
| ZStack::AccountName | 当前栈的AccountName |
示例
"Parameters" : {
"username" : {
"Label": "登录名",
"Description" : "登录名",
"DefaultValue": "root",
"Type" : "String"
},
"password" : {
"Label": "密码",
"NoEcho" : "true",
"Description" : "主机登录密码",
"Type" : "String",
}
}Parameters声明两个参数:username- 参数属于String类型,默认值为root。
- 可指定的最小长度为2,可指定的最大长度为12。
Note:username的默认值也必须符合长度限制和允许值限制。password- 参数属于String类型,无默认值。
- 将
NoEcho属性设置为true,可阻止查询栈接口返回参数值。Note:NoEcho属性设置暂不支持。 - 可指定的最小长度为6,可指定的最大长度为41。
- 允许大、小写字母字符和数字。
资源(Resources)
Resources可引用前述Parameters、Mappings、以及Functions的内容。Resources可被其他Resources和Outputs所引用。
语法
- 资源描述用大括号
{ }括起。 - 如果声明多个资源,用逗号
,分隔开。
| 关键字 | 描述 | 是否必需 | 举例 |
|---|---|---|---|
| Type | 资源类型,包括以下两种类型:
|
是 |
|
| Properties | 资源属性,为资源指定创建参数 | 是 | 详情请参考资源属性(Properties) |
| DependsOn | 资源依赖,定义资源所依赖的资源 | 否 |
|
| DeletionPolicy | 删除策略
|
否 |
|
| Description | 资源描述 | 否 |
|
示例
"Resources" : {
"UUID-1" : {
"Description" : "资源描述",
"Type" : "资源类型",
"Properties" : {
资源属性描述
}
},
"UUID-2" : {
"Description" : "资源描述"
"Type" : "资源类型",
"Properties" : {
资源属性描述
},
"DependsOn":"要依赖的资源,如UUID-1,注意上下文中必须包含此资源",
"DeletionPolicy":"删除策略"
}
}Resources声明两个资源,关键字说明如下:- 资源UUID
UUID-1、UUID-2均为资源逻辑UUID,且均为变量。- 在创建模板其它部分时,可以通过资源逻辑UUID引用该资源。
- 资源逻辑UUID在模板中具有唯一性。
- 资源类型(Type)
- 表示正在声明的资源的类型,包括:Resource类型、Action类型。
- 例如,
"Type": "ZStack::Resource::VmInstance"表示云主机实例,"Type": "ZStack::Action::AddIpRange"表示添加IP范围。 - 关于资源编排支持的所有资源列表,详情请参考资源索引章节。
- 资源属性(Properties)
- 为资源指定创建参数。
- 代码段示例如下:
"Resources" : { "InstanceOffering" : { "Type" : "ZStack::InstanceOffering", "Properties" : { "cpuNum" : "1", "cpuSpeed" : "1", "memorySize" : "1073741824", "name" : "instance-offering", "type" : "UserVm", "sortKey": 0, "allocatorStrategy": "LeastVmPreferredHostAllocatorStrategy" } } } - 资源属性值定义规则:
- 属性值可以是文本字符串、字符串列表、布尔值、引用参数、或者函数返回值。
- 如果属性值为文本字符串或布尔值,该值会被双引号
" "括起来。 - 如果属性值为任一类型的字符串列表,该值会被中括号
[ ]括起来。 - 如果值为内部函数或引用的参数,该值会被大括号
{ }括起来。 - 将文字、列表、引用参数、和函数返回值合并起来取值时,上述规则适用。
- 以下示例说明如何声明不同的属性值类型:
"Properties" : { "String" : "string", "LiteralList" : [ "value1", "value2" ], "Boolean" : "true" "ReferenceForOneValue" : { "Ref" : "ResourceID" } , "FunctionResultWithFunctionParams" : { "Fn::Join" : [ "%", [ "Key=", { "Ref" : "SomeParameter" } ] ] } }
- 如果资源不需要声明任何属性,可以忽略该资源的属性部分。
- 资源依赖(DependsOn)
- 定义资源所依赖的资源。
- 为某个资源添加
DependsOn属性后,该资源仅在DependsOn属性中指定的资源之后创建。 - 代码段示例如下:
{ "ZStackTemplateFormatVersion" : "2018-06-18", "Resources" : { "WebServer": { "Type": "ZStack::Resource::VmInstance", "DependsOn": "DatabseServer" }, "DatabseServer": { "Type": "ZStack::Resource::VmInstance", "Properties": { "name": {"Fn::Join":["-",[{"Ref":"ZStack::StackName"},"VM"]]}, "instanceOfferingUuid": {"Ref":"InstanceOfferingUuid"}, "imageUuid":{"Ref":"ImageUuid"}, "l3NetworkUuids":[{"Ref":"PrivateNetworkUuid"}], "dataDiskOfferingUuids":[{"Ref":"DiskOfferingUuid"}], "hostUuid":{"Ref":"HostUuid"} } } } }本例表示WebServer将在DatabaseServer创建成功后才开始创建。
- 删除策略(DeletionPolicy)
- 在模板中,设置
DeletionPolicy属性,可以声明资源栈被删除时是否保留资源。 DeletionPolicy有Retain和Delete两个选项。- 默认为
Delete,表示删除资源栈默认会删除栈内编排创建的所有资源。 - 若将
DeletionPolicy设置为Retain,表示资源栈被删除时可保留资源。此时,该资源所依赖的资源也要保留(系统自动为其保留)。例如,模板对应的资源栈被删除时,保留栈内的云主机,代码段示例如下:"Resources" : { "VMInstance" : { "Type" : "ZStack::Resource::VmInstance", "Properties": { "name": {"Fn::Join":["-",[{"Ref":"ZStack::StackName"},"VM"]]}, "instanceOfferingUuid": {"Ref":"InstanceOfferingUuid"}, "imageUuid":{"Ref":"ImageUuid"}, "l3NetworkUuids":[{"Ref":"PrivateNetworkUuid"}], "dataDiskOfferingUuids":[{"Ref":"DiskOfferingUuid"}], "hostUuid":{"Ref":"HostUuid"} }, "DeletionPolicy" : "Retain" } }
- 默认为
- 在模板中,设置
输出(Outputs)
输出(Outputs):用于输出一些资源属性等有用信息,可以通过API获取输出的内容。
语法
- 输出描述用大括号
{ }括起。 - 如果声明多个输出项,用逗号
,分隔开。
| 关键字 | 描述 | 是否必需 | 举例 |
|---|---|---|---|
| Description | 输出描述 | 否 |
|
| Value | 输出内容 | 是 |
|
示例
"Outputs" : {
"UUID-1" : {
"Description" : "输出描述",
"Value" : "输出内容"
},
"UUID-2" : {
"Description" : "输出描述",
"Value" : "输出内容"
}
}Output声明了两个输出项,关键字说明如下:- 输出UUID
- 输出UUID在模板中具有唯一性。
- 输出描述(Description)
- 用于描述输出值的
String类型。
- 用于描述输出值的
- 输出内容(Value)
- 在调用查询堆栈接口时,返回的属性值。
- 代码段示例如下:
{ "ZStackTemplateFormatVersion": "2018-06-18", "Description": "本示例将创建一个带云盘的云主机(基于本地存储), 创建示例前提环境:\n计算规格,镜像,云盘规格,私有网络,可用物理机", "Parameters": { "InstanceOfferingUuid": { "Type": "String", "Label": "计算规格", "Description": "The instance offering uuid" }, "ImageUuid": { "Type": "String", "Label": "镜像", "Description": "The Image uuid for creating VmInstance, Please choose an image not iso" }, "PrivateNetworkUuid": { "Type": "String", "Label": "私有网络", "Description" : "The private network uuid for creating VmInstance" }, "DiskOfferingUuid": { "Type": "String", "Label": "云盘规格", "Description": "Volume size offering uuid" }, "HostUuid": { "Type": "String", "Label": "物理机", "Description": "Host uuid, that vm will start on" } }, "Resources": { "VmInstance": { "Type": "ZStack::Resource::VmInstance", "Properties": { "name": {"Fn::Join":["-",[{"Ref":"ZStack::StackName"},"VM"]]}, "instanceOfferingUuid": {"Ref":"InstanceOfferingUuid"}, "imageUuid":{"Ref":"ImageUuid"}, "l3NetworkUuids":[{"Ref":"PrivateNetworkUuid"}], "dataDiskOfferingUuids":[{"Ref":"DiskOfferingUuid"}], "hostUuid":{"Ref":"HostUuid"} } } }, "Outputs": { "VmInstance": { "Value": { "Ref": "VmInstance" } } } }本例中,输出部分有1个输出项,将输出
VmInstance的属性值。
函数(Functions)
资源编排提供多个内置函数,用于管理资源栈。可在定义资源(Resources)、输出(Outputs)和映射(Mappings)时,使用内置函数。
Fn::Base64Fn::FindInMapFn::GetAttFn::JoinFn::SplitFn::SelectRefFn::IfFn::EqualFn::AndFn::NotFn::Or
Fn::Base64
- 声明
"Fn::Base64" : stringToEncode - 参数
stringToEncode:转换成Base64的字符串。
- 示例
"Fn::Base64" : "password" - 返回值
用Base64表示的原始字符串。
本例中,返回
"cGFzc3dvcmQ=",即"password"的Base64编码结果。
Fn::FindInMap
Mappings声明的双层映射中的键对应的值。- 声明
"Fn::FindInMap" : ["MapName", "TopLevelKey", "SecondLevelKey"] - 参数
MapName:Mappings 中所声明映射的 ID,包含键和值。TopLevelKey:第一级键,其值是一个键/值对列表。SecondLevelKey:第二级键,其值是一个字符串或者数字。
- 示例
"Fn::FindInMap" : ["RegionMap", "cn-shanghai", "32"] - 返回值
分配给
SecondLevelKey的值。本例中,返回
"RegionMap"中"cn-shanghai"对应的键/值对列表里,键为"32"对应的值。 - 支持的函数可在
Fn::FindInMap函数中嵌套使用以下函数:Fn::FindInMapRef
Fn::GetAtt
- 声明
"Fn::GetAtt": ["resourceUuid", "attributeName"] - 参数
resourceUuid:目标资源的逻辑UUID。attributeName:目标资源的属性名称。
- 示例
"Fn::GetAtt" : ["MyVMInstance", "ImageUuid"] - 返回值
属性值。
本例中,返回
resourceUuid为"MyVMInstance"的"ImageUuid"属性。
Fn::Join
- 声明
"Fn::Join" : ["delimiter", ["string1", "string2", ...]] - 参数
delimiter:分隔符。分隔符可为空,可将所有的值直接连接起来。["string1", "string2", ...]:被连接起来的值列表示例。
- 示例
"Fn::Join" : ["-", ["a", "b", "c"]] - 返回值
被连接起来的字符串。
本例中,返回
"a-b-c" - 支持的函数可在
Fn::Join函数中嵌套使用以下函数:Fn::Base64Fn::GetAttFn::JoinFn::SelectRef
Fn::Split
- 声明
"Fn::Split" : ["delimiter", "original_string"] - 参数
delimiter:分隔符,例如:,,;,\n,\t等。original_string:将要被切片的字符串。
- 示例
"Fn::Split": [";", "foo; bar; achoo"] - 返回值
切片后所有字符串组成的列表。
本例中,返回
["foo", " bar", "achoo"] - 支持的函数可在
Fn::Split函数中嵌套使用以下函数:Fn::Base64Fn::FindInMapFn::GetAttFn::JoinFn::SelectRef
Fn::Select
- 声明
- 数据元列表可为一个数组:
"Fn::Select" : ["index", ["value1", "value2", ...]] - 数据元列表可为一个映射表:
"Fn::Select" : ["index", {"key1": "value1", ...}]
- 数据元列表可为一个数组:
- 参数
index:待检索数据元的索引。- 如果数据元列表是一个数组,则索引是
0到N-1之间的某个值,其中N代表阵列中元素的数量。 - 如果数据元列表是一个映射表,则索引是映射表中的某个键。
- 如果找不到索引对应的值,则返回空字符串。
- 如果数据元列表是一个数组,则索引是
- 示例
- 示例一:数据元列表是一个数组
"Fn::Select" : ["2", ["foo", " bar", "achoo"]] - 示例二:数据元列表是一个映射表
"Fn::Select" : ["shape", {"shape": "circle", "height": "80"}] - 示例三:数据元列表是一个
CommaDelimitedList"Parameters" : { "userParam": { "Type": "CommaDelimitedList", "Default": "10.0.100.0/24, 10.0.101.0/24, 10.0.102.0/24" } }, "Resources": { "resourceUuid": { "Properties": { "CidrBlock": {"Fn::Select" : [0, {"Ref":"userParam"}]} } } }
Note:- 若
Fn::Select函数不嵌套使用函数,第一个参数为字符串,参见示例一("2")、示例二("shape"); - 若
Fn::Select函数嵌套使用函数,第一个参数为数字,参见示例三(0)。
- 示例一:数据元列表是一个数组
- 返回值选定的数据元。
- 示例一:返回
"achoo" - 示例二:返回
"circle" - 示例三:返回
"10.0.100.0/24"
- 示例一:返回
- 支持的函数
- 对于
Fn::Select索引值,可在Fn::Select函数中嵌套使用Ref函数。 - 对于对象的
Fn::Select列表,可在Fn::Select函数中嵌套使用以下函数:Fn::Base64Fn::FindInMapFn::GetAttFn::JoinFn::SelectRef
- 对于
Ref
- 如果指定参数是
resourceUuid,则返回资源的值。 - 否则系统将认为指定参数是参数,将尝试返回参数的值。
- 声明
"Ref":"logicalName" - 参数
logicalName:要引用的资源或参数的逻辑名称。
- 示例若
diskOfferingParam被定义为:"diskOfferingParam": { "allocatorStrategy": "DefaultPrimaryStorageAllocationStrategy", "diskSize": "21474836480", "type": "DefaultDiskOfferingType", "sorkKey": "0" }"Ref":"diskOfferingParam" - 返回值
资源的值或者参数的值。
本例中,返回diskOfferingParam的值:{ "allocatorStrategy": "DefaultPrimaryStorageAllocationStrategy", "diskSize": "21474836480", "type": "DefaultDiskOfferingType", "sorkKey": "0" } - 支持的函数
不能在
Ref函数中嵌套使用任何函数。必须指定为资源逻辑UUID的字符串。
Fn::If
true,则返回一个值;如果指定的条件计算为false,则返回另一个值。- 在模板
Resources和Outputs属性值中支持Fn::If内部函数。
- 声明
"Fn::If": ["condition_name", "value_if_true", "value_if_false"] - 参数
condition_name:Conditions中条件对应的条件名称,通过条件名称引用条件。value_if_true:当指定的条件计算为true时,返回此值。value_if_false:当指定的条件计算为false时,返回此值。
- 示例
"Fn::If": ["condition16", "vm-true", "vm-false"] - 返回值
根据指定条件计算的结果返回相应的参数值。
本例中,若
condition16的结果是true,则返回vm-true;若condition16的结果是false,则返回vm-false。 - 支持的函数可在
Fn::If函数中嵌套使用以下函数:Fn::FindInMapRefFn::EqualFn::AndFn::NotFn::Or
Fn::Equal
true;如果不相等,则返回false。- 声明
"Fn::Equal": [value_1, value_2] - 参数
value:要比较的任意类型的值。
- 示例
"Fn::Equal": [true, false] - 返回值
true或false。本例中,返回
false。 - 支持的函数可在
Fn::Equal函数中嵌套使用以下函数:Fn::FindInMapRefFn::EqualFn::AndFn::NotFn::Or
Fn::And
true,则返回true;如果任意条件计算为false,则返回false。- 声明
"Fn::And": [condition, ...] - 参数
condition:计算为true或false的条件。
- 示例
"Fn::And": [true, false] - 返回值
true或false。本例中,返回
false。 - 支持的函数可在
Fn::And函数中嵌套使用以下函数:Fn::FindInMapRefFn::EqualFn::AndFn::NotFn::Or
Fn::Not
false的条件,返回true;对计算为true的条件,返回false。- 声明
"Fn::Not": condition - 参数
condition:计算为true或false的条件。
- 示例
"Fn::Not": true - 返回值
true或false。本例中,返回
false。 - 支持的函数可在
Fn::Not函数中嵌套使用以下函数:Fn::FindInMapRefFn::EqualFn::AndFn::NotFn::Or
Fn::Or
true,则返回true;如果所有条件都计算为false,则返回false。- 声明
"Fn::Or": [condition, ...] - 参数
condition:计算为true或false的条件。
- 示例
"Fn::Or": [true, false] - 返回值
true或false。本例中,返回
true。 - 支持的函数可在
Fn::Or函数中嵌套使用以下函数:Fn::FindInMapRefFn::EqualFn::AndFn::NotFn::Or
映射(Mappings)
- 映射是一个
Key-Value映射表。 - 在模板的
Resources和Outputs中,可使用内置函数Fn::FindInMap,通过指定Key而获取映射表的Value。
语法
Key-Value键值对组成。- 其中
Key和Value可以为字符串类型或者数字类型。 - 如果声明多个映射,用逗号
,分隔开。 - 每个映射的名称不能重复。
示例
"Mappings" : {
"Mapping01" : {
"Key01" : {
"Name" : "Value01"
},
"Key02" : {
"Name" : "Value02"
},
"Key03" : {
"Name" : "Value03"
}
}Fn::FindInMap返回对应的值示例:{
"ZStackTemplateFormatVersion": "2018-06-18",
"Parameters": {
"regionParam": {
"Description": "选择创建云主机的区域",
"Type": "String",
"AllowedValues": ["cn-hangzhou", "cn-shanghai"]
}
},
"Mappings" : {
"ImageInRegions" : {
"cn-hangzhou" : { "32" : "imageUuid-1", "64" : "imageUuid-2" },
"cn-shanghai" : { "32" : "imageUuid-3", "64" : "imageUuid-4" }
}
},
"Resources": {
"WebServer": {
"Type": "ZStack::Resource::VmInstance",
"Properties": {
"name" : "test-vm",
"imageUuid" : {"Fn::FindInMap": ["ImageInRegions", {"Ref":"regionParam"}, "64"]},
"instanceOfferingUuid": {"Ref":"instanceOfferingUuid"},
"l3NetworkUuids": [{"Ref":"l3NetworkUuid"}]
},
"DeletionPolicy": "Retain"
}
}
}资源索引
Resource类型
| Resouce类型 | 说明 |
|---|---|
| ZStack::Resource::VmInstance | 创建云主机(CreateVMInstance) |
| ZStack::Resource::DataVolume | 创建云盘(CreateDataVolume) |
| ZStack::Resource::Image | 添加镜像(AddImage) |
| ZStack::Resource::RootVolumeTemplate | 从根云盘创建根云盘镜像(CreateRootVolumeTemplateFromRootVolume) |
| ZStack::Resource::DataVolumeTemplate | 从云盘创建数据云盘镜像(CreateDataVolumeTemplateFromVolume) |
| ZStack::Resource::AffinityGroup | 创建亲和组(CreateAffinityGroup) |
| ZStack::Resource::InstanceOffering | 创建云主机规格(CreateInstanceOffering) |
| ZStack::Resource::DiskOffering | 创建云盘规格(CreateDiskOffering) |
| ZStack::Resource::L2VxlanNetworkPool | 创建VXLAN网络池(CreateL2VxlanNetworkPool) |
| ZStack::Resource::L2NoVlanNetwork | 创建普通二层网络(CreateL2NoVlanNetwork) |
| ZStack::Resource::L2VlanNetwork | 创建二层VLAN网络(CreateL2VlanNetwork) |
| ZStack::Resource::L2VxlanNetwork | 创建VXLAN网络(CreateL2VxlanNetwork) |
| ZStack::Resource::L3Network | 创建三层网络(CreateL3Network) |
| ZStack::Resource::VRouterRouteTable | 创建路由表(CreateVRouterRouteTable) |
| ZStack::Resource::VpcVRouter | 创建VPC路由器(CreateVpcVRouter) |
| ZStack::Resource::SecurityGroup | 创建安全组(CreateSecurityGroup) |
| ZStack::Resource::SecurityGroupRule | 添加规则到安全组(AddSecurityGroupRule) |
| ZStack::Resource::Vip | 创建虚拟IP(CreateVip) |
| ZStack::Resource::Eip | 创建弹性IP(CreateEip) |
| ZStack::Resource::PortForwardingRule | 创建端口转发规则(CreatePortForwardingRule) |
| ZStack::Resource::LoadBalancer | 创建负载均衡器(CreateLoadBalancer) |
| ZStack::Resource::LoadBalancerListener | 创建负载均衡监听器(CreateLoadBalancerListener) |
| ZStack::Resource::IPsecConnection | 创建IPsec连接(CreateIPsecConnection) |
| ZStack::Resource::VirtualRouterOffering | 创建路由器规格(CreateVirtualRouterOffering) |
| ZStack::Resource::VniRange | 创建VNI Range(CreateVniRange) |
| ZStack::Resource::UserTag | 创建用户标签(CreateUserTag) |
| ZStack::Resource::DataVolumeFromVolumeTemplate | 从镜像创建云盘(CreateDataVolumeFromVolumeTemplate) |
| ZStack::Resource::Tag | 创建资源标签(CreateTag) |
Action类型
| Action类型 | 说明 |
|---|---|
| ZStack::Action::AddIpRange | 添加IP地址范围(AddIpRange) |
| ZStack::Action::AddDnsToL3Network | 向三层网络添加DNS(AddDnsToL3Network) |
| ZStack::Action::AddVmToAffinityGroup | 添加云主机到亲和组(AddVmToAffinityGroup) |
| ZStack::Action::AddVRouterRouteEntry | 添加路由条目(AddVRouterRouteEntry) |
| ZStack::Action::AddCertificateToLoadBalancerListener | 添加证书到负载均衡(AddCertificateToLoadBalancerListener) |
| ZStack::Action::AddIpRangeByNetworkCidr | 通过网络CIDR添加IP地址范围(AddIpRangeByNetworkCidr) |
| ZStack::Action::AddVmNicToLoadBalancer | 添加云主机网卡到负载均衡器(AddVmNicToLoadBalancer) |
| ZStack::Action::AddVmNicToSecurityGroup | 添加虚拟机网卡到安全组(AddVmNicToSecurityGroup) |
| ZStack::Action::AddRemoteCidrsToIPsecConnection | 添加远端CIDR到IPsec连接(AddRemoteCidrsToIPsecConnection) |
| ZStack::Action::AttachEip | 绑定弹性IP(AttachEip) |
| ZStack::Action::AttachDataVolumeToVm | 挂载云盘到云主机上(AttachDataVolumeToVm) |
| ZStack::Action::AttachPortForwardingRule | 挂载规则到虚拟机网卡上(AttachPortForwardingRule) |
| ZStack::Action::AttachIsoToVmInstance | 加载ISO到云主机(AttachIsoToVmInstance) |
| ZStack::Action::AttachPciDeviceToVm | 绑定PCI设备到云主机(AttachPciDeviceToVm) |
| ZStack::Action::AttachUsbDeviceToVm | 云主机加载物理机USB设备(AttachUsbDeviceToVm) |
| ZStack::Action::AttachL2NetworkToCluster | 挂载二层网络到集群(AttachL2NetworkToCluster) |
| ZStack::Action::AttachL3NetworkToVm | 加载L3网络到云主机(AttachL3NetworkToVm) |
| ZStack::Action::AttachNetworkServiceToL3Network | 挂载网络服务到三层网络(AttachNetworkServiceToL3Network) |
| ZStack::Action::AttachSecurityGroupToL3Network | 挂载安全组到L3网络(AttachSecurityGroupToL3Network) |
| ZStack::Action::AttachL3NetworksToIPsecConnection | 添加三层网络到IPsec连接(AttachL3NetworksToIPsecConnection) |
| ZStack::Action::AttachVRouterRouteTableToVRouter | 绑定路由表到路由器(AttachVRouterRouteTableToVRouter) |
| ZStack::Action::AddCertificateToLoadBalancerListener | 添加证书到负载均衡(AddCertificateToLoadBalancerListener) |
| ZStack::Action::AddHostRouteToL3Network | 向三层网络添加主机路由(AddHostRouteToL3Network) |
| ZStack::Action::SetL3NetworkRouterInterfaceIp | 设置三层网络路由器接口IP(SetL3NetworkRouterInterfaceIp) |
| ZStack::Action::AddDnsToVpcRouter | 向VPC路由器添加DNS(AddDnsToVpcRouter) |
| ZStack::Action::AttachTagToResources | 加载资源标签(AttachTagToResources) |
| ZStack::Action::UpdateTag | 更新资源标签(UpdateTag) |






