如何使用条件通过热量模板创建资源

问题描述

heat_template_version: 2017-02-24
......
......
......
conditions:
    port_security_enabled:
        equals:
            - { get_param: port_security_enabled }
            - "true"

resources:
    port:
        type: OS::Neutron::Port
        properties:
            admin_state_up: true
            network_id: { get_param: internal_net }
            port_security_enabled: { get_param: port_security_enabled }
            security_groups: { get_param: security_group }

@H_502_3@

我想创建一个条件,因此,如果我设置“ port_security_enabled = false”,则安全组将不适用于port.properties。如果我设置“ port_security_enabled = true”,则将应用安全组。

请帮助我

解决方法

这可能很好:

security_groups: {if: [port_security_enabled,[{get_resource: security_group}],[]]}
,

我找到了解决方法。

我创建了两个端口1,其中一个是安全组,另一个是没有安全组。


conditions:

    port_security_disable: {equals : [{get_param: port_security_enabled},"disabled"]}

resources:
    port1:
        type: OS::Neutron::Port
        properties:
            admin_state_up: true
            network_id: { get_param: internal_net }
            security_groups:
                - { get_param: security_group }
    port2:
        type: OS::Neutron::Port
        properties:
            admin_state_up: true
            network_id: { get_param: internal_net }
            port_security_enabled: false

    instance_floatingip:
        type: OS::Neutron::FloatingIP
        properties:
            floating_network_id: { get_param: public_network_id }
            port_id: {if: ["port_security_disable",{ get_resource: port2 },{ get_resource: port1 } ]}

    instance:
        properties:
            networks:
                - port: {if: ["port_security_disable",{ get_resource: port1 } ]}

我知道它越来越复杂。但我没有找到最简单的解决方案。