预计阅读本页时间:-
5.3 Puppet的详细安装步骤
在下面的步骤中,前三步在这两台机器上均要执行(嫌麻烦的朋友可以利用Xshell4.0的“To All Session”功能进行批量部署)。
1)Puppet不在CentOS的基本源中,需要加入PuppetLabs提供的官方源,由于笔者的系统全是CentOS 6.4 x86_64系统,所以这里采用的是适用于64位系统的rpm软件包,命令如下:
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
cd /usr/local/src
wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
rpm -ivh puppetlabs-release-6-7.noarch.rpm
2)安装Puppet需要的软件包,这里直接用yum进行安装,命令如下:
yum install -y mysql mysql-devel mysql-server ruby ruby-devel ruby-irb ruby-mysql ruby-rdoc ruby-ri
大家都知道,Puppet是基于Ruby进行开发的,所以先关注一下Ruby的版本,命令如下:
ruby –
v
命令显示结果如下所示:
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
3)安装Puppet之前需要先安装facter,它的作用是收集主机的一些资料,比如CPU、主机IP等,facter把收集到的值发送给Puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的Puppet配置文件。值得注意的是,Puppet-2.6.3这个版本有Bug,在配置fileserver.conf文件进行文件推送时,修改此文件会直接导致puppetmaster进程死掉,所以建议大家安装时略过此版本,选择更高级更稳定的Puppet版本。这里直接安装的是3.8.3版本,可以用如下命令查看其版本号:
puppet --version
结果显示如下所示:
3.8.3
注意
如果Puppet-Master与Puppet-Client版本号不一致,极有可能在Puppet-Client进行连接时产生“ERROR 400 ON SERVER”的报错,所以建议大家尽量保持这两端的Puppet版本一致;此外,老版Puppet跟新版Puppet的许多命令都不一致,请大家在阅读此章内容时注意这点。
下面是Puppet服务器端的配置步骤(为了方便以后的操作和维护,建议将puppetmaster配置成系统服务的形式来启动)。
1)服务器端安装命令如下:
yum –
y install puppet-server
2)将puppetmaster服务配置成开机启动,命令如下:
chkconfig puppetmaster on
3)启动服务:
service puppetmaster start
4)检查puppetmaster服务的启动情况。
第一次建议采用puppet master--verbose--no-daemonize命令启动,这样有助于测试和调试错误,如果采用命令方式启动,可以看到启动的整个过程,启动过程会做一些初始化的工作,为master创建本地证书认证中心、证书和key,并打开socket等待Puppet-Client端的连接。可以在/var/lib/puppet/ssl目录看到相关的文件和目录,命令显示结果如下所示:
Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): 43:F8:64:56:2E:DA:3C:64:22:6F:27:25:BD:93:A1:93:20:5E:29:5F:CC:AE:1D:95:94:A0:60:C6:12:FC:12:2B
Notice: Signed certificate request for ca
Info: Creating a new certificate revocation list
Info: Creating a new SSL key for server
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for server
Info: Certificate Request fingerprint (SHA256): 5E:69:D3:D7:34:F8:C7:BA:DA:B5:0B:03:0F:8D:DC:D3:E3:C6:07:09:FC:76:F3:50:29:DD:60:54:7A:5D:F5:19
Notice: server has a waiting certificate request
Notice: Signed certificate request for server
Notice: Removing file Puppet::SSL::CertificateRequest server at '/var/lib/puppet/ssl/ca/requests/server.pem'
Notice: Removing file Puppet::SSL::CertificateRequest server at '/var/lib/puppet/ssl/certificate_requests/server.pem'
Notice: Starting Puppet master version 3.8.3
此命令行的详细参数解释如下:
--no-daemonize #前台输出日志
--verbose #输入更加详细的日志
--debug #还可以带上此参数,用于输出更加详细的日志,排错的时候使用
Puppet-Master开启Puppet进程时占用的是8140端口,可以用lsof命令来查看8140端口是否被占用,命令如下所示:
lsof -i:8140
结果如下所示:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
puppet 1008 puppet 4u IPv4 11158 0t0 TCP *:8140 (LISTEN)
以上两条命令的结果说明Puppet服务器是正常启动的,puppet master--verbose--no-daemonize和service puppetmaster start都是用于启动Puppet-Server端的,不建议同时混用,根据实际工作需求选其一即可。
讲完服务端的配置步骤,现在来介绍一下Puppet-Client客户端的安装配置过程。前面的yum安装过程同Puppet-Server端一样,这里不再重复,请注意下面的过程跟Puppet-Server不一样,要注意区分。
1)客户端安装命令如下:
yum –
y install puppet
2)然后向Puppet-Server端发出请求,命令如下:
puppet agent --test --server server.cn7788.com
此命令结果显示如下所示:
Info: Creating a new SSL key for client.cn7788.com
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for client.cn7788.com
Info: Certificate Request fingerprint (SHA256): 60:08:6F:48:66:B9:B0:5D:7C:33:6E:7D:04:DC:C3:CA:3B:9D:31:36:22:21:16:F0:47:19:08:CE:18:67:B6:E7
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
3)此时在Puppet-Server端可以查看正在申请证书的客户端,命令如下:
puppet cert --list –
all
命令显示结果如下所示:
"client.cn7788.com" (SHA256) 60:08:6F:48:66:B9:B0:5D:7C:33:6E:7D:04:DC:C3:CA:3B:9D:31:36:22:21:16:F0:47:19:08:CE:18:67:B6:E7
+ "server" (SHA256) B1:57:D9:3B:55:FF:AA:70:3F:D8:BD:B3:1E:09:06:89:67:E1:20:CE:8E:84:E6:39:19:A0:E0:F4:6D:49:1A:66
此时要用如下命令接受请求:
puppet cert sign client.cn7788.com
命令结果显示信息如下:
Notice: Signed certificate request for client.cn7788.com
Notice: Removing file Puppet::SSL::CertificateRequest client.cn7788.com at '/var/lib/puppet/ssl/ca/requests/client.cn7788.com.pem'
此命令表示接受客户机client.cn7788.com 的认证。
4)Puppet-Client端再发一次认证请求,命令如下:
puppet agent --test --server server.cn7788.com
此命令结果显示如下所示:
Info: Caching certificate for client.cn7788.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for client.cn7788.com
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for client.cn7788.com
Info: Applying configuration version '1446287484'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.07 seconds
此时Puppet-Server端显示结果如下所示:
Info: Caching node for client.cn7788.com
Info: Caching node for client.cn7788.com
Notice: Compiled catalog for client.cn7788.com in environment production in 0.12 seconds
Puppet-Client端也可以采用服务的形式来启动,命令如下:
Service puppet start
该启动方式跟Puppet-Server端的原理类似,上面介绍的两种启动方式二选一即可,后续的演示为了方便都是采用命令行的方式启动的。
说明
曾有读者提出疑问,Puppet的版本能够混用吗?答案是可以,但要注意的是Puppet-Master的版本一定要高于Puppet-Client,另外Puppet-Master和Puppet-Client之间的版本间隔不要相差太大,Puppet-Client的版本越老,与新版本的Puppet-Master一起正常运行的可能性也就越小。