puppet原理:
   客户端puppetd调用facterfacter会探测出这台主机的一些变量如主机名、内存大小、IP地址等。然后puppetd把这些信息发送到服务器端。
   服务器端的puppetmaster检测到客户端的主机名,然后会到manifest里面对应的node配置,然后对这段内容进行解析,facter送过来的信息可以作为变量进行处理的,node牵涉到的代码才解析,其它的代码不不解析,解析分几个过程:语法检查、然后会生成一个中间的伪代码,然后再把伪代码发给客户机。

   客户端接收到伪代码之后就会执行,客户端再把执行结果发送给服务器。
   服务器再把客户端的执行结果写入日志。

在安装前先配置好主机名,以及hosts文件,并做好时间同步
echo -e "172.16.5.200    puppet-master\n172.16.5.158    puppet-client" >> /etc/hosts
1.yum安装
yum install -y rubygem
gem update --system
gem install puppet
3.源码安装
   服务器端:
       yum install -y ruby ruby-devel ruby-libs openssl-devel
       安装facter
           wget http://downloads.puppetlabs.com/facter/facter-1.7.0.tar.gz
           tar xfz facter-1.7.0.tar.gz
           cd facter-1.7.0
           ruby install.rb
           facter --version    //查看facter版本
       安装puppet
           wget http://downloads.puppetlabs.com/puppet/puppet-3.2.2.tar.gz
           tar xf puppet-3.2.2.tar.gz
           cd puppet-3.2.2
           ruby install.rb
       拷贝配置文件
           mkdir /etc/puppet/manifests
           cp ext/redhat/puppet.conf /etc/puppet
           cp ext/redhat/fileserver.conf /etc/puppet
       修改配置文件,在/etc/puppet/puppet.conf的[main]中添加
           pluginsync=false
       配置启动文件
           cp ext/redhat/server.init /etc/init.d/puppetmaster
           chmod +x /etc/init.d/puppetmaster
       创建用户和组
           puppet resource group puppet ensure=present
           puppet resource user puppet ensure=present gid=puppet shell='/sbin/nologin'
       启动服务
           service puppetmaster start
   客户端:
       拷贝配置文件
           cp ext/redhat/puppet.conf /etc/puppet
       修改配置文件,在/etc/puppet/puppet.conf的[main]中添加
           pluginsync=false
       配置启动文件
           cp ext/redhat/client.init /etc/init.d/puppet
           chmod +x /etc/init.d/puppet
       创建用户和组
           puppet resource group puppet ensure=present
           puppet resource user puppet ensure=present gid=puppet shell='/sbin/nologin'
       启动服务
           service puppet start