以ZAM技術(shù)為例,首先要在運維端搭建統(tǒng)一的DHCP服務(wù)器和TFTP服務(wù)器(可以是同一臺服務(wù)器),基于架構(gòu)標準化設(shè)計和項目信息提前生成每臺設(shè)備的完整配置文件以及版本文件,同時這些文件的文件名需要與設(shè)備的SN關(guān)聯(lián)起來,確保每個配置文件可以對應(yīng)唯一一臺具體的物理設(shè)備。
圖2 零配置上線方案架構(gòu)
交換機加電起機后會主動發(fā)起DHCP請求,通過Option拿到TFTP服務(wù)器的地址以及腳本名稱。通過TFTP的方式下載到腳本文件后,解析并執(zhí)行。然后自動進行版本的升級以及配置文件的加載,重啟后完成設(shè)備開局。主要流程如下:
圖3 零配置上線流程
細節(jié)可以分拆成幾個階段來理解:
1. DHCP&TFTP獲取階段
1) 設(shè)備加電后,首先判斷自身是否存在配置文件,如果不存在則進入ZAM模式;如果存在則正常加載現(xiàn)有配置文件啟動;
2) 進入ZAM模式后,會先嘗試從MGMT口上發(fā)起DHCP請求,無應(yīng)答后會從業(yè)務(wù)口上廣播該請求報文。DHCP Server在回應(yīng)報文中通過Option66(或者150)、67選項,將TFTP Server的IP以及Python腳本名稱同步給設(shè)備;
圖4 典型的DHCP配置
3) 交換機設(shè)備(需要支持Python的運行環(huán)境)進行Python腳本的下載。
2. 自動化執(zhí)行階段
1) 初始化: 首先要進行初始化,與此同時要清空之前運行過的本地文件,目的是為了避免那些通過錯誤邏輯模塊到達該處時文件錯亂的情況,因此需要執(zhí)行初始化操作;
2) 上傳SN: 初始化完成后需要上傳設(shè)備自身的SN到指定的目錄下,目的是提示TFTP Server該設(shè)備已經(jīng)開始啟動。即上傳 [sn]. ZAM到 /ZAM_STARTUP/, 若上傳失敗則寫"0"到/etc/zam.txt (通告zam執(zhí)行失?。?,退出;
3) 配置參數(shù)文件下載: 上傳SN之后,會基于SN去下載對應(yīng)的配置參數(shù)文件(.PARAM格式),下載路徑在代碼中已經(jīng)寫好,若下載失敗則跳到錯誤處理;
4) 配置參數(shù)文件解析: 下載成功后解析該文件,判斷是否需要升級版本,若解析失敗則跳到錯誤處理;
5) 配置文件下載: 通常情況下,腳本中會默認寫好配置文件的下載路徑,設(shè)備會基于SN到該路徑下載配置文件 [sn].CFG, 若下載失敗跳到錯誤處理;
6) 版本文件下載: 如果配置參數(shù)文件中存在bin文件的標識,則到指定的路徑去進行bin文件的下載,若下載失敗則跳到錯誤處理;
7) 版本文件升級: 如果存在bin的文件,則進行升級bin文件,若升級失敗則跳到錯誤處理;
8) 配置文件重命名: 執(zhí)行代碼做配置文件的重命名,更改成config.txt的格式后重啟(不同廠家配置文件命名不同,這里以銳捷為例);