Puppet是開源的配置管理工具。其原理機製為:用戶使用Puppet語言將需要對設備進行的配置寫成腳本,保存到服務器中,再通過服務器把這些配置腳本下發到各網絡設備,實現對網絡設備的集中配置管理。
圖1-1 Puppet網絡架構
如圖1-1所示,Puppet采用“服務器端/客戶端”網絡架構,服務器端稱為Puppet master,客戶端稱為Puppet agent,Puppet master與Puppet agent之間使用通過SSL加密的連接進行通信。
Puppet master用於對Puppet agent進行集中管理,其主要功能如下:
· 以守護進程的方式運行,監聽Puppet agent的請求。
· 建立連接時,對Puppet agent進行認證。
· 集中保存配置腳本,並根據用戶要求將配置腳本下發到Puppet agent。
Puppet網絡中,由Puppet master集中管理的設備稱為Puppet agent。Puppet agent的工作過程如下:
(1) Puppet agent啟動Puppet進程,並向Puppet master發起認證請求。
(2) Puppet agent周期性檢查認證是否通過。如果認證通過,則與Puppet master建立連接。
(3) Puppet agent與Puppet master建立連接後,Puppet agent周期性向Puppet master發送請求獲取新配置。
(4) Puppet agent獲取到新配置,並將新配置與設備當前運行的配置進行對比,如果設備當前運行配置與獲取的配置存在差異,則運行差異配置。
(5) Puppet agent完成配置後,向Puppet master反饋配置運行結果。
H3C設備作為Puppet agent運行,支持版本3.7.3。
Puppet使用Puppet語言定義配置項,各配置項的集合即為一個配置腳本。在Puppet中,配置項叫做資源。
Puppet劃分了多個不同類型的資源,每個類型的資源都由名稱和多個屬性組成,每個屬性對應功能的一個配置,屬性值即為該配置應達到的狀態。用戶在對Puppet資源進行配置時,通過為不同屬性賦值,從而指定設備應該達到的狀態,而不需要關心如何達到這些狀態。
H3C定義了一係列Puppet資源,Puppet master可以使用這些資源對設備進行配置。