guzan 发表于 2015-11-26 13:21:03

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/
      # rubyinstall.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
  # rubyinstall.rb
  # mkdir -p /etc/puppet &&cpconf/redhat/*/etc/puppet/ && cd ~
  验证安装成功
  # puppet master
  # ps -ef|greppuppet |grep -v grep
  puppet    3247    10 23:02 ?      00:00:00 /usr/bin/ruby /usr/bin/puppet master
  #   kill1871
  
  ---------------------------------
  接下来配置服务器端
  将puppetmasterd设置为服务,并自启动
  # cp /etc/puppet/server.init/etc/init.d/puppetmasterd
  #chmod755 /etc/init.d/puppetmasterd
  # chkconfig --add puppetmasterd
  # chkconfig --level 35puppetmasterdon
  启动服务#servicepuppetmasterdstart
  查看是否打开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值是一样的
  服务器端# md5sum /var/lib/puppet/ssl/ca/signed/centos114.sdj.pem
  客户端 # md5sum /var/lib/puppet/ssl/certs/centos114.sdj.pem
  功能测试
  在服务器端新建一个/etc/puppet/manifests/site.pp文件,大意是在/tmp下创建caotest.txt测试文件。
  # 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是可选的输出冗余信息
  参考   http://bbs.linuxtone.org/forum-viewthread-tid-8480-fromuid-1049.html
  
页: [1]
查看完整版本: puppet学习积累