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

Ansible如何从ansible_net_config提取ip nbar配置行并设置为新变量

解决方案

使用regex_search过滤器即可实现需求,json_query适用于处理JSON结构化数据,而ansible_net_config是多行纯文本格式,并不适配该场景。

你之前的写法仅能匹配到ip nbar protocol-pack这个固定前缀,无法抓取整行内容,调整正则规则并开启多行匹配模式即可:

  • 正则规则改为^ip nbar protocol-pack.*$:^匹配行首位置,.*匹配前缀之后到行尾的所有内容,$匹配行尾位置
  • 给regex_search增加multiline=True参数,让^和$可以匹配每一行的首尾,而不是整个配置字符串的全局首尾

修改后的完整Playbook如下:

---
- name: Cisco NBAR Test
  connection: ansible.netcommon.network_cli
  hosts: all
  tasks:
    - name: collect facts
      cisco.ios.ios_facts:
        gather_subset:
        - config
    
    - name: set vars
      set_fact:
        config: "{{ ansible_net_config | regex_search('^ip nbar protocol-pack.*$', multiline=True) }}"

    - name: show output
      debug:
        var: config

如果部分设备的配置行前缀前可能存在前导空格,可以把正则调整为^\\s*ip nbar protocol-pack.*$适配该场景;如果设备存在多条匹配行,需要取第一条的话,在过滤器后追加| first即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:03