> Linux教程 > Linux学习 >

puppet学习积累

一 puppet简介

       puppet是一种Linux、Unix平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。

  puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息.

二  puppet安装测试环境介绍

     虚拟机vmware   系统centos5.5

    服务器端   192.168.2.113    centos113.sdj

    客户端       192.168.2.114   centos114.sdj

   安装puppet前的准备

  在服务端和客户端都执行以下命令

   添加puppet用户   # groupadd puppet

                              # useradd  -g puppet -s /bin/false -M puppet 

修改Host文件;# echo  "192.168.2.113 centos113.sdj">> /etc/hosts

                        # echo  "192.168.2.114 centos114.sdj">> /etc/hosts

安装ruby        #yum -y install ruby

安装Facter    是用来搜集当前安装系统的环境变量信息的

    # wget http://projects.puppetlabs.com/attachments/download/1101/facter-1.5.8.tar.gz

    # tar xf facter-1.5.8.tar.gz  && cd facter-1.5.8/

    # ruby  install.rb && cd  ~

   # facter    执行这个命令就可以看到facter获取到的变量名和内容



现在开始安装puppet

# wget http://projects.puppetlabs.com/attachments/download/1114/puppet-2.6.1.tar.gz 

# tar xzf puppet-2.6.1.tar.gz && cd puppet-2.6.1

# ruby  install.rb

# mkdir -p /etc/puppet &&cp  conf/redhat/*  /etc/puppet/ && cd ~

验证安装成功

# puppet master

# ps -ef|grep  puppet |grep -v grep

puppet    3247    1  0 23:02 ?        00:00:00 /usr/bin/ruby /usr/bin/puppet master

#   kill  1871



---------------------------------

接下来配置服务器端

将puppetmasterd设置为服务,并自启动

# cp /etc/puppet/server.init  /etc/init.d/puppetmasterd 

#  chmod  755 /etc/init.d/puppetmasterd 

# chkconfig --add puppetmasterd 

# chkconfig --level 35  puppetmasterd  on 

启动服务  #service  puppetmasterd  start

查看是否打开8140端口   # netstat -tnl

Proto Recv-Q Send-Q Local Address               Foreign Address             State     
tcp        0      0 0.0.0.0:8140                0.0.0.0:*                   LISTEN

防火墙和端口设定。puppet服务器端默认使用8140端口监听服务,需要在iptables上开启该端口。                                                
     iptables  -A INPUT  -p tcp --dport 8140 -j ACCEPT                                               
     请在/etc/sysconfig/iptables 中加入上文的规则,并重启iptables。

审批证书

客户端申请证书

在客户端centos114执行   #  puppetd --test  --server centos113.sdj

warning: peer certificate won't be verified in this SSL session                                             
     info: Caching certificate for ca                                             
     warning: peer certificate won't be verified in this SSL session                                             
     warning: peer certificate won't be verified in this SSL session                                             
     info: Creating a new SSL certificate request for centos114.sdj                                             
     info: Certificate Request fingerprint (md5): C5:5A:5E:A9:04:44:CF:A7:F3:46:14:6A:C7:C1:24:C8                                              
     warning: peer certificate won't be verified in this SSL session                                       
     warning: peer certificate won't be verified in this SSL session                                       
     warning: peer certificate won't be verified in this SSL session                                       
     Exiting; no certificate found and waitforcert is disabled  

出现上述类似信息说明成功

服务器接受申请 

在服务器端centos113执行 # puppetca  --list

   centos114.sdj

批准当前证书  # puppetca  -s centos114.sdj

notice: Signed certificate request for centos114.sdj
     notice: Removing file Puppet::SSL::CertificateRequest centos114.sdj at '/var/lib/puppet/ssl/ca/requests/centos114.sdj.pem'



客户端取回已经通过审批的证书

客户端执行 #  puppetd --test  --server centos113.sdj

重新审批旧机器的新证书。

当申请到证书以后我们对比下这两个文件,他们的MD5值是一样的

服务器端[root@centos113.sdj ~]# md5sum /var/lib/puppet/ssl/ca/signed/centos114.sdj.pem

客户端 [root@centos114.sdj ~]# md5sum /var/lib/puppet/ssl/certs/centos114.sdj.pem

功能测试

在服务器端新建一个/etc/puppet/manifests/site.pp文件,大意是在/tmp下创建caotest.txt测试文件。

[root@centos113.sdj ~]# vi /etc/puppet/manifests/site.pp

node default {                                          
     file {"/tmp/caotest.txt":                   #这是文件路径名,后面是冒号                  
     content=>"I'm Caotest PUPPET"; }                   #这是文件的内容 后面是分号                    
     }              #初次创建这个文件需要重启服务

# service puppetmasterd restart

在客户端执行命令

# puppetd --test  --server centos113.sdj

# ls -l /tmp       查看/tmp目录下是否有caotest.txt文件如果有说明测试成功



客户端设置守护进程

# puppetd --server caotest-1.cym --verbose --waitforcert 60

# --server 告诉它master结点的ip,--waitforcert是说每60秒去server检查,--verbose是可选的输出冗余信息
(责任编辑:IT)