You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jinja For Loop重复输出问题求助:基于YAML生成网络配置

问题分析与解决

问题根源

你当前的Jinja模板用for循环遍历underlay[inventory_hostname]['MLAG'],但这个字段的值是字符串"Odd"。在Jinja中,遍历字符串会逐个迭代它的每个字符,"Odd"包含3个字符('O'、'd'、'd'),所以循环执行了3次。每次迭代的字符都不等于完整的"Odd",因此每次都输出else分支的内容,导致重复3行。

修复方案

不需要使用for循环,直接判断MLAG字段的取值即可:

{% if underlay[inventory_hostname]['MLAG'] == 'Odd' -%}   
   neighbor 192.168.255.1 peer group LEAF_Peer
{%- else %}
   neighbor 192.168.255.2 peer group LEAF_Peer
{% endif %}

如果想让代码更清晰,也可以先把取值存为变量:

{% set mlag_type = underlay[inventory_hostname]['MLAG'] -%}
{% if mlag_type == 'Odd' -%}   
   neighbor 192.168.255.1 peer group LEAF_Peer
{%- else %}
   neighbor 192.168.255.2 peer group LEAF_Peer
{% endif %}

这样只会根据MLAG的实际取值生成单条配置语句,完全符合你的预期。

验证效果

  • 当MLAG值为"Odd"时,输出:
    neighbor 192.168.255.1 peer group LEAF_Peer
    
  • 当MLAG值为"Even"时,输出:
    neighbor 192.168.255.2 peer group LEAF_Peer
    

内容的提问来源于stack exchange,提问作者3xiste

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:25:28