#配置server端
  以下步骤在server12上实施:
  [root@server12 ~]# yum localinstall rubygems-1.3.7-1.el6.noarch.rpm -y
  [root@server12 ~]# yum install puppet-server -y
  /etc/puppet 配置目录:
  组织结构如下:
  |-- puppet.conf #主配置配置文件,详细内容可执行 puppet --genconfig
  |-- fileserver.conf #文件服务器配置文件
  |-- auth.conf #认证配置文件
  |-- autosign.conf #自动验证配置文件
  |-- tagmail.conf #邮件配置文件(将错误信息发送)
  #文件存储目录(puppet 会先读取该目录的.PP 文件<site.pp>)
  |-- manifests
  |--nodes
  | puppetclient.pp
  |-- site.pp #定义 puppet 相关的变量和默认配置。
  |-- modules.pp #加载 class 类模块文件(include syslog)
  |-- modules
  #定义模块
  |-- syslog
  #以 syslog 为例
  |-- file
  |-- manifests
  |-- init.pp
  |-- templates
  #class 类配置
  #模块配置目录
  |-- syslog.erb #erb 模板
  puppet 的第一个执行的代码是在/etc/puppet/manifest/site.pp,因此这个文件必须存在,而 且其他的代码也要通过该文件来调用。
  [root@server12 ~]# touch /etc/puppet/manifests/site.pp #没有此文件 puppet master 无法启动,配置后面再定义
  [root@server12 ~]# /etc/init.d/puppetmaster start
  [root@server12 ~]# netstat -antple
  tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 52 8849 1302/ruby
  注:可以查看到8140端口说明启动成功.
  #配置client端
  以下步骤在server34上实施:
  [root@server34 ~]# yum localinstall rubygems-1.3.7-1.el6.noarch.rpm -y
  [root@server34 ~]# yum install puppet -y
  puppet 客户端连接到 puppet master:
  [root@server34 ~]# puppet agent --server server12.example.com --no-daemonize --verbose
  Info: Creating a new SSL key for server34.example.com
  Info: Caching certificate for ca
  Info: Creating a new SSL certificate request for server34.example.com
  Info: Certificate Request fingerprint (SHA256): 48:04:66:60:FF:A7:1E:34:04:2E:6E:8A:AE:A5:47:96:06:1E:CB:D0:0B:77:EA:E8:C1:A8:5D:01:85:AE:A0:DB
  client 向 master 发出证书验证请求,然后等待 master 签名并返回证书。
  参数--server 指定了需要连接的 puppet master 的名字或是地址,默认连接名为“puppet”的主机 ,如要修改默认连接主机可以修改/etc/sysconfig/puppet 文件中的 PUPPET_SERVER=puppet 选项
  参数--no-daemonize 是 puppet 客户端运行在前台
  参数--verbose 使客户端输出详细的日志
  以下步骤在server12上实施:
  [root@server12 ~]# puppet cert list #显示所有等待签名的证书
  "server34.example.com" (SHA256) 48:04:66:60:FF:A7:1E:34:04:2E:6E:8A:AE:A5:47:96:06:1E:CB:D0:0B:77:EA:E8:C1:A8:5D:01:85:AE:A0:DB
  [root@server12 ~]# puppet cert sign server34.example.com
  Notice: Signed certificate request for server34.example.com
  Notice: Removing file Puppet::SSL::CertificateRequest server34.example.com at '/var/lib/puppet/ssl/ca/requests/server34.example.com.pem'
  在对证书签名后的两分钟内,在 agent 端(server34)上可以看到如下输出:
  Info: Caching certificate for server34.example.com
  Starting Puppet client version 3.3.2
  Info: Caching certificate_revocation_list for ca
  Info: Retrieving plugin
  Info: Caching catalog for server34.example.com
  Info: Applying configuration version '1385280311'
  Info: Creating state file /var/lib/puppet/state/state.yaml
  Finished catalog run in 0.06 seconds
  如要同时签名所有证书,执行以下命令:
  puppet cert sign --all
  puppet cert clean server34.example.com #删除签名证书
  #配置自动签证
  以下步骤在server12上实施:
  [root@server12 ~]# vim /etc/puppet/puppet.conf
  [main]
  autosign=true #允许所有客户端的认证
  …
  …
  [root@server12 ~]# vim /etc/puppet/autosign.conf
  *.example.com #表示允许所有 example.com 域的主机
  [root@server12 ~]# /etc/init.d/puppetmaster reload
  测试:再配置一台client端进行签证.
  在实际中有时会修改 client 端的主机名,这样需要重新生成证书:
  (1)在 server 端执行:puppet cert --clean server34.example.com #你要删除的原 client 端主机名
  (2)在 client 端执行:rm -fr /var/lib/puppet/ssl/*
  puppet agent --server server12.example.com --daemonize --verbose
  #puppet 资源定义
  以下资源均定义在server端/etc/puppet/manifest/site.pp 文件中,在没有指定节点的情况下,对所有 已经经过验证的 client 都生效。
  1.创建文件
  [root@server12 ~]# vim /etc/puppet/manifests/site.pp
  node "server34.example.com"{
  file {"/var/www/html/index.html": content => "server34.example.com",
  mode => 600, #mode用于设置文件的权限
  owner => puppet #owner用于设置文件的属主
  }
  }
  node "server20.example.com"{
  file {"/var/www/html/index.html": content => "server20.example.com",
  mode => 644, #mode用于设置文件的权限
  owner => puppet #owner用于设置文件的属主
  }
  }
  测试:在各client端执行puppet agent --server server12.example.com --daemonize --verbose