Updated on 2022-02-22 GMT+08:00

mappings

The mappings section is optional and defines a mapping table. When creating a stack based on a template, you can use the get_in_map function to extract the content corresponding to a specific variable. A maximum of 10 mappings can be defined in a template.

Format of the mappings section:

 <Mapping name>:
    <Mapping object name>:
       <Mapping object property name>: <Mapping object property value>
       <Mapping object property name>: <Mapping object property value>
       ...
    ...
 ...
Table 1 Parameter property description

Property

Mandatory

Type

Value Constraint

Description

Mapping name

Yes

String

The value must be 1 to 64 characters long. Only letters, digits, and hyphens (-) are allowed.

A maximum of 10 mapping names can be defined and each name must be unique.

Mapping object name

Yes

String

The value must be 1 to 64 characters long. Only letters, digits, and hyphens (-) are allowed.

Name of a mapping object, which must be unique.

Mapping object property name

Yes

String

The value must be 1 to 64 characters long. Only letters, digits, and hyphens (-) are allowed.

Property name of a mapping object. Each name must be unique in the same mapping object.

Mapping object property value

Yes

String or digit

String or digit

Property value corresponding to a mapping object.

Example configuration of 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'

Usage mode of mappings:

The defined mappings can be used in node_templates or outputs.

  • Use the get_in_map function to extract the mapping content from node_templates.

    For example, the myecs object is defined in node_templates, and its properties include the image ID and VM specifications. The image ID and VM specifications must have been predefined in mappings. During stack creation based on the template, the required image and VM specifications of the corresponding region will be used.

    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
          ...
  • Use the get_in_map function to extract the mapping content from outputs.
    outputs:
      south-flavor:
        description: specifications of the VM to be created
        value:
          get_in_map:
            - regionMap
            - ae-ad-1
            - flavor