環(huán)境說(shuō)明:
192.168.154.137 master.localdomain #Puppet Server
192.168.154.138 agent1.localdomain #Puppet Agent
這里的機(jī)器名稱不要有下劃線等特殊符合,否則后面會(huì)報(bào)“the scheme puppet does not accept registry part”這樣的錯(cuò)誤信息托酸。
centos的官方軟件庫(kù)里面不包含puppet包藐石,但是在epel項(xiàng)目里面有包含puppet包拐纱。epel 是一個(gè)對(duì)rhel軟件倉(cāng)庫(kù)的擴(kuò)展嫂易,把一些有用的婆誓,但是rhel庫(kù)沒(méi)包含的軟件收集在一起做成的一個(gè)軟件倉(cāng)庫(kù)扩淀。
$yum? install?? epel-release
1. 安裝Puppet Server
$ hostnamectl? set-hostname? master.localdomain? ? ? ? #設(shè)置機(jī)器名稱
$ systemctl? reboot? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #重啟
$cat /etc/hosts
192.168.154.137? master.localdomain
192.168.154.138? agent1.localdomain
$yum install? puppet-server? ? ? ? ? ? ? ? ? ? ? ? ? ? #安裝Puppet Server
#關(guān)閉防火墻
systemctl disable firewalld
yum remove firewalld -y
2. 安裝Puppet Agent
$ hostnamectl set-hostname? agent1.localdomain? ? ? ? #設(shè)置機(jī)器名稱
$ systemctl reboot? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #重啟
$cat? /etc/hosts
192.168.154.137? master.localdomain
$yum install? puppet? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #安裝Puppet Agent
3. 測(cè)試Puppet
創(chuàng)建測(cè)試文件site.pp(Server端):
$cat??? /etc/puppet/manifests/site.pp
node default {
???? file{? "/tmp/helloworld.txt":content=>"Hello World!",}
}
啟動(dòng)server计露,以no-daemonize方式著榴,這樣可以在控制臺(tái)看到操作信息(Server端):
$ puppet master --no-daemonize --debug
... ...
Notice: Starting Puppet master version3.6.2#啟動(dòng)成功添履,會(huì)看到這樣的信息
編輯客戶端puppet.conf,增加server配置項(xiàng)(Agent端):
$cat/etc/puppet/puppet.conf
[agent]
... ...
#加入server? master
server= master.localdomain
啟動(dòng)agent(Agent端脑又,以root用戶):
$ puppet agent --test
Info: Creating a new SSL keyforagent1.localdomain
Info: Caching certificateforca
Info: csr_attributesfileloading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate requestforagent1.localdomain
Info: Certificate Request fingerprint (SHA256): 1D:08:61:3B:1F:43:8C:B5:81:83:0F:FF:CC:4A:4F:8E:BA:B4:5F:7C:94:77:15:72:A2:0C:C0:44:D9:1D:16:9E
Info: Caching certificateforca
Exiting; no certificate found and waitforcert is disabled
啟動(dòng)后暮胧,agent向server申請(qǐng)證書锐借,因?yàn)樽C書還沒(méi)有被server審核,所以目前通信是不成功的往衷。
回到server钞翔,通過(guò)puppet cert查詢證書:
$ puppet cert list --all
"agent1.localdomain"(SHA256) 1D:08:61:3B:1F:43:8C:B5:81:83:0F:FF:CC:4A:4F:8E:BA:B4
+"master.localdomain"(SHA256)47:A1:12:28:22:05:75:A5:E5:92:2B:F6:53:05:A8:D6:1F:9B
證書列表中有cs_agnet1的申請(qǐng),目前是未審核狀態(tài)(最前面沒(méi)有+)席舍。審核證書:
$ puppet cert sign agent1.localdomain
$ puppet cert list --all
+"agent1.localdomain"(SHA256)39:7F:59:A8:3C:B8:EF:B9:E2:AD:1D:5C:D7:66:B6:02:CF:70
+"master.localdomain"(SHA256)47:A1:12:28:22:05:75:A5:E5:92:2B:F6:53:05:A8:D6:1F:9B:
再次啟動(dòng)agent:
# puppet agent --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalogforagent1.localdomain
Info: Applying configuration version'1479087051'Notice:/Stage[main]/Main/Node[default]/File[/tmp/helloworld.txt]/ensure: defined content as'{md5}ed076287532e86365e841e92bfc50d8c'Notice: Finished catalog runin0.02seconds
這時(shí)候布轿,查看/tmp/helloworld.txt,該文件就自動(dòng)同步了来颤。
在證書申請(qǐng)過(guò)程中汰扭,如果有問(wèn)題,可以刪除證書重新申請(qǐng)福铅,一般都能解決問(wèn)題东且。
Agent:
$rm-rf /var/lib/puppet? ? #刪除緩存文件
Server:
$ puppet cert clean agent1.localdomain
Q1. 服務(wù)端找不到證書?
在測(cè)試時(shí),先啟動(dòng)Server本讥,再通過(guò)Agent測(cè)試珊泳,回到Server通過(guò)puppet cert list --all怎么都找不到證書。
后來(lái)發(fā)現(xiàn)問(wèn)題原因是這樣的:在Server端拷沸,puppet.conf使用的是默認(rèn)配置:
[main]
# Where SSL certificates are kept.
ssldir= $vardir/ssl
然后用admin帳號(hào)(不是root色查,另外創(chuàng)建的帳號(hào))啟動(dòng)Server:
[admin@master ~]$sudopuppet master --no-daemonize --debug
這時(shí)候,Agent傳過(guò)來(lái)的證書申請(qǐng)實(shí)際上都存放在/home/admin/.puppet/ssl/目錄下撞芍。然后秧了,我再開了另外一個(gè)SSH Client,用的是不同的root帳號(hào)序无,結(jié)果就是怎么也找不到證書了验毡。所以,在配置Server端時(shí)帝嗡,ssldir最好這樣配置:
ssldir = /var/lib/puppet/ssl
Q2. 自動(dòng)審核證書?
創(chuàng)建autosign.conf文件:
$cat??? /etc/puppet/autosign.conf
*.localdomain
修改Server配置:
$cat/etc/puppet/puppet.conf
[master]
autosign= /etc/puppet/autosign.conf
刪除Server和Agent的過(guò)期證書:
Server:
$ puppet cert clean--all
Agent:
$rm-rf /var/lib/puppet
OK晶通,這樣就可以了。
Q3. 一個(gè)簡(jiǎn)單的site.pp例子(下載)
網(wǎng)上找到的兩個(gè)例子(下載):
參考:http://www.cnblogs.com/eastson/p/6056456.html