环境 CentOS 6 x64
服务端:puppet.test.org
客户端:apache01.test.org
服务端和客户端统一使用官方源,即目前的puppet 2.7版本
rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-5.noarch.rpm
客户端安装
# yum install puppet
设置固定IP,主机名为apache01.test.org,并在host文件中解析
编辑/etc/sysconfig/puppet,去掉两行注释,内容如下
PUPPET_SERVER=puppet.test.org
PUPPET_PORT=8140
在/etc/puppet/puppet.conf 的【main】部分加上如下内容
server = puppet.test.org
(鉴于不断爆发的人品,我加上了上面的内容来指定服务端。有些童鞋没加也能测试成功。)
设置固定IP,主机名为puppet.test.org,并在hosts文件中解析
安装服务端
#yum install puppet-server
编辑/etc/puppet/puppet.conf,添加如下内容
[master]
autosign = true
masterport = 8140
新建文件/etc/puppet/autosign.conf,内容如下
*.test.org
autosign会有一些安全问题,在起初大规模部署时比较省力,部署后应该弃用。之后添加的个别的机器用puppet cert -s xxx来手动认证。
namespaceauth.conf文件,并根据情况修改,这里是“allow *.test.org”
#cp /usr/share/doc/puppet-2.7.18/examples/etc/puppet/namespaceauth.conf /etc/puppet
建立一个简单的测试任务,创建文件/etc/puppet/manifests/site.pp,内容如下
file { "/etc/sudoers":
owner => root,
group => root,
mode => 400,
}
启动服务
chkconfig puppetmaster on
/etc/init.d/puppetmaster start
关闭防火墙或者打开8140端口
测试结果
[root@apache01 ~]# puppet agent --test
info: Creating a new SSL key for apache01.test.org
info: Caching certificate for ca
info: Creating a new SSL certificate request for apache01.test.org
info: Certificate Request fingerprint (md5): 48:6F:F0:37:91:87:44:17:D9:94:5F:38:06:E0:3B:28
info: Caching certificate for apache01.test.org
info: Caching certificate_revocation_list for ca
info: Caching catalog for apache01.test.org
info: Applying configuration version '1342493716'
notice: /File[/etc/sudoers]/mode: mode changed '0440' to '0400'
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished catalog run in 0.02 seconds
测试成功!
说明一下,保持时间一致是一个重要前提,建议使用ntp,最好是内网的ntp服务器。
puppet的文件服务
puppet经常需要做文件服务,目前只支持puppet自有的协议,即puppet://
使用方法,依然以sudoers为例
file { "/etc/sudoers":
owner => root,
group => root,
mode => 400,
source => "puppet:///files/sudoers",
}
客户端会定期检查sudoers的md5,如果发生变更,则用服务器上的文件覆盖本地文件。
puppet的文件服务很像rsync,都是用[方括号]表示一个类,然后export出去
fileserver.conf 默认全是注释,添加下面的内容
[files]
path /etc/puppet/files
alllow 192.168.1.0/24
邮件报告(可选)
每次客户端执行完任务会报告给服务端,服务端可以将报告通过邮件发给指定的地址
在服务端配置puppet.conf
reports = store,tagmail
创建文件/etc/puppet/tagmail.conf,多个邮件地址用逗号分隔,内容如下
all: [email protected],root@localhost
all指所有消息,也可以是其他标签,比如err,info等,不细讲。
注:该功能需要sendmail或postfix支持,实现方式简单有效,适合小规模场合,如果客户端很多会比较麻烦,后面文章会讲到puppet-dashboard 。
有时候由于更换主机名,我们需要重新配置认证:
(1)、首先在客户端删除 rm -rf /var/lib/puppet/ssl/文件夹
(2)、然后在服务器端删除客户端的证书:puppetca --clean apache01.test.org
(3)、然后再在客户端执行puppetd --test 即可!
puppet 支持客户端与服务端版本不一致,但是要注意两点
1、服务端版本大于等于客户端版本
2、版本差距不要太大,建议不要跨大版本号
3、不建议编译安装puppet,这会在后期维护时相当麻烦
注:
DNS解析由ipa-server包办,也就是内网DNS,见另一篇博文。否则请在/etc/hosts文件中单独解析。
本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/933454,如需转载请自行联系原作者