一、Puppet基礎(chǔ)原理
Puppet是一款使用GPLV2X協(xié)議授權(quán)的開源管理配置工具,puppet是用ruby編寫的,因此puppet的語(yǔ)法也和ruby類似,都是很簡(jiǎn)單的面對(duì)對(duì)象的高級(jí)語(yǔ)言。它既可以通過(guò)客戶端—服務(wù)器的方式運(yùn)行,也可以獨(dú)立運(yùn)行。puppet可以為系統(tǒng)管理員提供方便,快捷的系統(tǒng)自動(dòng)化管理。
二、puppet工作流程
客戶端 puppet-client 向 puppet-master 發(fā)起認(rèn)證請(qǐng)求,或使用帶簽名的證書。
puppet-master 告訴 puppet-client 是合法的。
puppet-client 調(diào)用 facter, Facter 探測(cè)出主機(jī)的一些變量, 例如主機(jī)名、 內(nèi)存大小、 IP 地址等,puppet-client 將這些信息通過(guò) SSL 連接發(fā)送到服務(wù)器端。
puppet-master 服務(wù)器端檢測(cè)客戶端的主機(jī)名,然后找到 manifest 對(duì)應(yīng)的 node 配置,并對(duì)該部分內(nèi)容進(jìn)行解析。facter 送過(guò)來(lái)的信息可以作為變量處理,node 牽涉到的代碼才解析,其他沒牽涉的代碼不解析。解析分為幾個(gè)階段,首先是語(yǔ)法檢查,如果語(yǔ)法錯(cuò)誤就報(bào)錯(cuò);如果語(yǔ)法沒錯(cuò),就繼續(xù)解析,解析的結(jié)果生成一個(gè)中間的“偽代碼”(catelog),然后把偽代碼發(fā)給客戶端。
puppet-client 端接收到“偽代碼”,并且執(zhí)行。
puppet-client 端在執(zhí)行時(shí)判斷有沒有 file 文件,如果有,則向 fileserver 發(fā)起請(qǐng)求。
puppet-client 端判斷有沒有配置 report,如果已配置,則把執(zhí)行結(jié)果發(fā)送給服務(wù)器。
puppet-server 端把 puppet-client 端的執(zhí)行結(jié)果寫入日志,并發(fā)送給報(bào)告系統(tǒng)。