ZStack Logo

ZStack AIOS

资源(Resources)

完整平台用户手册,包含基础云平台能力与 AIOS 相关章节。

资源(Resources):所需资源的详细定义,包括资源间的依赖关系、配置细节等。
  • Resources可引用前述ParametersMappings、以及Functions的内容。
  • Resources可被其他ResourcesOutputs所引用。

语法

资源由资源逻辑UUID和资源描述组成。
  • 资源描述用大括号{ }括起。
  • 如果声明多个资源,用逗号,分隔开。
资源关键字列表:
关键字 描述 是否必需 举例
Type 资源类型,包括以下两种类型:
  • Resource类型
  • Action类型
  • "Type": "ZStack::Resource::VmInstance"
  • "Type": "ZStack::Action::AddIpRange"
  • 详情请参考资源类型(Type)
Properties 资源属性,为资源指定创建参数 详情请参考资源属性(Properties)
DependsOn 资源依赖,定义资源所依赖的资源
DeletionPolicy 删除策略
  • 资源栈被删除时是否保留某个资源
  • 若某个资源需要保留,则它所依赖的资源也要保留(系统自动为其保留)
  • 默认不保留
Description 资源描述
  • "Description" : "attach ip range to l3 network"

示例

代码段示例如下:
"Resources" : {
    "UUID-1" : {
        "Description" : "资源描述",
        "Type" : "资源类型",
        "Properties" : {
            资源属性描述
        }
    },
    "UUID-2" : {
        "Description" : "资源描述"
        "Type" : "资源类型",
        "Properties" : {
            资源属性描述
        },
        "DependsOn":"要依赖的资源,如UUID-1,注意上下文中必须包含此资源",
        "DeletionPolicy":"删除策略"
    }
}
本例中Resources声明两个资源,关键字说明如下:
  • 资源UUID
    • UUID-1UUID-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属性,可以声明资源栈被删除时是否保留资源。
    • DeletionPolicyRetainDelete两个选项。
      • 默认为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"
          }
        }