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一起正常运行的可能性也就越小。