以前介紹了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驅動實現了運行命令的方法,其實還能夠二次開發作不少事情。
今天就介紹到這裏,後續可能會介紹一個拓撲插件。
也歡迎你們參與討論,互相學習。