一.FAQ
Q: puppet是什么?
A: puppet英语原意是木偶,在这里,pupet指的是一个开源的管理软件.用于集中管理服务器.因为该软件管理服务器的方式类似于操纵木偶,所以软件的名字叫做puppet.
Q:puppet对我有用吗?
A:如果你是linux unix freebsd 或者 mac os 系统管理员,puppet对你很有用,如果你是windows用户,暂时对你没用. 如果你管理着上成百上千台的服务器,但是还在用 for 循环加 ssh或者 expect 的方式来管理服务器,那么你应该尝试下puppet了.除非你想整天在不同的服务器上登入登出. 而不考虑挤出点时间来玩或者学习新的东西.
Q:puppet已经能用到生产环境了吗?
A:是的,完全没有问题,google 也用puppet管理了超过6000台的苹果桌面系统,下面是官方的puppet用户列表.
Q: puppet 证书认证错误
A: puppet客户端和服务器端是通过ssl连接来保证安全性,ssl连接用到的证书是x.509证书。 puppet会自己生成证书。不管是在客户端还是在服务器端。
ssl在连接的时候,会对比证书里面的CN名字是否和主机名匹配,如果不匹配就会报证书验证错误。这是最常见的问题。解决这个问题的方法就是,首先固定机器的主机名,然后删除puppet已经自己生成的ssl目录,例如/etc/puppet/ssl. 重新运行puppet来生成新的证书。不同方法安装的puppet,ssl的路径不一样,在debian下面是/var/lib/puppet/ssl
同时在服务器端和客户端都这样操作。
所谓固定机器的主机名,就是保证主机名配置文件里面配置的主机名(debian 是/etc/hostname,centos 是在/etc/sysconfig/network里面的HOSTNAME) 和 执行 hostname命令打印出来的主机名一致。
二.创建部署 Creating a Deployment
1.安装部署
标准Puppet Enterprise 部署包括:
由许多Puppet 管理组成的 虚拟/物理机 节点。
至少一个配置好节点的Puppet管理服务端。
至少有一个控制台。支持PuppetDB
要求有自己的DNS主机,要求有正反向解析。
官方文档废话太多了。不列了,说干货。
准备两个虚拟机,一台是管理端,一台是客户端。
这里准备两台centos6虚拟机做实验。
Puppet对Rubu的支持
Ruby version puppet2.6 puppet2.7 puppet3.0
1.85 支持 支持 不支持
1.8.7 支持 支持 支持
1.9.3 不支持 不支持 支持
1.9.0/1/2 不支持 不支持 不支持
1.8.1/6 不支持 不支持 不支持
Puppet的安装步骤
安装Ruby Ruby-libs Ruby-shadow,进行用户和组管理
安装Facter Puppet Pupper-server
设置主机名、域名解析或者指定hosts
通过命令/etc/init.d/puppetmaster start 启动server或者以非进程的方式启动server
通过命令puppet master --no-daemonize --verbose查看相关日志与输出
在客户端配置文件Puppet.conf制定server端,在终端运行puppet agent -test或直接运行puppet agent --test --server.domain.com 与master交互完成签名认证
在server上配置节点信息,告诉客户端要做什么
检查语法是否错误,采用puppet parser validate test.pp
客户端再次运行配置 puppet agent --test
在Linux下安装(Puppet3.x,RHEL5.X+,CentOS5.x+)
使用包管理器安装
puppet官方源
使用源时确定系统版本,以更改baseurl
[root@localhost ~]# cat /etc/redhat-releaseCentOS release 6.4 (Final)[root@localhost ~]# vim /etc/yum.repos.d/puppet.repo[puppet-labs]name=puppet-labs-repobaseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/gpgcheck=0enabled=1[root@localhost ~]# yum list...[root@localhost ~]# yum -y install ruby ruby-libs ruby-shadow...[root@localhost ~]# ruby -vruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]首先安装puppetlabs-release.noarch[root@localhost ~]# yum install puppetlabs-release.noarch...服务端安装[root@localhost ~]# yum install puppet-server...客户端安装[root@localhost ~]# yum install puppet然后在服务端和客户端改写hosts[root@localhost ~]# vim /etc/hosts192.168.181.42 puppet.domain.com192.168.181.43 agent.domain.com
配置防火墙
iptables -A INPUT -p tcp --dport 8140 -j ACCEPT
配置主机配置文件
服务端[root@localhost ~]# vim /etc/puppet/manifests/site.ppnode default { file { "/tmp/puppettest1.txt": content => "hello,First Puppet test"; }}[root@localhost ~]# service puppetmaster start
客户端[root@agent ~]# service puppet start客户端发起验证[root@agent ~]# puppet agent --server puppet.domain.com --testInfo: Caching certificate for caInfo: csr_attributes file loading from /etc/puppet/csr_attributes.yamlInfo: Creating a new SSL certificate request for agent.domain.comInfo: Certificate Request fingerprint (SHA256): 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00Info: Caching certificate for caExiting; no certificate found and waitforcert is disabled
服务端[root@localhost ~]# puppet cert --list "agent.domain.com" (SHA256) 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00[root@localhost manifests]# puppet cert sign agent.domain.comNotice: Signed certificate request for agent.domain.comNotice: Removing file Puppet::SSL::CertificateRequest agent.domain.com at '/var/lib/puppet/ssl/ca/requests/agent.domain.com.pem'签署成功
客户端验证配置[root@agent ~]# puppet agent --test --server puppet.domain.comInfo: Caching certificate for agent.domain.comInfo: Caching certificate_revocation_list for caInfo: Caching certificate for agent.domain.comInfo: Retrieving pluginInfo: Caching catalog for agent.domain.comInfo: Applying configuration version '1386938219'Notice: /Stage[main]/Main/Node[default]/File[/tmp/puppettest1.txt]/ensure: defined content as '{md5}69edbc23ca13613a136d61fb4f662d5e'Info: Creating state file /var/lib/puppet/state/state.yamlNotice: Finished catalog run in 0.03 seconds[root@agent ~]# more /tmp/puppettest1.txthello,First Puppet test
签署其他注意
客户端重新签名时,需要是删除'hostname'.pem
Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}
服务端也需要删除签名相关文件
find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete
删除某台客户端的认证信息,使用命令
puppet cert --clean {node certname}
同时
Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}
由于本人极度厌烦大便和尤半图(桌面linux),自悟去吧。
使用源码器安装
后续添加。
在Windows下安装使用
后续添加。