0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

容器化NPB + Ansible:自动化运维方案

星融元Asterfusion 2025-12-08 12:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

传统NPB配置方式的挑战

在传统网络流量监测场景中,分流器(TAP)或网络数据包代理(NPB)设备通常依赖Web界面进行手动配置。面对实际业务中成千上万的配置条目及周期性调整需求,传统手工运维模式显得力不从心:操作极其繁琐,每台设备需独立登录、逐条配置,耗时往往长达数小时甚至一整天;人工干预难以避免配置遗漏或错误,带来运维风险;整体效率低下,无法实现策略的批量同步与快速更新。即便部分NPB设备已支持集群内批量同步,但基于Web界面的“拖拽点选”式操作依然无法从根本上提升运维效率与可靠性,自动化转型已成为必然趋势。

NPB 2.0:架构革新与自动化赋能

星融元在NPB 2.0方案中实现了架构与运维的双重突破:在架构上摒弃了传统专用硬件,转为在交换机上以容器化方式部署NPB功能组件;在运维上引入Ansible自动化工具,通过调用SONiC CLI实现设备的批量、标准化配置管理。该方案适用于园区网及数据中心场景,能支持策略的快速部署、版本追溯与零差错运维。

什么是Ansible?

wKgZPGk2TNWAIoJBAAD3crix3Dc103.png

Ansible是一款由Red Hat维护的开源自动化运维工具,其核心特点是采用无代理(Agentless)架构,通过SSH或WinRM协议直接管理设备,无需安装客户端。它基于声明式模型,允许用户使用YAML编写Playbook来定义系统的目标状态,而非具体操作步骤。此外,Ansible具备良好的跨平台支持,可统一管理网络设备、云主机、容器集群等多种基础设施。如今,它已成为DevOps与云原生技术栈中的重要组成部分,有效助力企业实现运维自动化与标准化。

wKgZO2k2TOOAfRBMAAHLeHFN54k810.png

使用Ansible自动化配置NPB

现已开发并适配 Asterfusion AsterNOS Collection Ansible模块集,包括cliconf插件与asternos_command模块,支持通过Playbook直接调用SONiC设备命令行接口

运维人员根据实际需求使用上述的 CLI 模块编写 Playbook 任务并运行,即可快速完成 NPB 策略下发、ACL 更新、端口配置等批量操作,几秒钟内即可将规则同步到所有 NPB 设备(SONiC 设备),并在 Git 中追踪变更历史。

实施流程概要

1.在服务器上安装 Ansible

pip3 install ansible

我们所提供的demo文件结构如下

eric@mypc:~$ tree . ├── ansible.cfg ├── group_vars │ └── sonic.yml ├── host_vars │ └── sonic1.yml ├── inventory ├── library │ └── sonic_klish.py └── site.yml

2.在 ansible.cfg 中指定设备信息文件

[defaults] inventory = inventory #指定为'inventory'文件 host_key_checking = False retry_files_enabled = False gathering = explicit stdout_callback = yaml

3.在 inventory 文件中指定设备的登录信息

[sonic] sonic1 ansible_host=192.168.1.x ansible_user=x ansible_password=x

4.group_vars/sonic.yml 文件不需要改动

# group_vars/sonic.yml host: "{{ ansible_host }}" user: "{{ ansible_user }}" password: "{{ ansible_password }}"

5.host_vars/sonic1.yml 中编写要下发的配置

以下为两组示例的命令行配置

config_vlan_cmd: | configure vlan 3003 end exit config_acl_test_cmd: | configure access-list L3 test1 ingress priority 500000 rule 1 packet-action permit redirect-action ethernet 11 exit interface ethernet 11 acl test1 end exit

6、library/sonic_klish.py (不需要改动,用来调用设备的 CLI(代码略)

7、site.yml 设置用例

新增两个task分别调用config_acl_test_cmd和config_vlan_cmd

--- - hosts: sonic gather_facts: no tasks: - name: Push klish commands sonic_klish: commands: "{{ config_acl_test_cmd }}" host: "{{ host }}" user: "{{ user }}" password: "{{ password }}" delegate_to: localhost register: result - name: Push klish commands 1 sonic_klish: commands: "{{ config_vlan_cmd }}" host: "{{ host }}" user: "{{ user }}" password: "{{ password }}" delegate_to: localhost register: result - debug: var=result.stdout

8.执行用例

[root@localhost ansible]# ansible-playbook -v site.yml Using /home/ryan/ansible/ansible.cfg as config file

打印如下,则执行完毕:

PLAY [sonic] ********************* TASK [Push klish commands] **************** changed: [sonic1 -> localhost] => changed=true stdout: |- Warning: Permanently added '192.168.1.102' (RSA) to the list of known hosts. ...Entering cli view, please wait... stty: 'standard input': Inappropriate ioctl for device stty: 'standard input': Inappropriate ioctl for device sonic# configure sonic(config)# access-list L3 test1 ingress priority 500000 sonic(config-L3-acl-test1)# rule 1 packet-action permit redirect-action ethernet 13 sonic(config-L3-acl-test1)# exit[J sonic(config)# interface ethernet 13 sonic(config-if-13)# acl test1[J sonic(config-if-13)# end[J sonic# exit stdout_lines: TASK [debug] *********************** ok: [sonic1] => result.stdout: |- Warning: Permanently added '192.168.1.102' (RSA) to the list of known hosts. ...Entering cli view, please wait... stty: 'standard input': Inappropriate ioctl for device stty: 'standard input': Inappropriate ioctl for device sonic# configure sonic(config)# access-list L3 test1 ingress priority 500000 sonic(config-L3-acl-test1)# rule 1 packet-action permit redirect-action ethernet 13 sonic(config-L3-acl-test1)# exit[J sonic(config)# interface ethernet 13 sonic(config-if-13)# acl test1[J sonic(config-if-13)# end[J sonic# exit TASK [Push klish commands] ***************** changed: [sonic1 -> localhost] => changed=true stdout: |- Warning: Permanently added '192.168.1.102' (RSA) to the list of known hosts. ...Entering cli view, please wait... stty: 'standard input': Inappropriate ioctl for device stty: 'standard input': Inappropriate ioctl for device sonic# configure sonic(config)# vlan 3003 sonic(config-vlan-3003)# end[J sonic# exit stdout_lines: TASK [debug] ********************* ok: [sonic1] => result.stdout: |- Warning: Permanently added '192.168.1.102' (RSA) to the list of known hosts. ...Entering cli view, please wait... stty: 'standard input': Inappropriate ioctl for device stty: 'standard input': Inappropriate ioctl for device sonic# configure sonic(config)# vlan 3003 sonic(config-vlan-3003)# end[J sonic# exit PLAY RECAP ************************ sonic1 : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

执行效果

通过Ansible自动化配置,原本需手工操作数小时的千余条策略,现可在几秒内同步至全部设备。所有配置变更均可通过Git进行版本管理与审计回溯,不仅大幅降低了人为错误,更显著提升了网络策略的一致性与运维可靠性。

通过引入Ansible自动化运维体系,星融元NPB 2.0方案实现了从“手工配置”到“代码化运维”的转型。运维人员可将重复性操作转化为可版本化、可重复执行的自动化任务,显著提升网络运维的响应速度、准确性与标准化水平。

该方案特别适用于需要频繁调整监测策略、大规模部署NPB功能的现代网络环境,为企业构建高效、可靠的智能网络监测平台提供了坚实的技术支撑。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 自动化
    +关注

    关注

    30

    文章

    5887

    浏览量

    89269
  • 流量监测
    +关注

    关注

    0

    文章

    49

    浏览量

    7623
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NPB 2.0:网络可视告别“专用硬件”?

    传统的基于专用硬件的实现方案,例如使用TAP交换机/分流器等采集设备,其初期购置和维护成本显而易见,并且随着网络规模的扩大,采购和费用都将继续增长。NPB 2.0是基于 SONiC
    的头像 发表于 11-24 16:45 1197次阅读
    <b class='flag-5'>NPB</b> 2.0:网络可视<b class='flag-5'>化</b>告别“专用硬件”?

    自动化碾米设备远程监控管理系统方案

    。然而,设备分布广泛、运行状态难以实时掌握、故障维护效率低等问题仍制约着行业的进一步发展。因此此,实现自动化碾米设备的远程监控与管理,成为提升行业竞争力的必然选择。 面向自动化碾米
    的头像 发表于 10-11 10:57 269次阅读
    <b class='flag-5'>自动化</b>碾米设备远程监控<b class='flag-5'>运</b><b class='flag-5'>维</b>管理系统<b class='flag-5'>方案</b>

    SaltStack自动化部署实践

    今天,我想和大家分享一个真实的案例:我们团队如何通过SaltStack将原本需要3天的部署时间缩短到30分钟,并且实现了零失误率。这不是魔法,而是自动化的力量。
    的头像 发表于 09-17 16:18 365次阅读

    Python脚本实现工作自动化案例

    还在为重复性工作而烦恼?每天被各种告警、监控、部署搞得焦头烂额?作为一名有10年经验的老司机,今天分享5个超实用的Python自动化
    的头像 发表于 08-27 14:46 803次阅读

    使用Ansible实现大规模集群自动化部署

    当你面对1000+服务器需要部署时,你还在一台台手工操作吗?本文将揭秘如何用Ansible实现大规模集群的自动化部署,让效率提升10倍!
    的头像 发表于 08-27 14:41 526次阅读

    利用Ansible自动化部署Linux服务器

    作为一名在运一线摸爬滚打多年的工程师,我见过太多因为手工配置导致的生产事故。今天,我将毫无保留地分享我在大规模Linux服务器自动化管理中积累的实战经验,让你也能轻松驾驭数百台服务器的配置管理。
    的头像 发表于 08-06 17:59 1039次阅读

    Ansible Playbook自动化部署Nginx集群指南

    面对日益猖獗的DDoS攻击,手动部署防护已经out了!今天教你用Ansible一键部署具备DDoS防御能力的Nginx集群,让攻击者哭着回家!
    的头像 发表于 08-06 17:54 644次阅读

    Ansible代码上线项目实战案例

    在DevOps浪潮中,自动化部署已经成为每个工程师的必备技能。今天我将分享一个完整的Ansible代码上线项目实战案例,让你的部署效率提升10倍!
    的头像 发表于 07-24 14:03 369次阅读

    Helm实现容器高效包管理与应用部署

    在当今快速演变的云原生生态系统中,容器技术已成为工程师不可或缺的核心能力。
    的头像 发表于 07-14 11:16 602次阅读

    自动化工具Terraform和Ansible的区别

    、可重复的部署要求。本文将深入探讨 Terraform 和 Ansible 这两大利器的核心差异,明确它们在配置管理和资源编排领域的分工边界,为
    的头像 发表于 07-09 09:59 955次阅读

    告别人工检测!casaim自动化激光扫描

    casaim自动化激光扫描技术通过集成传感器、智能算法和自动化控制系统,解决了传统人工检测的诸多问题。
    的头像 发表于 03-12 13:20 548次阅读
    告别人工检测!casaim<b class='flag-5'>自动化</b>三<b class='flag-5'>维</b>激光扫描

    casaim自动化激光扫描

    CASAIM自动化激光扫描技术通过非接触式高精度数据采集与智能分析系统,为工业检测提供全流程数字化解决方案
    的头像 发表于 02-27 10:32 657次阅读

    IT自动化工具Ansible基础入门

    Ansible是帮助人员实现自动化的最重要的工具之一。
    的头像 发表于 02-07 10:00 1324次阅读
    IT<b class='flag-5'>自动化</b>工具<b class='flag-5'>Ansible</b>基础入门

    罗克韦尔自动化推出DataReady智能机器

    作为工业自动化、信息和数字转型领域的全球领先企业之一, 罗克韦尔自动化宣布旗下 FactoryTalk Optix 产品组合再添新兵 -DataReady 智能机器。此次更新使得情
    的头像 发表于 12-31 14:42 1042次阅读

    自动化水厂监控系统

    、保障水质安全、降低成本。 系统构成 自动化水厂监控系统通常由硬件设备和软件系统两部分组成。硬件设备包括传感器、控制器、执行机构、网络通信设备等,负责实时采集水厂运行数据,执行控制指令,以及实现数据的远
    的头像 发表于 12-16 16:17 1010次阅读