Netbox 網絡CMDB結合NAPALM

以前介紹了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(地區)安全

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
2.建立site(站點,region>site)網絡

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
3.建立location(好比在哪棟樓/哪層樓/哪一個房間等)ide

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
4.Manufacturers (設備廠家名字,好比思科/華爲/華三等)函數

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
5.Device Types (每一個廠家等設備都有型號)學習

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
6.Platforms (設備軟件平臺,好比思科的ios/nxos/ios-xe等)插件

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
7.Device Roles (定義設備角色,好比access/core/aggregate/border等)

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
8.Devices (添加設備)

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=
9.interfaces(在device-》add component中添加接口)

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

10.添加IP 關聯設備接口

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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個按鈕:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

 

分別點擊上面3個按鈕:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

說明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裏面設置用戶名和密碼:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

實際上在paltform裏面作用戶名密碼獲取也不是那麼合適,但比全局通用一個帳號密碼稍微靈活一點。

 

其實netbox提供了napalm的api,只要設備關聯的paltform所對應的napalm驅動實現了運行命令的方法,其實還能夠二次開發作不少事情。

 

今天就介紹到這裏,後續可能會介紹一個拓撲插件。

也歡迎你們參與討論,互相學習。

相關文章
相關標籤/搜索