环境:

操作系统:RedHat 5.3 64bit

Puppet版本:2.7.9

Facter版本:1.6.8


1、Puppet及Facter下载地址

Puppet:https://downloads.puppetlabs.com/facter/

Facter: https://downloads.puppetlabs.com/puppet/

2、Puppet Server安装

首先在安装Puppet之前,需要安装ruby,我们这里就直接使用yum安装,具体下:

# yum install -y ruby ruby-libs  ruby-shadow

①、Facter安装

# tar xzvf facter-1.6.8.tgz
# cd facter-1.6.8
# ruby install.rb

②、Puppet安装

# tar xzvf puppet-2.7.9.tgz
# cd puppet-2.7.9
# ruby install.rb

如上Puppet Server端的安装就已经完成了,那么接下来就是一些配置文档及启动脚本的设置了。

  • 配置文件

    安装完成之后,我们需要copy安装包里面的一些配置文件到Puppet配置目录/etc/puppet,具体如下:

    # cp conf/redhat/fileserver.conf /etc/puppet/
    # cp conf/redhat/puppet.conf /etc/puppet/puppet.conf.default

    fileserver.conf → Puppet文件系统配置

    puppet.conf → Puppet的默认配置文档,可以参考下。不过这个也可以不复制,后面会命令生成

    注意:根据操心系统不同复制的配置文件的目录也会不一样,如上我们操作系统为redhat,目录为conf/redhat,如果操作系统是suse,那么目录就为conf/suse。

  • 启动脚本

    # cp conf/redhat/server.init /etc/init.d/puppetmaster
    # chmod +x /etc/init.d/puppetmaster

    注意:默认情况下puppet的配置文档/etc/puppet/puppet.conf设置pid的存储路径为/var/lib/puppet/run,而启动脚本的路径为/var/run/puppet,这里两者需要统一。

  • 创建Puppet用户及相应目录

    # puppet master --mkusers
    # ll /var/lib/puppet/
    total 48
    drwxr-x--- 2 puppet puppet 4096 Nov  1 17:34 bucket
    drwxr-x--- 2 puppet puppet 4096 Nov  7 14:11 clientbucket
    drwxr-x--- 2 puppet puppet 4096 Nov  7 14:11 client_data
    drwxr-x--- 2 puppet puppet 4096 Nov  7 14:11 client_yaml
    drwxr-xr-x 2 puppet puppet 4096 Nov  1 17:34 lib
    drwxr-x--- 2 puppet puppet 4096 Nov  8 14:06 log
    drwxr-x--- 3 puppet puppet 4096 Nov  4 17:28 reports
    drwxr-x--- 2 puppet puppet 4096 Nov  1 17:34 rrd
    drwxrwxrwt 2 puppet puppet 4096 Nov 12 11:42 run
    drwxr-x--- 2 puppet puppet 4096 Nov  1 17:34 server_data
    drwxr-xr-t 3 puppet puppet 4096 Nov  7 14:11 state
    drwxr-x--- 4 puppet puppet 4096 Nov  4 16:37 yaml

创建的目录主要是/var/lib/puppet

  • 生成Puppet Server配置文档

    # puppetmasterd --genconfig > /etc/puppet/puppet.conf

以上就将Puppet Server端给安装完成了,后续剩下的就是SSL认证了。

3、Puppet Agent安装

Agent端Facter及Puppet的安装和Server端是一样的,区别就在于两者之后的启动脚本和配置文档不一样,相关的配置信息如下:

  • 启动文件

    # cp -p conf/redhat/client.init /etc/init.d/puppet
    # chmod +x /etc/init.d/puppet
  • 生成Puppet Agent配置文档

    # puppet agent --genconfig > /etc/puppet/puppet.conf

4、SSL认证

①、DNS设置或者host设置

Puppet SSL认证是通过域名来标记的,所有这里需要设置域名。因为这里是测试使用,本次的话就直接通过/etc/hosts来设置域名的IP指向了,如果在生产环境使用的话,建议还是使用DNS来设置。如下为Puppet Server及Agent的hosts设置:

  • Puppet Server

    # cat /etc/hosts
    ···
    10.197.95.245  szmlvm29-76 szmlvm29-76.easou.com
    10.197.95.234  szmlvm29-77 szmlvm29-77.easou.com puppet
  • Puppet Agent

    # cat /etc/hosts
    ···
    120.197.95.234  szmlvm29-77.easou.com szmlvm29-77
    120.197.95.245  szmlvm29-76.easou.com szmlvm29-76

②、Puppet Agent证书申请

# puppetd --server szmlvm29-76.easou.com --test
或者
# puppetd --server szmlvm29-76.easou.com --no-daemonize –verbose

第一个是申请证书时,不管是否成功,只执行一次。

第二个是申请证书时,一直在前端实现详细信息,默认情况下是以daemon的形式执行的。

③、Puppet Server证书签发

# puppetca  --sign szmlvm29-77.easou.com 或者 puppet cert --sign szmlvm29-77.easou.com
签发节点为szmlvm29-77.easou.com的证书
# puppetca  --sign --all 或者 puppet cert --sign --all
签发所有节点的证书

其他Puppet Server和证书相关的命令有如下一些:

# puppet cert --list或者puppetca --list
查看申请证书请求
# puppet cert -revoke puppet或者puppetca -revoke puppet
设置节点证书过期
# puppet cert --clean puppet或者puppetca --clean puppet
删除节点证书

5、Puppet Server与Agent联通测试

①、配置site.pp

site.pp这个文件是在/etc/puppet/manifests目录下,Puppet Server所有对Agent的操作都是从这个配置文件入口的。这里为了测试就简单的对这个文件进行配置,对Agent创建一个用户,具体信息如下:

$ cat site.pp
node default {
        user { "test1" : ensure=>present,comment=>"测试",name=>test,shell=>"/bin/bash",home=>"/home/text",managehome=>true,password=>sha1('12345');}
}

如上,对所有Agent创建一个用户名为test用户,使用shell为/bin/bash,加目录为/home/test,密码为12345。

②、Agent执行

# /usr/sbin/puppetd --server szmlvm29-76.easou.com --test
info: Caching catalog for szmlvm29-77.easou.com
info: Applying configuration version '1384248986'
notice: /Stage[main]//Node[default]/User[test1]/ensure: created
notice: Finished catalog run in 0.16 seconds
# cat /etc/passwd
···
test:x:505:506:测试:/home/text:/bin/bash
# ll /home/
···
drwx------  3 test   test     4096 Nov 18 14:41 text
# cat /etc/shadow
test:8cb2237d0679ca88db6464eac60da96345513964:16027:0:99999:7:::

如上Puppet Agent执行结果为执行成功。