puppet详解(八)——puppet自动化

今天继续给大家介绍Linux运维相关知识,本文主要内容是puppet中的自动化操作。

一、puppet客户端自动认证

前面我们介绍了很多puppet的基础操作,我们已经能够使用puppet来批量管理下游设备了。但是,puppet的自动化水平还不高。在大型企业生产环境中,我们希望的是通过PXE或者是cobbler安抓完系统后,设备自动安装puppet客户端,然后puppet客户端自动完成基本软件安装与环境配置,全程无需人工参与。要实现这一目的,首要的就是实现puppet客户端的自动认证,无需在puppet服务端上对puppet客户端进行授权。
为了实现puppet客户端自动认证功能,我们只需要打开puppet服务端配置文件/etc/puppet/puppet.conf,在配置文件中的[main]模块下添加如下内容:

autosign=true

完成后,重启puppet客户端,执行命令:

systemctl restart puppetmaster

执行完毕后,我们可以找一台没有申请过证书的puppet客户端,尝试进行puppet证书申请,结果如下:
在这里插入图片描述
在服务端上,结果如下:
在这里插入图片描述
PS:删除puppet证书的方法
在进行上步操作时,我们有时没有现有的安装puppet客户端但是没有申请证书的设备,此时,我们可以删除已申请证书puppet客户端的证书。删除步骤如下:
在puppet服务端上,执行命令:

puppet cert --clean 【客户端主机名】

在puppet客户端上,删除puppet证书,执行命令:

rm -rf /var/lib/puppet/ssl/

即可将该设备还原为为申请证书的状态。

二、puppet客户端自动同步

除了希望puppet服务端能够进行证书自动认证外,我们还希望在生产环境中的puppet的客户端能够定时自动向puppet服务端同步,以获取自身的配置。
对于3.6.2版本(CentOS7系统在默认情况下安装的puppet版本就是3.6.2)的puppet而言,要配置puppet客户端自动同步功能,需要在puppet客户端上,打开puppet配置文件,在[agent]模块中写入如下内容:

server=puppet-server

在默认情况下,puppet客户端会每个半个小时进行一次自动同步,如果想要修改该时间,可以在[agent]模块下写入如下内容:

runinterval 【自定义时间】

自定义时间单位为秒。
完成上述配置后,重启puppet客户端,执行命令:

systemctl start puppet

我采用了每隔20s进行一次同步的配置,上述配置完成后,在puppet服务端上同步信息如下:
在这里插入图片描述

三、puppet服务端主动推送

事实上,puppet除了允许puppet客户端主动向puppet服务端申请配置外,还允许puppet服务端主动向puppet客户端推送数据。
要实现puppet服务端主动推送功能,首先要puppet客户端监听一个端口,使得puppet客户端可以收到puppet服务端的通知内容。在默认情况下,puppet客户端监听的端口为8139。打开puppet客户端的配置文件/etc/pupper/puppet.conf,在[agent]模块下加入如下内容:

listen=true

然后在/etc/puppet/目录下,新创建namespaceauth.conf文件,并向文件中写入如下内容:

[puppetrunner]
allow *

然后打开/etc/puppet/auth.conf文件,在文件中,path / 前面写入内容:

path /run
method save
allow *

注意,上述内容,必须添加到path / 的前面,如下所示:
在这里插入图片描述
否则,会报错,报错信息为:
Error: Host puppet-client failed: Error 403 on SERVER: Forbidden request: puppet-server(192.168.136.20) access to /run/puppet-client [save] authenticated at :119
如下所示:
在这里插入图片描述
完成上述配置后,重启puppet客户端。
在puppet服务端上,尝试puppet服务端主动推送功能,执行命令:

puppet kick -d puppet-client

执行结果如下:
在这里插入图片描述
PS:小技巧
在该步骤中,如果需要puppet服务端同时主动推送多台puppet客户端,则可以把puppet客户端的主机列表写入一个文件中,如puppet_client.txt,然后执行命令:

puppet kick -d `cat puppet_client.txt`

即可。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/123689751