自动化运维之Puppet

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维之Puppet相关的知识,希望对你有一定的参考价值。

Puppet原理

Puppet的目录是让管理员只集中于要管理的目标,而忽略实现的细节。Puppet即可以运行在单机上,也可以以C/S结构使用。在大规模使用puppet的情况下,通常使用C/S结构,在这种结构中puppet客户端只运行puppeclient,puppet服务端只运行puppemaster。

工作流程

  • 客户端puppet调用fast探测出主机的一些变量,如主机名、内存大小、IP地址等。Puppet把这些信息使用SSL连接发送给服务器端;
  • 服务器端的puppetmaster通过fast工具分析检测客户端的主机名,然后找到项目的主配置文件manifest里面对应的node配置,并对该部分内容进行解析,fast发送过来的信息可以作为变量处理,node牵扯到的代码才被解析,没牵扯到的不解析,解析分为语法检查,如果语法没错,继续解析,解析结果生成一个结果‘伪代码’,然后把‘伪代码’发给客户端;
  • 客户端收到‘伪代码’并且执行,客户端把执行结果发给服务器;
  • 服务器端把客户端的执行结果写入日志.

注意事项

  • 为了保证安全,Client和Master之间是基于SSL和证书的,只有经Master证书认证的Client可以与Master通信
  • Puppet会让系统保持在人们所期望的某种状态并一直维持下去,如检测某个文件并保证其一直存在,保证SSH服务始终开启,如果文件被删除了或者ssh服务关闭了,puppet下次执行时(默认30分钟)会重新创建该文件或者启动SSH服务

案例环境

使用四台服务器模拟搭建Puppet环境
技术分享图片

NTPserver:192.168.1.25
puppetmaster:192.168.1.26
puppetclient1:192.168.1.27
puppetclient2:192.168.1.28

实施

所有服务器修改主机名,重启生效

vim /etc/hostname

NTPserver(puppetmaster,puppetclient1,puppetclient2)

init 6

所有服务器关闭防火墙和安全功能

systemctl stop firewalld.service
setenforce 0

puppet三台服务器修改/etc/hosts文件

vim /etc/hosts

192.168.1.26   puppetmaster
192.168.1.27   puppetclient1
192.168.1.28   puppetclient2

NTPserver配置

yum install ntp -y      //安装NTP

vim /etc/ntp.conf         //编辑配置文件

server 127.127.1.0
fudge 127.127.1.0 stratum 8

systemctl enable ntpd.service
systemctl start ntpd.service    //开启ntpd服务

ntpstat  //查看时间同步状态

技术分享图片

puppetmaster配置


yum install ntpdate -y        //安装ntp客户端
ntpdate 192.168.1.25        //进行时间同步

技术分享图片

yum install puppet-server -y      //安装puppet服务端

systemctl enable puppetmaster.service 
systemctl start puppetmaster.service        //启动puppet主程序

puppetclient1,puppetclient2配置,步骤相同

yum install ntpdate -y        //安装ntp客户端
ntpdate 192.168.1.25        //进行时间同步

技术分享图片
技术分享图片

yum -y install puppet         //安装puppet客户端
vim /etc/puppet/puppet.conf        //修改配置文件

[main]
    server = puppetmaster        //指明puppetmaster
......

技术分享图片

申请与注册

puppetclient端:
puppet agent --server=puppetmaster --no-daemonize --verbose     //申请注册

Info: Creating a new SSL key for puppetclient1
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for puppetclient1
Info: Certificate Request fingerprint (SHA256): 24:94:14:43:80:93:D4:A1:71:5E:3F:2D:0B:5A:3E:69:44:02:03:0F:0D:FC:09:C8:9A:65:6E:F8:21:CC:50:50
Info: Caching certificate for ca
#出现以上信息,等待一会即可使用Ctrl+c组合键结束

技术分享图片

puppetmaster端:
查看申请
puppet cert --list      //查看申请
  "puppetclient1" (SHA256) 24:94:14:43:80:93:D4:A1:71:5E:3F:2D:0B:5A:3E:69:44:02:03:0F:0D:FC:09:C8:9A:65:6E:F8:21:CC:50:50
  "puppetclient2" (SHA256) 6B:22:44:3B:13:51:56:A7:80:59:46:74:B5:01:99:AC:27:5F:75:B1:46:0D:2F:7A:72:62:0D:C9:34:22:DE:47

技术分享图片

对未注册的进行注册
puppet cert sign --all      //对未注册的进行注册
Notice: Signed certificate request for puppetclient1
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient1 at ‘/var/lib/puppet/ssl/ca/requests/puppetclient1.pem‘
Notice: Signed certificate request for puppetclient2
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient2 at ‘/var/lib/puppet/ssl/ca/requests/puppetclient2.pem‘

技术分享图片

通过目录查看已经注册的客户端
ll /var/lib/puppet/ssl/ca/signed/      //通过目录查看已经注册的客户端
-rw-r--r--. 1 puppet puppet 1948 8月   5 19:20 puppetclient1.pem
-rw-r--r--. 1 puppet puppet 1948 8月   5 19:20 puppetclient2.pem
-rw-r--r--. 1 puppet puppet 1944 8月   5 19:01 puppetmaster.pem

技术分享图片
此时客户端已经完成证书的请求与签名。

以上是关于自动化运维之Puppet的主要内容,如果未能解决你的问题,请参考以下文章

自动化运维之Puppet服务部署

自动化运维之Puppet

自动化运维之puppet

自动部署运维之Puppet

puppet自动化运维之package资源

puppet自动化运维之exec资源