一个人管一百台服务器的时候,就要用到批量处理工具,这样可以把大量无聊重复的任务一口气完成,之前我一直用pssh,因为pssh就是一个类似for in语句的工作原理,但是这玩意不能保证时时同步服务器组的内容,所以在这一点上puppet更牛,也是现代管理中puppet更受青睐的原因。
puppet跟 zabbix一样,也是管理员所操作的中心机是“服务器端”,需要安装一个puppet-server ,而被操作的那些机器叫“客户端”,每台机器都需要安装一个puppet-client。然后服务器和客户端都勾搭成功之后,每半个小时,服务器就会检查一下客户端们上的软件版本,然后第一时间把这些软件同步,嗯,有点类似rsync功能。
安装前的准备
刚刚说过,服务器和客户端每隔半个小时就会通信一次,那么可见puppet的基本条件就是要时间钟是一致的,如何一致?
[[email protected] chenshuo]# date Sat May 28 16:38:02 EDT 2016 [[email protected] chenshuo]# yum install ntp Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.yun-idc.com * updates: mirrors.yun-idc.com Package ntp-4.2.6p5-10.el6.centos.x86_64 already installed and latest version Nothing to do [[email protected] chenshuo]# chkconfig ntpd on [[email protected] chenshuo]# ntpdate pool.ntp.org 28 May 08:42:10 ntpdate[28852]: step time server 182.92.12.11 offset -28590.133953 sec [[email protected] chenshuo]# date Sat May 28 08:42:35 EDT 2016 [[email protected] chenshuo]# service ntpd start Starting ntpd: [ OK ]
可见原本这个机器的时间是5月28日下午4点38分,现在已经改成了5月28日8点42分。
配置完时间之后,就是安装以下组件:
# yum install ruby ruby-libs ruby-rdoc Puppet 需要 Ruby 的支持,如果要查看命令行帮助的话需要额外 ruby-rdoc 这个软件包: # yum -y install wget 安装(更新)wget功能 # wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm # yum install puppetlabs-release-6-1.noarch.rpm 安装rpm包 # yum update yum升级,这个过程比较繁琐
中心机与客户机的安装
然后在中心机上安装puppet-server。
# yum install puppet-server # chkconfig puppet on # service puppetmaster start Starting puppetmaster: [ OK ]
再使用# /etc/init.d/iptables stop这个命令把防火墙关闭,这样就不会出现一些包丢弃的意外情况了。
在客户机上安装puppet-client。直接使用# yum install puppet就行。
Puppet 客户端使用 HTTPS 和服务端(master)通信,为了和服务器端通信必须有合法的 SSL 认证,第一次运行 puppet 客户端的时候会生成一个 SSL 证书并指定发给 Puppet 服务端。
# puppet agent --no-daemonize --onetime --verbose --debug --server=服务器的主机别名
Puppet 服务端接受到客户端的证书后必须签字(sign)才能允许客户端接入,sign 后用 puppet cert list –all 查看会发现 client.vpsee.com 前面多了一个 + 后,表示 “加入” 成功: