07-NetBox进阶指南 4.0:NAPALM 插件安装与华为驱动适配
- 这篇文章解释为什么在 NetBox 里接入 NAPALM,不是为了做监控,而是为了补齐“现状数据”的取数能力。 - 重点内容包括插件安装、依赖关系、华为 VRP 驱动适配,以及 Source of Truth 与实时取数之间的职责边界。 - 它对应系列里的“能力扩展”阶段,适合在接口。

摘要
- 这篇文章解释为什么在 NetBox 里接入 NAPALM,不是为了做监控,而是为了补齐“现状数据”的取数能力。
- 重点内容包括插件安装、依赖关系、华为 VRP 驱动适配,以及 Source of Truth 与实时取数之间的职责边界。
- 它对应系列里的“能力扩展”阶段,适合在接口与拓扑打通后继续阅读。
一、背景:从“真相源”到“研判能力扩展”
在统一运维平台设计中:
NetBox = 唯一真相源(Source of Truth)
用于承载:
- 网络资产
- 拓扑关系
- 接口信息
- 配置基线
1.1 引入 NAPALM 的目的
NAPALM 并不是监控工具,而是:
自动化研判阶段的“按需取数能力”
1.2 解决的三类问题
① 环境类研判
- CPU / 内存 / 温度 / 电源
- 用于快速确认设备健康状态
② 配置类研判
- 获取运行配置
- 与 NetBox 历史配置做差异分析
③ 状态数据补充
- Netmiko → 持续采集
- NAPALM → 实时查询
1.3 职责划分
NetBox:应该是什么
NAPALM:现在是什么
自动化引擎:是否有问题
二、整体架构
适配链路
2.1 架构分层
① 控制层
- NetBox Web UI
- Plugin 页面
② 自动化抽象层
- NetBox NAPALM 插件
- napalm-huawei-vrp 驱动
③ 设备层
- 华为交换机(S5735 / S6730 / S7706)
- 无线控制器(AC)
2.2 调用链路
NetBox UI
↓
NAPALM Plugin
↓
napalm-huawei-vrp
↓
SSH
↓
设备
↓
数据解析
↓
UI展示
三、环境准备
3.1 网络要求
- NetBox 可访问设备 TCP 22
- 无跳板或已配置
3.2 建议配置
language-mode english
避免解析失败
3.3 软件版本
- NetBox:4.4.7
- Python:NetBox venv
- 系统:Linux
四、NAPALM 插件规范化安装
重点:避免插件覆盖问题
4.1 进入虚拟环境
source /opt/netbox/venv/bin/activate
pip list
4.2 维护 local_requirements.txt(关键)
sudo nano /opt/netbox/local_requirements.txt
示例:
netbox-napalm-plugin
napalm-huawei-vrp
netbox-topology-views
netboxlabs-diode-netbox-plugin
4.3 安装插件
pip install -r /opt/netbox/local_requirements.txt
4.4 配置 NetBox
PLUGINS = [
"netbox_topology_views",
"netbox_diode_plugin",
"netbox_napalm_plugin",
]
PLUGINS_CONFIG = {
'netbox_napalm_plugin': {
'NAPALM_USERNAME': 'admin',
'NAPALM_PASSWORD': 'your_password',
'NAPALM_TIMEOUT': 30,
'NAPALM_ARGS': {}
}
}
4.5 初始化
python3 manage.py migrate
python3 manage.py collectstatic --no-input
sudo systemctl restart netbox netbox-rq
五、华为驱动深度适配
官方驱动无法完全适配华为多型号设备,需要修改源码
5.1 驱动路径
cd /opt/netbox/venv/lib/python3.10/site-packages/napalm_huawei_vrp/
cp huawei_vrp.py huawei_vrp.py.bak
5.2 内存利用率修正
utilization = round((used_kb / total_kb) * 100, 1)
environment['memory'] = {
"available_ram": 100,
"used_ram": utilization
}
5.3 无线 AC 兼容
try:
output = self._send_command('display environment')
if "Error" in output:
output = self._send_command('display health')
except:
output = ""
5.4 LLDP 邻居名称完整显示
command = 'display lldp neighbor'
5.5 重启服务
sudo systemctl restart netbox
六、功能验证
6.1 平台绑定
路径:
Plugins → Napalm → Platform Config
设置:
Huawei VRP → huawei_vrp
6.2 AC 参数优化
{"global_delay_factor": 2}
6.3 验证项
- CPU / 内存 / 温度
- Running Config
- LLDP 邻居
七、运维与升级建议
7.1 驱动管理
- 升级会覆盖修改
- 建议使用:
patch / Git 分支管理
7.2 日志排查
sudo journalctl -u netbox -f
八、总结:能力边界明确
8.1 角色定位
NetBox:真相源
NAPALM:实时数据补充
Netmiko / SNMP:持续采集
8.2 核心价值
- 提升研判准确性
- 提供执行前校验
- 增强自动化安全
8.3 典型应用场景
- 日志驱动自动化研判
- 配置差异检测
- 自动化执行前验证
九、结论
NAPALM 不是中心能力,而是围绕 NetBox 的“受控扩展能力”。
只有在:
NetBox 数据可信
的前提下:
自动化研判与执行才具备安全性