AOS编排语言系列教程(十四):条件conditions,控制元素是否创建部署

举报
tsjsdbd 发表于 2018/10/26 14:30:26 2018/10/26
【摘要】 condition部分是可选项,用于定义条件。例如在node_templates中创建了很多资源,实际部署时可能有一些资源不需要部署,通过条件可以控制定义在node_templates中的元素是否需要创建部署。

我们已经介绍了模板中的inputsoutputsnode_templatesmappings,接下来看下condition部分。

condition部分是可选项,用于定义条件。例如在node_templates中创建了很多资源,实际部署时可能有一些资源不需要部署,通过条件可以控制定义在node_templates中的元素是否需要创建部署。

inputsconditionsnode_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: 云服务器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:
  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_eqcond_notcond_andcond_orcond_if。除了cond_if函数外,其他条件函数只允许在conditions段内定义使用。

当输入参数vm_deploytrue时将部署虚拟机vmmyecs

14部署vm.png

当输入参数vm_deployfalse时将不部署vm,只部署myecs

14不部署vm.png

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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