本次安装环境是: centos 5.4 X86_64位
Server:
1.
先安装
ruby
语言包、
ruby
标准库、
ruby shadow
库
yum install -y ruby ruby-libs ruby-shadow
2.
需要添加
EPRL
库,来支持
puppet
wget http:// dl.fedoraproject.org /pub/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
如果你的系统是
centos 6
版本的或者是
centos 5
版本但是是
32
位的,可以到网站:
dl.fedoraproject.org
查找你们想要的
3.
在
master
主机上,需要从
EPEL
仓库安装
puppet
、
puppet-server facter
rpm -Uvh epel-release-5-4.noarch.rpm
puppet
软件包含了
agent
程序,
puppet-server
软件包含了
master
程序,
facter
软件包含了系统盘点工具
facter
,可以获取
agent
主机的相关信息
yum install -y puppet puppet-server facter
之后启动
puppet master
service puppetmaster start
启动
puppetmaster
:
[
确定
]
这样,
puppet server
上的安装算是完成了
现在,
master
和
agent
都安装好了,
解释一下
/etc/puppet/
下的文件含义:
Puppet.conf puppet
的服务端配置文件
Auth.conf client
访问
puppet server
的
acl
配置文件
Fileserver.conf puppet server
作为文件服务器的
ACL
配置文件
Manidests puppet
的脚本目录文件目录
Site.pp
文件告诉
puppet
去哪里寻找并载入指定的客户端配置,如果缺少此文件,
puppet
会启动失败的
防火墙设置
:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT
需要重启防火墙,
service iptables restart
配置好防火墙后,就可以允许
client
访问
puppet
配置第一个agent
Client
:
同样需要安装
epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
在
agent
端只需要安装:
yum install puppet facter
Client
请求:
puppet agent --server=puppet.xxxx.com(puppet master域名) --verbose --no-daemonize
解释:参数
--server
指定了需要连接
puppet master
的域名或者主机名,尽量使用域名吧,否则不同网络之间无法通过主机名相通
--no-daemonize
使得
puppet
客户端运行在前端并输出日志到标准输出
--verbose
使客户端输出更详细的日志
Server
端需要相应这个请求
:
查看:
puppet cert –list
"shwt08" (94:BC:4A:FA:31:E1:10:9F:3C:4D:B3:E8:CB:A4:F8:B9)
puppet cert --sign shwt08
notice: Signed certificate request for shwt08
notice: Removing file Puppet::SSL::CertificateRequest shwt08 at '/var/lib/puppet/ssl/ca/requests/shwt08.pem'
当然,如果我们有很多个
client
的话,都需要一个个去认证确实是一件很麻烦的事情,所以,修改
puppet.conf
文件,实现自动化认证
在全局
”[mian]”
下添加一行:
autosign = true
重启
master
service puppetmaster restart
重新添加一个
clint
,验证
需要先去
wget
后需要编辑
/etc/hosts
之后
puppet agent --server=puppet.xxxx.com --no-daemonize –verbose
发现是没有问题的
创建第一个配置:
在master
上修改两个文件:
目录
/etc/puppet/manifests
下:
nodes.pp site.pp
如果没有这两个文件就手工建吧
vi nodes.pp
node default {
file{"/root/vol_disk_check.sh":
source => "puppet:///files/vol_disk_check.sh",
owner => "root",
group => "root",
mode => 755;
}
}
Vi site.pp
import 'nodes.pp'
至于具体的解释说明,等下章再详细的解释下,这篇文章主要来阐明
puppet安装及简易同步文件
的效果
测试来同步一个文件
puppet agent --server=puppet.xxxx.com --test -v
ok
,从详细信息中,得知
client
已经同步文件了
下面说遇到的两个错误:
错误1
:
err: Could not retrieve catalog from remote server: hostname not match with the server certificate
解决办法:
在
master
和
client
上查看是否二者日期不同步
在
client
上配置
/etc/hosts
文件,编辑添加
puppet.xxxx.com 解析(IP 域名)
错误2
:
err: Could not retrieve catalog from remote server: Connection refused - connect(2)
解决办法:
这个是因为
master
上的主程序没有启动的缘故,到
master
上查看程序
puppetmaster
发现提示进程已死,
service puppetmaster status
puppetmasterd
已死,但
pid
文件仍存
查看了下配置文件,发现是在修改
fileserver.conf
时修改错误导致的,也就是说当遇到这个错误提示的时候,要查看
/etc/puppet
目录下的主配置文件是否有问题
文件
fileserver.conf
中:
[files]
path /var/lib/puppet/files
这个
path
下是放置我们要同步更新的文件
本文转自天真花语 51CTO博客,原文链接:
http://blog.51cto.com/caibird/1148726
,如需转载请自行联系原作者