更新时间:2023-12-13 GMT+08:00

mappings

mappings为可选项,用于定义映射表。在基于模板创建堆栈时,可以根据输入的变量信息,通过get_in_map方法提取特定变量对应的内容。一个模板最多支持定义10个映射。

mappings格式:

 <映射名称>:
    <映射对象名称>:
       <映射对象属性名称>: <映射对象属性值>
       <映射对象属性名称>: <映射对象属性值>
       ...
    ...
 ...
表1 参数属性说明

属性

是否必选

参数类型

取值约束

描述

映射名称

字符串

由大写字母、小写字母、数字和中划线“-”组成,长度为[1-64]。

最多可定义10个,且命名必须唯一。

映射对象名称

字符串

由大写字母、小写字母、数字和中划线“-”组成,长度为[1-64]。

映射对象的名称,命名必须唯一。

映射对象属性名称

字符串

由大写字母、小写字母、数字和中划线“-”组成,长度为[1-64]。

映射对象的属性名,在同一映射对象内命名必须唯一。

映射对象属性值

字符串或数字

字符串或数字

映射对象对应的属性值。

mappings配置样例:

mappings:
  regionMap:
    cn-east-3:   #华东区定义
      flavor: c2.medium    #使用华东区虚拟机规格
      image_id: f2003c7b-99c4-4616-be19-334beaca81b1   #使用华东区镜像id
    cn-north-1:  #华北区定义
      flavor: c1.medium    #使用华北区虚拟机规格
      image_id: 42f34d95-a538-4d17-be48-e690b48c1643   #使用华北区镜像id
    cn-south-1:  #华南区定义
      flavor: c1.medium    #使用华南区虚拟机规格
      image_id: a3934478-bfeb-4a02-b257-9089779f0380   #使用华南区镜像id

映射使用方式:

定义的映射可在node_templates或outputs中使用。

  • 在node_templates中通过get_in_map函数提取映射内容

    例如,在node_templates中定义了myecs虚拟机对象,其属性包括镜像id,虚拟机规格等参数。其中,镜像id和虚拟机规格必须已在映射表mappings中预先定义。在基于该模板创建堆栈时,将根据所部署在的region选择相应的镜像和规格进行虚拟机资源的创建。

    node_templates:
      myecs:
        type: HuaweiCloud.ECS.CloudServer
        properties:
          availabilityZone: cn-south-1a
          flavor:
            get_in_map:
              - regionMap
              - get_input: HuaweiCloud.Region
              - flavor
          imageId:
            get_in_map:
              - regionMap
              - get_input: HuaweiCloud.Region
              - image_id
          ...
  • 在outputs中通过get_in_map函数提取映射内容
    outputs:
      south-flavor:
        description: 在华南区创建虚拟机的规格名称
        value:
          get_in_map:
            - regionMap
            - cn-south-1
            - flavor