首页 > 解决方案 > ansible jinja2 - if elseif - 使用相同的行

问题描述

在这两种情况下(if,elif),它必须从“start-here”行开始。两者(if,elseif)如何从同一行循环/开始?

标签: ansiblejinja2

解决方案


简化逻辑并使用变量来保持范围的上限怎么样?

例如:

{%- 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,但也有任何其他可能的值)

推荐阅读