puppet安装

  1. 云栖社区>
  2. 博客>
  3. 正文

puppet安装

余二五 2017-11-30 23:08:00 浏览691
展开阅读全文

环境 CentOS 6 x64

服务端:puppet.test.org

客户端:apache01.test.org

 

 服务端和客户端统一使用官方源,即目前的puppet 2.7版本 


  1. rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-5.noarch.rpm 

 

客户端安装 


  1. # yum install puppet 

 

设置固定IP,主机名为apache01.test.org,并在host文件中解析

编辑/etc/sysconfig/puppet,去掉两行注释,内容如下 


  1. PUPPET_SERVER=puppet.test.org 
  2. PUPPET_PORT=8140 

 

在/etc/puppet/puppet.conf 的【main】部分加上如下内容 


  1. server = puppet.test.org 

(鉴于不断爆发的人品,我加上了上面的内容来指定服务端。有些童鞋没加也能测试成功。)

 

服务端

设置固定IP,主机名为puppet.test.org,并在hosts文件中解析

 

安装服务端 


  1. #yum install puppet-server 

 

编辑/etc/puppet/puppet.conf,添加如下内容 


  1. [master] 
  2.  
  3. autosign = true 
  4.  
  5. masterport = 8140 

 

新建文件/etc/puppet/autosign.conf,内容如下 


  1. *.test.org 

 

autosign会有一些安全问题,在起初大规模部署时比较省力,部署后应该弃用。之后添加的个别的机器用puppet cert -s xxx来手动认证。 

 

namespaceauth.conf文件,并根据情况修改,这里是“allow *.test.org”


  1. #cp /usr/share/doc/puppet-2.7.18/examples/etc/puppet/namespaceauth.conf /etc/puppet 

 

建立一个简单的测试任务,创建文件/etc/puppet/manifests/site.pp,内容如下


  1. file { "/etc/sudoers": 
  2.          owner => root, 
  3.          group => root, 
  4.          mode => 400, 

 

启动服务 


  1. chkconfig puppetmaster on 
  2. /etc/init.d/puppetmaster start 

 

关闭防火墙或者打开8140端口

 

测试结果 


  1. [root@apache01 ~]# puppet agent --test 
  2. info: Creating a new SSL key for apache01.test.org 
  3. info: Caching certificate for ca 
  4. info: Creating a new SSL certificate request for apache01.test.org 
  5. info: Certificate Request fingerprint (md5): 48:6F:F0:37:91:87:44:17:D9:94:5F:38:06:E0:3B:28 
  6. info: Caching certificate for apache01.test.org 
  7. info: Caching certificate_revocation_list for ca 
  8. info: Caching catalog for apache01.test.org 
  9. info: Applying configuration version '1342493716' 
  10. notice: /File[/etc/sudoers]/mode: mode changed '0440' to '0400' 
  11. info: Creating state file /var/lib/puppet/state/state.yaml 
  12. notice: Finished catalog run in 0.02 seconds 

测试成功!

说明一下,保持时间一致是一个重要前提,建议使用ntp,最好是内网的ntp服务器。  

 

puppet的文件服务

puppet经常需要做文件服务,目前只支持puppet自有的协议,即puppet://

使用方法,依然以sudoers为例


  1. file { "/etc/sudoers":   
  2.         owner => root,   
  3.          group => root,   
  4.          mode => 400,   
  5.          source => "puppet:///files/sudoers",  
  6. }  

客户端会定期检查sudoers的md5,如果发生变更,则用服务器上的文件覆盖本地文件。

puppet的文件服务很像rsync,都是用[方括号]表示一个类,然后export出去

fileserver.conf 默认全是注释,添加下面的内容


  1. [files] 
  2. path /etc/puppet/files 
  3. alllow 192.168.1.0/24 

 

邮件报告(可选)

每次客户端执行完任务会报告给服务端,服务端可以将报告通过邮件发给指定的地址

在服务端配置puppet.conf


  1. [master] 
  2.   reports = store,tagmail 

 

创建文件/etc/puppet/tagmail.conf,多个邮件地址用逗号分隔,内容如下


  1. all: admin@test.org,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,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
余二五
+ 关注