AOS编排语言系列教程(十四):条件conditions,控制元素是否创建部署
我们已经介绍了模板中的inputs、outputs、node_templates和mappings,接下来看下condition部分。
condition部分是可选项,用于定义条件。例如在node_templates中创建了很多资源,实际部署时可能有一些资源不需要部署,通过条件可以控制定义在node_templates中的元素是否需要创建部署。
在inputs、conditions、node_templates等多个字段中定义了引用关系来控制虚拟机myecs是否部署:
tosca_definitions_version: huaweicloud_tosca_version_1_0
conditions:
condition_vm_deploy:
cond_eq:
- get_input: vm_deploy
- true
inputs:
image:
description: 云服务器使用的镜像ID
type: HuaweiCloud.ECS.Image.Id
instance:
default: 1
description: 创建云服务器数量
subnet:
description: 云服务器子网ID
vm_deploy:
default: true
type: boolean
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:
vm:
condition: condition_vm_deploy
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
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
上述例子中使用了cond_eq条件函数来判断输入参数与预期是否一致,条件函数通常用于定义元素是否需要部署,包括cond_eq、cond_not、cond_and、cond_or和cond_if。除了cond_if函数外,其他条件函数只允许在conditions段内定义使用。
当输入参数vm_deploy为true时将部署虚拟机vm和myecs:
当输入参数vm_deploy为false时将不部署vm,只部署myecs:
- 点赞
- 收藏
- 关注作者
评论(0)