AOS编排语言系列教程(十三):映射mappings,提取特定变量对应内容
mappings为可选项,用于定义映射表。在基于模板创建堆栈时,可以根据输入的变量信息,通过get_in_map方法提取特定变量对应的内容。一个模板最多支持定义10个映射。
例如创建ECS的虚拟机时,它的规格和镜像在华北、华南、华东是不一样的,需要设置三个模板比较麻烦,可以用mappings来定义映射表来解决这个问题。
在regionMap映射中,定义了3个映射对象,分别是cn-east-1、cn-north-1和cn-south-1,每个映射对象都有规格和镜像两个属性:
- cn-east-1(华东区):规格设置为c2.medium,表示2核|1G;镜像ID设置为f2003c7b-99c4-4616-be19-334beaca81b1,是华东区ECS系统盘镜像CentOS 6.3 64bit的镜像ID。 
- cn-north-1(华北区):规格设置为c1.medium,表示1核|1G;镜像ID设置为42f34d95-a538-4d17-be48-e690b48c1643,是华北区ECS系统盘镜像CentOS 6.3 64bit的镜像ID。 
- 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: 云服务器VPC的ID 
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函数提取映射内容,堆栈创建成功后输出了虚拟机在华南区创建虚拟机的规格名称。

- 点赞
- 收藏
- 关注作者
 
             
           
评论(0)