Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1383741
  • 博文数量: 77
  • 博客积分: 2104
  • 博客等级: 大尉
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-19 13:21
个人简介

关注于系统高可用、网站架构

文章分类

全部博文(77)

文章存档

2018年(1)

2017年(1)

2015年(4)

2014年(8)

2013年(4)

2012年(12)

2011年(17)

2010年(30)

分类: 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 时会把主机名写入证书,客户端和服务端通信需要这个证书):

# vi /etc/hosts
192.168.2.10    master 
192.168.2.11    client 
 
puppet客户端安装
参照附件脚本
 
 

puppet服务端安装

# yum install puppet-server facter
# chkconfig puppet on 
# service puppetmaster start
# /etc/init.d/iptables stop
 
 
1. Master的配置
先来看看puppet主目录下都有什么文件已经每个文件是做什么用的:
ls -1 /etc/puppet/
 

auth.conf #定义puppet masteracl文件

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 agent --no-daemonize --onetime --verbose --debug --server=master.vpsee.com

Puppet 服务端接受到客户端的证书后必须签字(sign)才能允许客户端接入,sign 后用 puppet cert list –all 查看会发现 client.vpsee.com 前面多了一个 + 后,表示加入成功:

# puppet cert list --all 
 
# puppet cert --sign client.vpsee.com
notice: Signed certificate request for client.vpsee.comnotice: Removing file Puppet::SSL::CertificateRequest client.vpsee.com at '/var/lib/puppet/ssl/ca/requests/client.vpsee.com.pem'
 

这样,客户端和服务端就配置好了,双方可以通信了。

 

现在可以在服务端写个小例子来测试一下。这个例子作用很简单,用来在客户端的 /opt 目录下新建一个 test 文件. 在服务端编写代码:

# vi /etc/puppet/manifests/site.pp
file
{ "/opt/test":
  source => "puppet://spman/files/test",
 }

修改/etc/puppet/fileserver.conf
增加
 [files]
  path /opt
  allow 10.0.0.0/24

客户端上执行 puppet,运行成功后会在 /opt 看到新生成的 test

如果客户端需要删除本地证书,删除以下目录
rm -rf /var/lib/puppet/ssl/*
 
附:
客户端安装脚本(redhat6)

redhat 5

rpm -ivh

服务端

puppetca -l

puppetca -s tts41


 客户端同步
puppetd --test --server spman
阅读(2913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~