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
master为服务端的主机名
此时在服务端查看客户端申请的证书
puppet cert --list
然后颁发证书给客户端
puppet cert -s slave9
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
防火墙需要打开以下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错误