一、准备工作

准备工作在server和client都一样

1.1  安装ruby 

puppet是ruby开发的,所以需要安装。


yum   -y install ruby rdoc

1.2 安装facter

facter的作用是收集主机的一些资料,比如CPU,主机IP等,facter把收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件


wget http://puppetlabs.com/downloads/facter/facter-latest.tgz
tar zxvf facter-latest.tgz
cd facter-1.6.8
/usr/local/bin/ruby install.rb


二、安装Puppet  

wget   http://downloads.puppetlabs.com/puppet/puppet-2.7.14.tar.gz
cd puppet-2.7.14
ruby install.rb   


同步时间


cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
/usr/sbin/ntpdate time.nist.gov

2.1 Server 端配置

1.编辑/etc/hosts 文件,加入:


192.168.1.200      server.test.com  	server
192.168.1.201       client.test.com         client


同时把主机名改为server

2.拷贝server的配置文件


cp -f conf/auth.conf /etc/puppet/
cp -f conf/namespaceauth.conf   /etc/puppet/
cp -f conf/redhat/puppet.conf /etc/puppet/
cp -f conf/redhat/server.init   /etc/init.d/puppetmaster


3.加入开机启动    


chmod +x /etc/init.d/puppetmaster
chkconfig --add puppetmaster
chkconfig puppetmaster on


4.创建puppet 用户


puppetmasterd --mkusers


5.启动 


/etc/init.d/puppetmaster start


2.2 Client 端设置

client端配置和server端大体一样

1.编辑/etc/hosts文件


192.168.1.200	server.test.com  server
192.168.1.201 client.test.com    client


同时将主机名改为client

2.拷贝client端的配置文件加入开机启动           


cp -f conf/auth.conf  	/etc/puppet/
cp -f conf/namespaceauth.conf   /etc/puppet/
cp -f conf/redhat/client.init /etc/init.d/puppet
chmod +x /etc/init.d/puppet
puppet --genconfig > /etc/puppet/puppet.conf
chkconfig --add puppet
chkconfig puppet on


3.创建puppet 用户


puppetd --mkusers


注:如果出错,手动添加即可


groupadd puppet
useradd -gpuppet puppet


4.启动puppet客户端

      /etc/init.d/puppet start

三、测试

1. 客户端执行puppetd --test --server server.test.com发送认证请求

test puppet working

2. 服务器端执行puppetca -s -a发送接受请求。

test puppet server sending require

3. 客户端再次发送请求puppetd --test --server server.test.com


出现上面信息表示server端已接受请求,连接成功。此时c/s通迅正常。如果报下面错误


则需要修改服务器的主机名和本机的hosts解析。


具体测试:

1. 现在在服务器的/etc/puppet/manifests/建立site.pp里面放置如下内容

node default {

file{"/tmp/a.txt":

content => "helo,I am abc.bbb!abc.aaa \n bbbbbb \n cccc \n dddd \n",

ensure  => present,

mode => 644,

owner => root,

group => root,

}

}

2. 在客户端上执行puppetd --test --server server.puppet.com可以发现/tmp/会生成a.txt文件,内容是content里面的内容。

[root@localhost ~]# cat /tmp/a.txt

helo,I am abc.bbb!abc.aaa

bbbbbb

cccc

dddd

到这里就已经完全ok了。