A: puppet英语原意是木偶,在这里,pupet指的是一个开源的管理软件.用于集中管理服务器.由于该软件管理服务器的方式相似于操纵木偶,因此软件的名字叫作puppet.node
A:若是你是linux unix freebsd 或者 mac os 系统管理员,puppet对你颇有用,若是你是windows用户,暂时对你没用. 若是你管理着上成百上千台的服务器,可是还在用 for 循环加 ssh或者 expect 的方式来管理服务器,那么你应该尝试下puppet了.除非你想成天在不一样的服务器上登入登出. 而不考虑挤出点时间来玩或者学习新的东西.linux
A:是的,彻底没有问题,google 也用puppet管理了超过6000台的苹果桌面系统,下面是官方的puppet用户列表. who using puppet shell
A: puppet客户端和服务器端是经过ssl链接来保证安全性,ssl链接用到的证书是x.509证书。 puppet会本身生成证书。无论是在客户端仍是在服务器端。
ssl在链接的时候,会对比证书里面的CN名字是否和主机名匹配,若是不匹配就会报证书验证错误。这是最多见的问题。vim解决这个问题的方法就是,首先固定机器的主机名,而后删除puppet已经本身生成的ssl目录,例如/etc/puppet/ssl. 从新运行puppet来生成新的证书。不一样方法安装的puppet,ssl的路径不同,在debian下面是/var/lib/puppet/sslwindows
同时在服务器端和客户端都这样操做。centos
所谓固定机器的主机名,就是保证主机名配置文件里面配置的主机名(debian 是/etc/hostname,centos 是在/etc/sysconfig/network里面的HOSTNAME) 和 执行 hostname命令打印出来的主机名一致。安全
标准Puppet Enterprise 部署包括:ruby
由许多Puppet 管理组成的 虚拟/物理机 节点。服务器
至少一个配置好节点的Puppet管理服务端。dom
至少有一个控制台。支持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 不支持 不支持 不支持
安装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
puppet官方源http://yum.puppetlabs.com
使用源时肯定系统版本,以更改baseurl
[root@localhost ~]# cat /etc/redhat-release CentOS release 6.4 (Final) [root@localhost ~]# vim /etc/yum.repos.d/puppet.repo [puppet-labs] name=puppet-labs-repo baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/ gpgcheck=0 enabled=1 [root@localhost ~]# yum list ... [root@localhost ~]# yum -y install ruby ruby-libs ruby-shadow ... [root@localhost ~]# ruby -v ruby 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/hosts 192.168.181.42 puppet.domain.com 192.168.181.43 agent.domain.com
配置防火墙
iptables -A INPUT -p tcp --dport 8140 -j ACCEPT
配置主机配置文件
服务端 [root@localhost ~]# vim /etc/puppet/manifests/site.pp node 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 --test Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for agent.domain.com Info: 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:00 Info: Caching certificate for ca Exiting; 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.com Notice: Signed certificate request for agent.domain.com Notice: 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.com Info: Caching certificate for agent.domain.com Info: Caching certificate_revocation_list for ca Info: Caching certificate for agent.domain.com Info: Retrieving plugin Info: Caching catalog for agent.domain.com Info: 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.yaml Notice: Finished catalog run in 0.03 seconds [root@agent ~]# more /tmp/puppettest1.txt hello,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),自悟去吧。
后续添加。
后续添加。