#if-statement #openstack #openstack-heat
#if-statement #openstack #openstack-heat
Вопрос:
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 }
Я хочу создать условие, поэтому, если я установлю «port_security_enabled = false», группа безопасности не будет применяться в port.properties . Если я установлю «port_security_enabled = true», тогда будет применена группа безопасности.
Пожалуйста, помогите мне
Ответ №1:
Это может работать нормально:
security_groups: {if: [port_security_enabled, [{get_resource: security_group}], []]}
Комментарии:
1. Я уже пробовал это, но есть проблема, если условие равно false, тогда значение «группа безопасности» будет пустым. Затем этот стек показывает ошибку
Ответ №2:
Я нашел решение.
Я создал два порта, 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: port2 }, { get_resource: port1 } ]}
Я знаю, что это становится сложным. но я не нашел ни одного простого решения.