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)