规划: 目的: 该实验的模块如下图: 
 
 一、因为 puppet 工作在:master/agent 模型。各节点之间的通讯是基于主机名称的。所以,要使用到DNS地址解析服务器。 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 node32、复制该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 端程序包[root@node1 puppet]# facter | grep -e 'lsbdistdescription' -e "osfamily"
lsbdistdescription => CentOS release 6.5 (Final)
osfamily => RedHat2、让 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.253、如果,第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.noarch2、让 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签署证书3、puppet master 端CA签署证书 [root@node1 ~]# puppet cert --list
  "node3.9527du.com" (84:80:BF:44:8B:EE:29:00:F8:E4:F5:14:AE:34:52:F1)[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 seconds4、为node3.9527du.com提供站点清单文件。 说明: 该类的作用是安装mysql-server程序包,并为MySQL数据库服务提供定制的统一的配置文件。(3)、在site.pp文件中导入所有站点文件 
 
 5、测试 [root@node3 ~]# rpm -qa | grep "mysql-server"
 
(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.noarch2、让 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:543、puppet master 端CA签署证书 [root@node1 ~]# puppet cert --list
  "node2.9527du.com" (C5:90:09:58:7C:EB:20:E4:A6:7D:40:B8:5F:B2:A3:54)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节点提供站点清单文件 5、测试 [root@node2 ~]# rpm -qa | grep -e 'php-[0-9]' -e 'mysql-server' -e 'httpd-[0-9]'[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节点配置支持:kick。完成紧急升级bash程序包的任务。 把需要执行的任务,推送给puppt agent端。 1、把puppet agent端,配置成工作在kick模型。 [root@node2 ~]# cat /etc/puppet/puppet.conf | grep "listen"
  listen = true[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.com2、启动puppet agent端 [root@node2 ~]# service puppet start
Starting puppet:                       [  OK  ][root@node2 ~]# ss -anpt | grep "puppet"
LISTEN   0    5             *:8139           *:*    users:(("puppetd",7928,5))4、重新启动puppetmaster服务 [root@node1 ca]# service puppetmaster reload
Stopping puppetmaster:                   [  OK  ]
Starting puppetmaster:                   [  OK  ]5、测试是否能够让node2.9527.com节点紧急升级bash程序 bash-4.1.2-15.el6_5.1.x86_64.rpm[root@node2 ~]# rpm -qa | grep bash
bash-4.1.2-15.el6_4.x86_64
 
(3)、查看node2.9527.com端是否执行升级bash程序包的任务
 说明: