自动化运维之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的主要内容,如果未能解决你的问题,请参考以下文章