注: puppet的安装前最好创建快照,需要细心,下面是我的安装过程
puppet准备工作
1 安装
yum -y install puppet puppet-server(服务端才要装这个)
[root@puppet puppet]# puppet -V
2.7.26
增加host文件解析
最后确保不会更改服务端主机名了,并且已经做好了快照或备份还原点的准备,客户端和服务端都做,这样方便后面的解决问题
2 初步配置
2.1 增加配置文件
[root@puppet ~]# tree -R /etc/puppet/
/etc/puppet/
├── auth.conf
├── fileserver.conf
├── manifests
├── modules
└── puppet.conf
2 directories, 4 files
[root@puppet puppet]# cd /etc/puppet
[root@puppet puppet]# cat manifests/site.pp
import "nodes/*.pp"
2.2 服务端服务开启,客户端认证请求,服务端签发证书
前提:selinux和防火墙至少开放8140口没问题,否则会报get addr info的错误
[root@puppet ~]# puppet master start
[root@puppet ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 5167/ruby
客户端:
[root@cobbler ~]# puppet agent --test --verbose
info: Creating a new SSL key for cobbler
info: Caching certificate for ca
info: Creating a new SSL certificate request for cobbler
info: Certificate Request fingerprint (SHA256): 14:3E:29:3E:88:83:FE:20:93:03:0A:03:6B:F5:B6:98:2B:07:0C:D3:32:A7:A9:D7:A5:80:D9:D8:30:E0:A8:57
Exiting; no certificate found and waitforcert is disabled
server端查看下请求并签发:
[root@puppet ~]# puppet cert list
"cobbler" (D0:92:71:0D:B9:10:3D:28:35:D9:CE:99:7D:01:4C:3B)
"zabbix-server" (CC:DC:03:09:B7:86:9C:90:0F:76:FF:E2:6E:E0:61:4A)
如果出现你的hostname后面还有rev.home.ne.jp,那么去/etc/resolv.conf把search domain注释掉,把/etc/sysconfig/network-scripts/ifcfg-eth0的NM_CONTROLLED设置为no
[root@puppet ~]# puppet cert sign "cobbler"
notice: Signed certificate request for cobbler
notice: Removing file Puppet::SSL::CertificateRequest cobbler at '/var/lib/puppet/ssl/ca/requests/cobbler.pem'
最后做一个测试就行了:
测试过程
1 server端写一个pp文件,相当于puppet的对节点的配置文件
[root@puppet puppet]# cat manifests/site.pp
node default {
file {"/tmp/liuliancao_test.txt":
ensure => present,
content => "you know.puppet is your friend.\n";
}
}
#import "nodes/*.pp"
检查一下是否有语法错误
[root@puppet puppet]# puppet parser validate manifests/site.pp
2 agent请求,然后观察是否有指定的测试文件
[root@Zabbix-Server ~]# puppet agent --test --verbose --server puppet
info: Caching catalog for zabbix-server
info: Applying configuration version '1455787094'
notice: /Stage[main]//Node[default]/File[/tmp/liuliancao_test.txt]/content:
--- /tmp/liuliancao_test.txt 2016-02-18 17:16:13.646414163 +0800
+++ /tmp/puppet-file20160218-12128-1dp2fei-0 2016-02-18 17:18:16.251414135 +0800
@@ -1 +1 @@
-you know.puppet is your friend.
\ No newline at end of file
+you know.puppet is your friend.
info: FileBucket adding {md5}7364c5483d25fe12eb0912643d8c8927
info: /Stage[main]//Node[default]/File[/tmp/liuliancao_test.txt]: Filebucketed /tmp/liuliancao_test.txt to puppet with sum 7364c5483d25fe12eb0912643d8c8927
notice: /Stage[main]//Node[default]/File[/tmp/liuliancao_test.txt]/content: content changed '{md5}7364c5483d25fe12eb0912643d8c8927' to '{md5}aa050a17ce909e980c9e3e510a08935a'
notice: Finished catalog run in 0.09 seconds
[root@Zabbix-Server ~]# cat /tmp/liuliancao_test.txt
you know.puppet is your friend.
运行正常
FAQ:
由于问题比较多,所以这里总结下遇到的错误,建议写出来,可能下个月就忘了
问题1:在输入puppet agent --test --verbose --server启动的时候,no route to host
答:检查两端防火墙service iptables status,还有是否指定了server参数(配置文件中或者当下)
问题2:重新申请证书,如何清理干净
答:我的步骤,
S:puppet cert clean "清理的主机名" C:rm -rf /var/lib/puppet
S:puppet master restart C:puppet agent --verbose --test --server "服务器的主机名"
S:puppet cert list && puppet cert sign "清理的主机名" C:puppet agent --verbose --test --server "服务器的主机名"(验证是否成功)
问题3:其他奇怪的问题
答:换其他agent测试,如果一样,实在不行重装,肯定行了