资源(Resources):所需资源的详细定义,包括资源间的依赖关系、配置细节等。
Resources可引用前述Parameters、Mappings、以及Functions的内容。Resources可被其他Resources和Outputs所引用。
语法
资源由资源逻辑UUID和资源描述组成。
- 资源描述用大括号
{ }括起。 - 如果声明多个资源,用逗号
,分隔开。
资源关键字列表:
| 关键字 | 描述 | 是否必需 | 举例 |
|---|---|---|---|
| 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" } }
- 默认为
- 在模板中,设置