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

Ansible遍历字典列表配置FortiOS BGP邻居问题求助

解决Ansible配置FortiOS BGP邻居时覆盖的问题

你的问题出在循环调用模块的方式:现在的写法会执行4次fortios_router_bgp模块,每次都给neighbor传一个单元素列表。FortiOS的这个模块在执行时会替换整个BGP配置中的邻居列表,所以每次执行都会覆盖之前的配置,最后只剩最后一次循环的邻居。

正确的做法是一次性构建完整的邻居列表,只调用一次模块,具体修改如下:

修改后的任务代码

- name: Configure BGP with all neighbors
  fortios_router_bgp:
    vdom: "FG-traffic"
    router_bgp:
      as: "{{ as }}"
      router_id: "{{ router_id }}"
      # 将公共参数与每个邻居的配置合并,生成完整的邻居列表
      neighbor: "{{ bgp_neighbors | map('combine', common_neighbor_params) | list }}"
  # 定义所有邻居共用的参数,集中管理更方便
  vars:
    common_neighbor_params:
      holdtime_timer: "{{ holdtime_timer }}"
      keep_alive_timer: "{{ keep_alive_timer }}"
  tags: bgp

原理说明

  • 使用map('combine', common_neighbor_params)过滤器,把bgp_neighbors里的每个邻居字典,和公共参数(holdtime_timer、keep_alive_timer)合并,生成包含所有字段的完整邻居配置。
  • 最后用list过滤器把结果转成列表,直接传给neighbor字段,模块一次调用就会配置全部4个邻居,不会出现覆盖问题。

额外提示

确保变量netid_bgp、as、router_id、holdtime_timer、keep_alive_timer都已正确定义,避免渲染错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:42:22