Puppet 是一个客户端/服务器(C/S)架构的配置管理工具,在中央服务器上安装 puppet-server 服务器(puppet master),在需要被管理的目标服务器上安装 puppet 客户端软件(puppet client)。当客户端连接上服务器后,定义在服务器上的配置文件会被编译,然后在客户端上运行。客户端每隔半小时主动会和服务器通信一次,确认配置信息的更新情况,如果有新的配置信息(或者配置有变化),配置文件将会被重新编译并分发到客户端执行。当然,也可以在服务器上主动触发更新指令来强制各客户端进行配置更新。


【环境】

centos 5.4

服务端:master

客户端1:slave9

客户端2:slave69

ruby 版本是1.8.7,好像ruby1.9.0版本会报错,也没有去深究


主从服务器的时间要一致

ntpdate 202.120.2.101

修改服务端和客户端的hosts

http://yum.puppetlabs.com/el/5/products/x86_64/

可以去这里面找epel的rpm包

【服务端安装】

rpm -ivh  epel-release-5-4.noarch.rpm

yum -y install puppet puppet-master  facter

如果是centos6.0的话,epel安装

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum -y install puppet-server




【客户端】

由于puppet不在centos源中,所以需要先安装epel-release-5-4.noarch.rpm

rpm -ivh  epel-release-5-4.noarch.rpm

yum -y install puppet


主从服务器的时间要一致

ntpdate 202.120.2.101


/etc/hosts  服务端和客户端都要添加,客户端不仅要添加服务端的记录,还要添加自己的

[root@slave9 tmp]# cat /etc/hosts

192.168.1.22    master

192.168.1.9     slave9

不然客户端启动puppet的时候会报错,

Starting puppet: dnsdomainname: Unknown host

dnsdomainname: Unknown host



【客户端申请证书】

puppetd --test --server master

puppet安装_puppet安装

master为服务端的主机名


此时在服务端查看客户端申请的证书

puppet cert --list

puppet安装_puppet安装_02


然后颁发证书给客户端

puppet cert -s slave9

puppet安装_puppet安装_03

ok,完事,接下来就是测试了。


【服务端】

/etc/puppet/manifests目录下新建site.pp,内容如下

file {

"/tmp/test.txt":

content => "1234567890\n";

}

服务端重启服务

/etc/init.d/puppet restart

/etc/init.d/puppetmaster restart

【客户端】

puppet agent --test --server=master

puppet安装_puppet安装_04

防火墙需要打开以下2个端口:

8140: puppet服务端

123:ntp服务端

iptables -I INPUT -p tcp --dport 123 -j ACCEPT

iptables -I INPUT -p tcp --dport 8140 -j ACCEPT


在/etc/resolv.conf里,一定要把#search localdomain这一行给注销,否则在申请证书的时候,会带有.localdomain,在证书申请完成,服务端给予授权的时候,你在获得资源的时候,会出现hostname not match with the server certificate错误