puppet簡(jiǎn)介
puppet是一種基于ruby語(yǔ)言開發(fā)的Lnux、Unix、windows平臺(tái)的集中配置管理系統(tǒng)。它使用自有的puppet描述語(yǔ)言,可管理配置文件file、用戶user、cron任務(wù)、軟件包、系統(tǒng)服務(wù)等系統(tǒng)實(shí)體。
puppet依賴于C/S(客戶端/服務(wù)器)的部署架構(gòu)。它需要在puppet服務(wù)器上安裝puppet-server軟件包(以下簡(jiǎn)稱master),在需要管理的目標(biāo)主機(jī)上安裝puppet客戶端軟件(以下簡(jiǎn)稱client)。
為了保證安全,master和client之間是基于SSL和證書的,只有經(jīng)過(guò)master證書認(rèn)證的client才可以與master通信。
puppet工作原理
- 1、客戶端puppet調(diào)用fast探測(cè)出主機(jī)的一些變量,如主機(jī)名、內(nèi)存大小、IP地址等。Puppet把這些信息使用SSL連接發(fā)送給服務(wù)器端;
- 2、服務(wù)器端的puppetmaster通過(guò)fast工具分析檢測(cè)客戶端的主機(jī)名,然后找到項(xiàng)目的主配置文件manifest里面對(duì)應(yīng)的node配置,并對(duì)該部分內(nèi)容進(jìn)行解析,fast發(fā)送過(guò)來(lái)的信息可以作為變量處理,node牽扯到的代碼才被解析,沒(méi)牽扯到的不解析,解析分為語(yǔ)法檢查,如果語(yǔ)法沒(méi)錯(cuò),繼續(xù)解析,解析結(jié)果生成一個(gè)結(jié)果‘偽代碼’,然后把‘偽代碼’發(fā)給客戶端;
- 3、客戶端收到‘偽代碼’并且執(zhí)行,客戶端把執(zhí)行結(jié)果發(fā)給服務(wù)器;
- 4、服務(wù)器端把客戶端的執(zhí)行結(jié)果寫入日志。
實(shí)驗(yàn):
使用四臺(tái)服務(wù)器模擬搭建Puppet環(huán)境,具體拓?fù)鋱D如下:
1.安裝NTP Server
由于Puppet需要使用SSL證書,依賴時(shí)間同步,所有需要搭建NTP服務(wù)器。
(1)關(guān)閉所有服務(wù)器的防火墻和安全性策略
(2)yum安裝NTP并修改配置文件
vi /etc/ntp.conf server fudge
(3)啟動(dòng)ntp服務(wù)
chkconfig ntpd
(4)查看同步狀態(tài)`
2.安裝Puppet Master
(1)規(guī)劃主機(jī)名
/etc/hostname master.test.cn vi /etc/hosts master.test.cn client1.test.cn
然后重啟,將安全性策略再關(guān)一下
(2)搭建NTP客戶端服務(wù)
服務(wù)
(3)安裝puppet控制端
yum install -y puppet-server
(4)啟動(dòng)Puppet主程序
3.安裝Puppet client(client1 client2配置一樣)
(1)規(guī)劃主機(jī)名
/etc/hostname client1.test.cn vi /etc/hosts master.test.cn client1.test.cn
然后重啟,將安全性策略再關(guān)一下
(2)搭建NTP客戶端服務(wù)
服務(wù)
(3)安裝puppet控制端
yum install -y puppet
(4)編輯puppet配置文件
/etc/puppet/puppet.conf [main] server = master.test.cn ......
(5)client端申請(qǐng)證書
執(zhí)行完會(huì)有如下提示:
client2.test.cn ca csr_attributes file loading from /etc/puppet/csr_attributes.yaml client2.test.cn
等待一會(huì)兒按ctrl+c組合鍵結(jié)束
4.回到Puppet Master端查看申請(qǐng)信息
(1)查看申請(qǐng)證書的客戶端
(2)將未申請(qǐng)的客戶端進(jìn)行授權(quán)
(3)通過(guò)目錄查看已經(jīng)申請(qǐng)注冊(cè)的客戶端
5.批量修改客戶端ssh端口
master端配置:
(1)創(chuàng)建ssh模塊,模塊下面有3個(gè)文件:manifests、templates和files
(2)創(chuàng)建模塊配置文件install.pp
package{: => present, } }
(3)創(chuàng)建模塊配置文件config.pp
file { owner => group => mode => source => notify => Class[ } }
(4)創(chuàng)建模塊配置文件service.pp
service {: hasstatus=> hasrestart=> enable=> } }
(5)創(chuàng)建模塊主配置文件init.pp
{ }
此時(shí)/etc/puppet/modules/ssh/manifests目錄下有四個(gè)文件:
(6)建立服務(wù)端ssh統(tǒng)一維護(hù)文件
將服務(wù)端ssh配置文件sshd_config復(fù)制到模塊默認(rèn)路徑
chown -R puppet /etc/puppet/modules/ssh/files/ssh/sshd_config
(7)創(chuàng)建測(cè)試節(jié)點(diǎn)配置文件,并將ssh加載進(jìn)去
/etc/puppet/manifests/nodes/ssh.pp node { ssh } node { ssh }
(8)將測(cè)試節(jié)點(diǎn)載入puppet,創(chuàng)建站點(diǎn)文件site.pp
/
(9)修改服務(wù)端維護(hù)的sshd_cofig配置文件
Port
(10)重新啟動(dòng)puppet
下面就是介紹客戶端怎么獲取到服務(wù)器端的資源的方式:
(1)一般在小規(guī)模自動(dòng)化集群中,客戶端主動(dòng)拉取
在客戶端查看/etc/ssh/sshd_config的內(nèi)容
查看服務(wù)器ssh服務(wù)是否重啟,端口是否生效
(2)當(dāng)大規(guī)模部署時(shí),采用服務(wù)器推送
client端(192.168.26.133)為例:
1)修改配置文件
listen = true
allow *
2)啟動(dòng)puppet客戶端
在客戶端查看/etc/ssh/sshd_config的端口內(nèi)容
查看服務(wù)器ssh服務(wù)是否重啟,端口是否生效
master端:
3)修改服務(wù)端維護(hù)的sshd_cofig配置文件
Port
4)開始往客戶端推送
在客戶端查看/etc/ssh/sshd_config的內(nèi)容
在客戶端查看ssh服務(wù)是否重啟,端口是否生效