PUPPET集中配置管理系统较之于其他管理工具具有稳定性,能够管理服务器的整个管理周期,并使其配置有条不紊,会让你的系统同配置要求保持一致。本次通过 C/S 架构的配置使用Puppet 自带的语言来配置 Server 上的文件系统,Cron任务等,然后在各个服务器实现配置。通过对 Manifests 内 Nodes 与 Site.pp 等配置的编辑和修改,只需在 Server 端进行简单的编辑就可以实现集中配置管理。在 Nginx配置时, Nginx 会在启动时直接调用Puppet,而默认每半个小时的 Client 从 Server 的更新让配置更加紧密同步,成功配置完成之后 Client 会向 Server 端反馈一个消息,若配置失败,也会反馈一个消息。
原理图:
系统环境:rhel 6.5 (selinux&iptables disabled)
Puppet master : 192.168.122.101 server1.example.com
Puppet client :192.168.122.102 server2.example.com
192.168.122.103 server3.example.com
*******DATE一定要同步,否则验证会失败*******
一,安装puppet包
YUM 源及其所需安装包
[puppet]
name=puppet
baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/
gpgcheck=0
[ruby]
name=ruby
baseurl=http://yum.puppetlabs.com/el/6Server/dependencies/x86_64/
gpgcheck=0
#Yum install
rubygems-1.3.7-5.el6.noarch.rpm
facter-2.4.4-1.el6.x86_64.rpm
hiera-1.3.4-1.el6.noarch.rpm
rubygem-json-1.5.5-3.el6.x86_64.rpm
ruby-shadow-2.2.0-2.el6.x86_64.rpm
ruby-augeas-0.4.1-3.el6.x86_64.rpm
puppet-3.8.1-1.el6.noarch.rpm
puppet-server-3.8.1-1.el6.noarch.rpm(只有SERVER1服务端才安装SERVER,Client不安装此包)
#Date 命令检查各个服务器的时间是否一致
二.客户端请求认证
puppet cert list
puppet cert list-all
puppet cert sign server2.example.com(许可server2 向 server1建立连接)
ERROR 说明server2并没有向server1请求认证,当然,因为我们还没有发送过请求信息。
处理步骤:
1..) 在 agent端执行 puppet agent server server1.example.com--no-daemonize -vt 来给master发送认证请求。
client 向 master 发出证书验证请求,然后等待 master 签名并返回证书。
参数 --server 指定了需要连接的 puppet master 的名字或是地址,默认连接名为 “puppet”的主机,如要修改默认连接主机可以修改/etc/sysconfig/puppet 文件中的 PUPPET_SERVER=puppet 选项
参数 --no-daemonize 是 puppet 客户端运行在前台
参数 -vt指test与 verbose(使客户端输出详细的日志)
2.) 然后在master执行 puppet cert sign server2.example.com 来签名认证agent上的请求。
3.) 最后agent 端再次执行 puppet agent server server1.example.com就能获取认证。
在agent端得到上述图的结果就证明认证成功。
那么如何删除认证重新认证呢?如下图所示:
系统给定了它的处理方法,我就不再赘述了。
但是要记住,master和agent 都要删除认证信息并刷新的。
重新认证步骤跟之前的步骤相同的。
如要同时签名所有证书,执行以下命令:
# puppet cert sign--all
# puppet certclean desktop2.example.com
#删除签名证书
自动验证:
在 server 端, 编辑 puppet.conf 文件:
[main]
autosign =true #允许所有客户端的认证
在/etc/puppet目录下创建 autosign.conf 文件,内容如下:
*.example.com #表示允许所有 example.com 域的主机
# service puppetmaster reload
在 client 端只需执行:
server puppetstart即可。
三,对puppet内资源编辑定义
Master:
[root@server1puppet]# pwd
/etc/puppet/
[root@server1puppet]# vim /etc/puppet/manifests/site.pp
file {
"/mnt/ADORU":
content => "ADORU.COM\n";
# source =>"puppet:///files/passwd"
}
[root@server1puppet]# vim /etc/puppet/fileserver.conf
在最后一行加上
[files]
path /etc/puppet/files
allow *
AGENT:
[root@server3puppet]# puppet agent --server server1.example.com --no-daemonize -vt
[root@server3puppet]# cat /mnt/ADORU
ADORU.COM 可以看到server3的内容与我们的MASTER规定的内容相同。
于是我们在MASTER下site.pp所写的内容就被传至了AGENT的/mnt/ADORU
MASTER:
这次我们换作直接将/etc/puppet/files/passwd 文件同步到AGENT上面
[root@server1puppet]# mkdir /etc/puppet/files/
[root@server1puppet]# cp /etc/passwd /etc/puppet/files/
[root@server1puppet]# md5sum files/passwd(用来与AGENT作比对,确定内容一致)
ce995678da5101eee20bfb6f2425e9b9 files/passwd
[root@server1puppet]# vim ./manifests/site.pp
file {
"/mnt/ADORU":
# content => "ADORU.COM\n";
source =>"puppet:///files/passwd"
}
在AGENT上执行puppetagent --server server1.example.com --no-daemonize -vt
可以看到我们的内容确实得到更新,md5发生了改变
而且/mnt/ADORU的内容发生变化,其md5值与上面的 passwd文件md5值相等为ce995678da5101eee20bfb6f2425e9b9
那么内容呢,我们在AGENT上cat /mnt/ADORU
没错呢,内容也是一样的,除此之外,puppet默认半小时同步一次(手动也可以),即使你不小心把AGENT的内容改了,它也能依靠这种原理自动还原回去,这充分体现了Puppet的稳定性.
好了,这就是开始的PUPPET安装和配置,接下来的详细内容将在下次向大家介绍.