更新时间:2024-04-17 GMT+08:00

mappings

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

mappings格式:

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

属性

是否必选

参数类型

取值约束

描述

映射名称

字符串

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

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

映射对象名称

字符串

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

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

映射对象属性名称

字符串

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

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

映射对象属性值

字符串或数字

字符串或数字

映射对象对应的属性值。

mappings配置样例:

mappings:
  imageMap:
    old:
      image: '192.168.1.86:20202/test/mysql-server:5.6.35'
    new:
      image: '192.168.1.90:20202/test/mysql-server:5.7.1'

映射使用方式:

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

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

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

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