AOS编排语言系列教程(十三):映射mappings,提取特定变量对应内容

举报
tsjsdbd 发表于 2018/10/26 14:27:08 2018/10/26
【摘要】 mappings为可选项,用于定义映射表。在基于模板创建堆栈时,可以根据输入的变量信息,通过get_in_map方法提取特定变量对应的内容。一个模板最多支持定义10个映射。

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

例如创建ECS的虚拟机时,它的规格和镜像在华北、华南、华东是不一样的,需要设置三个模板比较麻烦,可以用mappings来定义映射表来解决这个问题。

regionMap映射中,定义了3个映射对象,分别是cn-east-1cn-north-1cn-south-1,每个映射对象都有规格和镜像两个属性:

  1.   cn-east-1(华东区):规格设置为c2.medium,表示2|1G;镜像ID设置为f2003c7b-99c4-4616-be19-334beaca81b1,是华东区ECS系统盘镜像CentOS 6.3 64bit的镜像ID

  2.   cn-north-1(华北区):规格设置为c1.medium,表示1|1G;镜像ID设置为42f34d95-a538-4d17-be48-e690b48c1643,是华北区ECS系统盘镜像CentOS 6.3 64bit的镜像ID

  3.   cn-south-1(华南区):规格设置为c1.medium,表示1|1G;镜像ID设置为a3934478-bfeb-4a02-b257-9089779f0380,是华南区ECS系统盘镜像CentOS 6.3 64bit的镜像ID

tosca_definitions_version: huaweicloud_tosca_version_1_0
inputs:
  image:
    description: 云服务器使用的镜像ID
    type: HuaweiCloud.ECS.Image.Id
  instance:
    default: 1
    description: 创建云服务器数量
  subnet:
    description: 云服务器子网ID
  vpc:
    description: 云服务器VPCID
mappings:
  regionMap:
    cn-east-1:
      flavor: c2.medium
      image_id: f2003c7b-99c4-4616-be19-334beaca81b1
    cn-north-1:
      flavor: c1.medium
      image_id: 42f34d95-a538-4d17-be48-e690b48c1643
    cn-south-1:
      flavor: c1.medium
      image_id: a3934478-bfeb-4a02-b257-9089779f0380
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
      instances:
        get_input: instance
      name: my-ecs
      nics:
        - subnetId:
            get_input: subnet
      publicIP:
        eip:
          bandwidth:
            shareType: PER
            size: 1
          ipType: 5_sbgp
      rootVolume:
        size: 40
        volumeType: SATA
      vpcId:
        get_input: vpc
outputs:
  ecs-eip:
    description: 云服务器公网IP
    value:
      get_attribute:
        - myecs
        - publicIps
  south-flavor:
    description: 在华南区创建虚拟机的规格名称
    value:
      get_in_map:
        - regionMap
        - cn-south-1
        - flavor

定义的映射可在node_template中使用,模板中在node_templates中定义了myecs虚拟机对象,其属性包括镜像id,虚拟机规格等参数。其中,镜像id和虚拟机规格已经在映射表mappings中预先定义。基于该模板创建堆栈时部署在华南区,因此将选择华南区的镜像和规格进行虚拟机资源的创建。

定义的映射也可以在outputs中通过get_in_map函数提取映射内容,堆栈创建成功后输出了虚拟机在华南区创建虚拟机的规格名称。

13map输出参数.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。