ansible jinja2 - if elseif - 使用相同的行
ansible jinja2 - if elseif - use the same lines
在这两种情况下 (if, elif),它都必须从“start-here”行开始。
both(if, elseif) 如何来自同一行 looped/started?
如果语句有多个端口,将使用相同的配置创建两个不同的配置。
elif 语句只有一个端口,将创建一个配置,使用相同的配置
{% for web in web_servers %}
{% if web.web_ports == 'multi-home' %}
{% for n in range(0, 2) %}
{% elif web.web_ports == 'single-home' %}
{% for n in range(0, 1) %}
*(start-here)*
-------------------------------------------
ROUTER_{{ n }}
-------------------------------------------
{% for rtr in web['router_'~n] %}
.
.
.
.
.
.
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
如何简化逻辑并使用变量来保存范围的上限?
例如:
{%- set max_range = 1 -%}
{%- if web.web_ports == 'multi-home' -%}
{%- set max_range = 2 -%}
{%- endif -%}
{%- for n in range(0, max_range) -%}
-------------------------------------------
ROUTER_{{ n }}
-------------------------------------------
{#- your other for can still be nested here #}
{% endfor %}
这将得到:
-
-------------------------------------------
ROUTER_0
-------------------------------------------
-------------------------------------------
ROUTER_1
-------------------------------------------
当 web.web_ports
等于 multi-home
-
-------------------------------------------
ROUTER_0
-------------------------------------------
当 web.web_ports
不等于 multi-home
(所以 single-home
,还有任何其他可能的值)
在这两种情况下 (if, elif),它都必须从“start-here”行开始。 both(if, elseif) 如何来自同一行 looped/started?
如果语句有多个端口,将使用相同的配置创建两个不同的配置。
elif 语句只有一个端口,将创建一个配置,使用相同的配置
{% for web in web_servers %} {% if web.web_ports == 'multi-home' %} {% for n in range(0, 2) %} {% elif web.web_ports == 'single-home' %} {% for n in range(0, 1) %} *(start-here)* ------------------------------------------- ROUTER_{{ n }} ------------------------------------------- {% for rtr in web['router_'~n] %} . . . . . . {% endfor %} {% endfor %} {% endfor %} {% endif %} {% endfor %}
如何简化逻辑并使用变量来保存范围的上限?
例如:
{%- set max_range = 1 -%}
{%- if web.web_ports == 'multi-home' -%}
{%- set max_range = 2 -%}
{%- endif -%}
{%- for n in range(0, max_range) -%}
-------------------------------------------
ROUTER_{{ n }}
-------------------------------------------
{#- your other for can still be nested here #}
{% endfor %}
这将得到:
-
当------------------------------------------- ROUTER_0 ------------------------------------------- ------------------------------------------- ROUTER_1 -------------------------------------------
web.web_ports
等于multi-home
-
当------------------------------------------- ROUTER_0 -------------------------------------------
web.web_ports
不等于multi-home
(所以single-home
,还有任何其他可能的值)