天天看点

puppet安装服务端

环境 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,如需转载请自行联系原作者

继续阅读