规划:
node1.9527du.com(192.168.60.22) 为 puppet master 端
node2.9527du.com(192.168.60.128) 为 puppet agent 端
node3.9527du.com(192.168.60.134) 为 puppet agent 端
目的:
为node2.9527du.com节点安装LAMP平台,安装完成之后,使用kick机制升级该节点bash的程序包;
为node3.9527du.com节点安装MySQL数据库服务。
该实验的模块如下图:
一、因为 puppet 工作在:master/agent 模型。各节点之间的通讯是基于主机名称的。所以,要使用到DNS地址解析服务器。
这里为了方便,使用hosts文件来解析主机名。
1、在主节点配置好hosts文件。 [root@node1 ~]# cat /etc/hosts
192.168.60.22 node1.9527du.com node1
192.168.60.128 node2.9527du.com node2
192.168.60.134 node3.9527du.com node3
2、复制该hosts文件到另外两个节点。 [root@node1 ~]# scp -p /etc/hosts 192.168.60.128:/etc/
[root@node1 ~]# scp -p /etc/hosts 192.168.60.134:/etc/
3、在分布式系统应用中首先要保证各节点的时间同步。 [root@node1 ~]# hostname;date;ssh node2.9527du.com 'hostname;date'; ssh node3.9527du.com 'hostname;date'
node1.9527du.com
Sun Oct 12 23:12:20 CST 2014
node2.9527du.com
Sun Oct 12 23:12:27 CST 2014
node3.9527du.com
Sun Oct 12 23:12:02 CST 2014
二、puppet master 端的安装配置
1、所需要安装的程序包: [root@node1 puppet]# rpm -qa | grep -e "puppet" -e "facter"
facter-1.6.18-3.el6.x86_64
puppet-2.7.25-1.el6.noarch -----> puppet agent 端程序包
puppet-server-2.7.25-1.el6.noarch -----> puppet master 端程序包
说明:
当puppet agent端向puppet master 端请求 katalog 文件时,会发送sends:节点名称node names和facts.
而facts就是puppet agent所在主机的一些信息。如:[root@node1 puppet]# facter | grep -e 'lsbdistdescription' -e "osfamily"
lsbdistdescription => CentOS release 6.5 (Final)
osfamily => RedHat
说明:
puppet master 也就是根据agent发送过来的这些信息来。选择安装程序包使用的工具的。
facter-1.6.18-3.el6.x86_64 就是收集这些信息的。
2、让 puppet master 端,运行在前台,并详细显示初始化时候信息,观察puppet master工作是否OK? [root@node1 ~]# puppet master -v --no-daemonize
info: Creating a new SSL key for ca
info: Creating a new SSL certificate request for ca
info: Certificate Request fingerprint (md5): E2:86:B9:E4:51:45:00:F9:89:0E:D3:80:AC:6D:47:A6
notice: Signed certificate request for ca
notice: Rebuilding inventory file
info: Creating a new certificate revocation list
info: Creating a new SSL key for node1.9527du.com
info: Creating a new SSL certificate request for node1.9527du.com
info: Certificate Request fingerprint (md5): 10:41:62:36:4F:6D:D0:6B:66:6D:F6:87:68:E1:43:FF
notice: node1.9527du.com has a waiting certificate request
notice: Signed certificate request for node1.9527du.com
notice: Removing file Puppet::SSL::CertificateRequest node1.9527du.com at '/var/lib/puppet/ssl/ca/requests/node1.9527du.com.pem'
notice: Removing file Puppet::SSL::CertificateRequest node1.9527du.com at '/var/lib/puppet/ssl/certificate_requests/node1.9527du.com.pem'
notice: Starting Puppet master version 2.7.25
说明:
puppet工作在:master/agent模型,puppet master端与agent端通讯使用的是SSL加密协议进行通讯的。所以,各节点的认证是通过CA颁发的证书来互相认证对方的身份。
所以,在有个CA为puppet节点签署证书才可以的。其实,puppet master 既是CA又是master端。所以初始化,puppet master 端时,首先生成CA需要的证书,再为node1.9527.com
节点生成证书。
3、如果,第2步没有问题的话,Ctrl + c 关闭掉,再以后台方式启动。 [root@node1 ~]# service puppetmaster start
Starting puppetmaster: [ OK ]
4、查看puppet master 端监听的端口。 [root@node1 ca]# ss -anptl | grep puppet
LISTEN 0 5 *:8140 *:* users:(("puppetmasterd",2084,5))
[root@node1 ~]# netstat -anptl | grep ruby
tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 3179/ruby
三、在 node3.9527.du.com 节点安装配置 puppet agent 端;
1、puppet agent 端所需要安装的程序包; [root@node3 2.7.25]# rpm -qa | grep -e "puppet" -e "facter"
facter-1.6.18-3.el6.x86_64
puppet-2.7.25-1.el6.noarch
2、让 puppet agent 端以前台方式运行,并使用【-v】选项输出运行时的详细信息。 [root@node3 2.7.25]# puppet agent --server=node1.9527du.com -v --no-daemonize
info: Creating a new SSL key for node3.9527du.com -----> 生成该节点SSL key密钥
info: Caching certificate for ca
info: Creating a new SSL certificate request for node3.9527du.com
info: Certificate Request fingerprint (md5): 84:80:BF:44:8B:EE:29:00:F8:E4:F5:14:AE:34:52:F1 ------> 请求puppet master签署证书
说明:
使用:【--server】选项,指定该agent端属于哪个 puppet master的。
说明:其实agent端初始化的时候,也就是生成节点证书,请求 puppet master 端签署证书的。
3、puppet master 端CA签署证书
(1)、查看puppet master端是否收到node3.9527du.com节点的签署证书的请求[root@node1 ~]# puppet cert --list
"node3.9527du.com" (84:80:BF:44:8B:EE:29:00:F8:E4:F5:14:AE:34:52:F1)
(2)、puppet master 端的CA签署node3.9527du.com节点的证书[root@node1 ~]# puppet cert --sign node3.9527du.com
notice: Signed certificate request for node3.9527du.com
notice: Removing file Puppet::SSL::CertificateRequest node3.9527du.com at '/var/lib/puppet/ssl/ca/requests/node3.9527du.com.pem'
4、当node3.9527du.oom节点拥有证书后,就会向puppet master端发送catalog文件的请求了。 [root@node3 2.7.25]# puppet agent --server=node1.9527du.com -v --no-daemonize
info: Caching certificate for node3.9527du.com
notice: Starting Puppet client version 2.7.25
info: Caching certificate_revocation_list for ca
info: Caching catalog for node3.9527du.com
info: Applying configuration version '1413130794'
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 0.02 seconds
说明:
重启puppet agent端,agent就会向puppet masterv 发送请求katalog文件。由于在puppet master端没有为该节点提供站点清单文件。
所以,不会看到应用资源时候输出的信息。
下面为,该节点node3.9527du.com提供站点清单文件。
4、为node3.9527du.com提供站点清单文件。
(1)、提供资源清单,且使用类(class)方式封装资源清单。
说明: 该类的作用是安装mysql-server程序包,并为MySQL数据库服务提供定制的统一的配置文件。
(2)、制作站点清单文件:
(3)、在site.pp文件中导入所有站点文件
5、测试
(1)、没有启动puppet agent端的情况下查看node3.9527du.com节点是不安装了mysql-server程序包。[root@node3 ~]# rpm -qa | grep "mysql-server"
说明:
从上述命令输出结果,得知。node3.9527du.com并没有安装mysql-server程序包。
(2)、启动puppet agent 端,让它运行在前台,使用-v选项输出运行时的一些信息,
说明:
虽然默认puppet agent端每隔30分钟会向puppet master 端发送请求catalog文件的。
但每次启动或重启,puppet agent端,agent端都会向puppet master端发送请求catalog文件的请求的。
如下图:
(3)、查看是否真的安装了程序包和mysqld服务真的启动了?
[root@node3 ~]# rpm -qa | grep "mysql-server"; netstat -anptl | grep "mysqld"
mysql-server-5.1.71-1.el6.x86_64
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8848/mysqld
说明:
该节点请求自己的站点清单文件,并应用。都是没有问题的。
四、在 node2.9527.du.com 节点安装配置 puppet agent 端;
1、puppet agent 端所需要安装的程序包; [root@node2 ~]# rpm -qa | grep -e "puppet" -e "facter"
facter-1.6.18-3.el6.x86_64
puppet-2.7.25-1.el6.noarch
2、让 puppet agent 端运行在前台,并使用【-v】选项输出运行时的详细信息。 [root@node2 ~]# puppet agent --server=node1.9527du.com -v --no-daemonize
info: Creating a new SSL key for node2.9527du.com
info: Caching certificate for ca
info: Creating a new SSL certificate request for node2.9527du.com
info: Certificate Request fingerprint (md5): C5:90:09:58:7C:EB:20:E4:A6:7D:40:B8:5F:B2:A3:54
3、puppet master 端CA签署证书
(1)、查看puppet master端是否收到node3.9527du.com节点的签署证书的请求[root@node1 ~]# puppet cert --list
"node2.9527du.com" (C5:90:09:58:7C:EB:20:E4:A6:7D:40:B8:5F:B2:A3:54)
(2)、puppet master 端的CA签署node2.9527du.com节点的证书root@node1 ~]# puppet cert --sign node2.9527du.com
notice: Signed certificate request for node2.9527du.com
notice: Removing file Puppet::SSL::CertificateRequest node2.9527du.com at '/var/lib/puppet/ssl/ca/requests/node2.9527du.com.pem'
4、为node2。9527du.com节点提供站点清单文件
(1)、为node2.9527du.com 节点提供资源清单1
(2)、为node2.9527du.com提供的资源清单2
(3)、为node2.9527du.com提供站点清单
5、测试
(1)、没有启动puppet agent端的情况下查看node2.9527du.com节点是否安装了lamp平台所需要的程序包。[root@node2 ~]# rpm -qa | grep -e 'php-[0-9]' -e 'mysql-server' -e 'httpd-[0-9]'
(2)、启动puppet agent 端,让它运行在前台,使用-v选项输出运行时的一些信息,
(3)、查看是否真的安装了lamp 平台[root@node2 ~]# rpm -qa | grep -e 'php-[0-9]' -e 'mysql-server' -e 'httpd-[0-9]'
mysql-server-5.1.71-1.el6.x86_64
httpd-2.2.15-29.el6.centos.x86_64
php-5.3.3-26.el6.x86_64
[root@node2 ~]# netstat -anptl | grep -e "httpd" -e "mysqld"
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7744/mysqld
tcp 0 0 :::8080 :::* LISTEN 7846/httpd
说明:
从上述测试结果得知,node2.9527du.com请求自己的站点清单文件是没有问题的,应用资源时也OK!!
五、把node2.9527du.com节点配置支持:kick。完成紧急升级bash程序包的任务。
默认puppet agent 每隔30分钟,会向 puppet master 请求katalog文件。但是,有时候我们对服务器执行的配置维护操作需要立即生效的。
如:我们的bash程序出现漏洞要升级所有服务器的bash程序包,不能等puppet agent端过来请求catalog文件。这时候就需要使用到puppet 的kick机制。把需要执行的任务,推送给puppt agent端。
1、把puppet agent端,配置成工作在kick模型。
(1)、puppet agent 要监听在某个套接字,等待puppet master端推送过来的数据。[root@node2 ~]# cat /etc/puppet/puppet.conf | grep "listen"
listen = true
(2)、配置访问控制[root@node2 ~]# vim /etc/puppet/namespaceauth.conf
[puppetrunner]
allow *.9527du.com
[root@node2 ~]# vim /etc/puppet/auth.conf
path /
auth any
path /run
method save
allow node1.9527du.com
2、启动puppet agent端 [root@node2 ~]# service puppet start
Starting puppet: [ OK ]
查看puppet agent 监听的端口[root@node2 ~]# ss -anpt | grep "puppet"
LISTEN 0 5 *:8139 *:* users:(("puppetd",7928,5))
3、为node2.9527du.com节点提供站点清单文件
(1)、为node2。9527du.com节点提供的升级bash程序包的资源清单
(2)、在node2.9527du.com节点清单原来的基础上声明多一个类,该类的功能是升级bash程序的。
4、重新启动puppetmaster服务 [root@node1 ca]# service puppetmaster reload
Stopping puppetmaster: [ OK ]
Starting puppetmaster: [ OK ]
5、测试是否能够让node2.9527.com节点紧急升级bash程序
提供的bash升级包为:bash-4.1.2-15.el6_5.1.x86_64.rpm
(1)、puppet agent端升级前的bash程序包版本如下:[root@node2 ~]# rpm -qa | grep bash
bash-4.1.2-15.el6_4.x86_64
(2)、puppet master 向node2.9527du.com节点推送任务
(3)、查看node2.9527.com端是否执行升级bash程序包的任务
说明:
升级程序包已经成功!!!