以前介绍了netbox的安装“Netbox 开源的基于python的网络CMDB”前端
今天介绍一下netbox中是如何使用napalm的。python
步骤:ios
1.建立region(地区)
2.建立site(站点,region>site)
3.建立location(好比在哪栋楼/哪层楼/哪一个房间等)
4.Manufacturers (设备厂家名字,好比思科/华为/华三等)
5.Device Types (每一个厂家等设备都有型号)
6.Platforms (设备软件平台,好比思科的ios/nxos/ios-xe等)
7.Device Roles (定义设备角色,好比access/core/aggregate/border等)
8.Devices (添加设备)
9.interfaces(在device-》add component中添加接口)
10.添加IP 关联设备接口
11.配置napalm
12.演示效果
13.改造netbox传递用户名密码给napalm的代码逻辑
好家伙,开始操做! api
1.建立region(地区)安全
2.建立site(站点,region>site)网络
3.建立location(好比在哪栋楼/哪层楼/哪一个房间等)ide
4.Manufacturers (设备厂家名字,好比思科/华为/华三等)函数
5.Device Types (每一个厂家等设备都有型号)学习
6.Platforms (设备软件平台,好比思科的ios/nxos/ios-xe等)插件
7.Device Roles (定义设备角色,好比access/core/aggregate/border等)
8.Devices (添加设备)
9.interfaces(在device-》add component中添加接口)
10.添加IP 关联设备接口
11.安装配置napalm
pip install napalm
在netbox里面配置设备登录的用户名密码(若是不是每一个设备的等了密码都同样的话,那么须要适配,后面我会介绍一种方式):
// netbox/netbox/configuration.py # Credentials that NetBox will uses to authenticate to devices when connecting via NAPALM. NAPALM_USERNAME = 'cisco' NAPALM_PASSWORD = 'cisco'
12.在设备界面能够看到以下3个按钮:
分别点击上面3个按钮:
说明napalm是正常工做的!!
1三、改造一下用户密码获取方式:
当前状况是所有设备都是从配置文件读取密码进行登陆的,有时候咱们的设备密码并非都彻底一致。
实际上对设备密码的适配在配置文件里面作会比较安全,由于前端的用户看不到。
我这里演示的是在platform里面填用户名密码和其余参数,先从platform里面取,若是没取到,再用取配置文件的用户名密码(就近原则):
修改以下代码/netbox/dcim/api/views.py 中的napalm函数
# 452行开始 username = device.platform.napalm_args.get('username', '') password = device.platform.napalm_args.get('password', '') optional_args = device.platform.napalm_args.get('napalm_args', {}) # 若是platform里面没有配置napalm的用户名和密码,那么从设备的配置文件里面获取 if not (username and password): username = settings.NAPALM_USERNAME password = settings.NAPALM_PASSWORD # 若是platform里面没有配置optonal_args,那么从设备的配置文件里面获取 if device.platform.napalm_args is None: # optional_args.update(device.platform.napalm_args) optional_args = settings.NAPALM_ARGS.copy()
在platform里面设置用户名和密码:
实际上在paltform里面作用户名密码获取也不是那么合适,但比全局通用一个帐号密码稍微灵活一点。
其实netbox提供了napalm的api,只要设备关联的paltform所对应的napalm驱动实现了运行命令的方法,其实还能够二次开发作不少事情。
今天就介绍到这里,后续可能会介绍一个拓扑插件。
也欢迎你们参与讨论,互相学习。