关注于系统高可用、网站架构
分类: LINUX
2011-03-30 16:40:55
Puppet 是一个客户端/服务器(C/S)架构的配置管理工具,在中央服务器上安装 puppet-server 服务器(puppet master),在需要被管理的目标服务器上安装 puppet 客户端软件(puppet client)。当客户端连接上服务器后,定义在服务器上的配置文件会被编译,然后在客户端上运行。客户端每隔半小时主动会和服务器通信一次,确认配置信息的更新情况,如果有新的配置信息(或者配置有变化),配置文件将会被重新编译并分发到客户端执行。当然,也可以在服务器上主动触发更新指令来强制各客户端进行配置更新。
以下安装采用两台服务器,一台是 master.vpsee.com 用来安装 puppet-server 服务;一台是 client.vpsee.com 用来安装 puppet 客户端。
Puppet 要求所有机器有完整的域名(FQDN),如果没有 DNS 服务器提供域名的话,可以在两台机器上设置主机名(注意要先设置主机名再安装 Puppet,因为安装 Puppet 时会把主机名写入证书,客户端和服务端通信需要这个证书):
puppet服务端安装:
auth.conf #定义puppet master的acl文件
fileserver.conf #定义puppet master文件服务器的配置文件
manifests #puppet脚本主文件目录,site.pp文件必须存在
modules #puppet模块目录
puppet.conf #puppet主配置文件
ssl #存放ssl证书的目录
2. Agent的配置
Agent的配置主要是更改agent上的/etc/puppet/puppet.conf文件的[agent]部分。
在agent上vim /etc/puppet/puppet.conf 添加如下配置
server = master #master服务器的地址
runinterval = 3600 #每隔多久的时间进行自动更新,时间单位为秒
listen = true #客户端作为一个服务进行监听,允许其它的机器触发puppet运行允许远程触发puppet的节点配置
/etc/resolv.conf 去掉 search localdomain
Puppet 客户端使用 HTTPS 和服务端(master)通信,为了和服务器端通信必须有合法的 SSL 认证,第一次运行 puppet 客户端的时候会生成一个 SSL 证书并指定发给 Puppet 服务端。
Puppet 服务端接受到客户端的证书后必须签字(sign)才能允许客户端接入,sign 后用 puppet cert list –all 查看会发现 client.vpsee.com 前面多了一个 + 后,表示 “加入” 成功:
这样,客户端和服务端就配置好了,双方可以通信了。
现在可以在服务端写个小例子来测试一下。这个例子作用很简单,用来在客户端的 /opt 目录下新建一个 test 文件. 在服务端编写代码:
在客户端上执行 puppet,运行成功后会在 /opt 看到新生成的 test:
redhat 5
服务端
puppetca -l
puppetca -s tts41