puppetmster 

2、配置puppet.conf 注意:这个里面配置了两个certname名称,其中[master]中配置的certname是为所有节点认证用的master名称,[agent]中配置的certname是他本身agent的名称,当然不配置默认是和master的名称是一样的。

[root@puppetmaster ~]# cp /etc/puppet/puppet.conf{,.bak}   #备份
[root@puppetmaster ~]# vim /etc/puppet/puppet.conf  #注释已经删除
[main]
    logdir = /var/log/puppet  #默认日志存放路径
    rundir = /var/run/puppet  #pid存放路径
    ssldir = $vardir/ssl #证书存放目录,默认$vardir为/var/lib/puppet
[agent]
    classfile = $vardir/classes.txt
    localconfig = $vardir/localconfig
    server = puppetmaster.kisspuppet.com #设置agent认证连接master端的服务器名称,注意这个名字必须能够被节点解析
 [master]
    certname = puppetmaster.kisspuppet.com  puppetmaster.kisspuppet.com #设置puppetmaster认证服务器名

3、创建site.pp文件

 puppet的资源配置文件在服务端的/etc/puppet/manifests目录下,我们需要在该目录下创建一个站点文件site.pp。

site.pp文件是puppet读取所有模块pp文件的开始,在3.0版本以前必须设置,否则服务无法启动。

查看本地证书情况 puppetmaster第一次启动会自动生成证书自动注册自己

这个我们可以在/var/lib/puppet/ssl看到那些证书和key。如下:

ll /var/lib/puppet/ssl

clip_image055

这个目录和/etc/puppet/puppet.conf文件中配置的ssldir路径有关系。

我们也可以查看master端给自己授权的证书文件,如下:

ll /var/lib/puppet/ssl/ca/signed

clip_image056

7.2 agent端申请证书

agent端在第一次连接master端时,会向master端申请证书。如果master端没有授予agent端证书,那么agent端和master端之间的连接是不会建立成功的。

此时agent端会持续等待master端授权证书,并会每隔2分钟去检查master端是否签发证书。

我们现在使用puppet agent –server s.ilanni.com连接master端,如下:

puppet agent –server s.ilanni.com

clip_image057

7.3 master端授权证书

agent端申请证书完毕后,需要我们切换到master端,使用puppet cert命令来对agent端授权证书。

有关puppet cert的使用,我们可以查看pupper cert的帮助信息。如下:

pupper cert

clip_image058

在上图中,puppet cert已经给出如何给一个agent端进行授权证书的例子。

现在我们来查看master端有哪些主机在申请证书,如下:

puppet cert list

clip_image059

通过上图,我们很明显的可以看到c.ilanni.com客户端正在申请证书。

现在我们来给agent端授权证书,使用如下命令:

puppet cert sign c.ilanni.com

clip_image060

注意:如果实际生产环境客户端数量比较多的话,我们可以一次性授权所有证书。如下:

puppet cert sign –all

clip_image061

在master端查看所有已经通过认证的agent端,如下:

puppet cert -all

clip_image062

现在我们再来看看master端给agent端授权的证书文件,如下:

ll /var/lib/puppet/ssl/ca/signed

clip_image063

通过上图,我们可以看出master端授权客户端c.ilanni.com的证书文件是c.ilanni.com.pem。

7.4 查看agent端证书

在master端授权完毕后,我们现在切换到agent端查看授权的证书文件,如下:

ll /var/lib/puppet/ssl/certs

clip_image064

通过上图,我们可以看出agent端的证书文件c.ilanni.com.pem与master端的证书文件是一样的。

7.5 puppet证书问题

在实际的生产环境中,可能会出现已经通过master端认证的agent端主机名被修改或者其他一些误操作,从而导致agent端无法与master端进行正常通信。

当遇到这种情况时,我们一般的处理方法是先删除master端和agent端的相关的认证文件,然后在agent端重新申请证书。

具体操作如下:

agent端,删除/var/lib/puppet/ssl目录,如下:

rm -fr /var/lib/puppet/ssl

clip_image065

master端,删除/var/lib/puppet/ssl/ca/signed目录下的证书文件,如下:

rm -fr /var/lib/puppet/ssl/ca/signed/c.ilanni.com.pem

clip_image066

以上操作完毕后,agent端再次申请证书即可。

[root@puppetmaster ~]# puppet cert --list --all  #带+标示已经注册成功
+ "puppetmaster.kisspuppet.com" (C0:E3:6B:76:36:EC:92:93:4D:BF:F0:8F:77:00:91:C8) (alt names: "DNS:puppet", "DNS:puppet.kisspuppet.com", "DNS:puppetmaster.kisspuppet.com")

查看监听状态 puppetmaster服务开启后,默认监听TCP 8140端口

[root@puppetmaster ~]# netstat -nlatp | grep 8140
tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN      1976/ruby           
[root@puppetmaster ~]# lsof -i:8140
COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
puppetmas 1976 puppet    5u  IPv4  14331      0t0  TCP *:8140 (LISTEN)