存档

‘puppet’ 分类的存档

Centos 6.x 部署puppet

2013年5月17日 没有评论

概述

puppet 是一种 Linux、Unix 平台的集中配置管理系统,使用自有的 puppet 描述语言,可管理配置文件、用户、cron 任务、软件包、系统服务等。puppet 把这些系统实体称之为资源,puppet 的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet 采用 C/S 星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个 puppet 客户端每半小时(可以设置 runinterval=30)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet 客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息

原理

Puppet 后台运行的时候默认是半小时执行一次,不是很方便修改。可以考虑不让它在后台跑而是使用 crontab 来调用。这样可以精确控制每台客户端的执行时间。分散执行时间也可以减轻压力
Puppet 的工作细节分成如下几个步骤:
1、 客户端 puppetd 调用 facter,facter 会探测出这台主机的一些变量如主机名、内存大小、IP 地址等。然后 puppetd 把这些信息发送到服务器端。
2、 服务器端的 puppetmaster 检测到客户端的主机名,然后会到 manifest 里面对应的 node 配置,然后对这段内容进行解析,facter 送过来的信息可以作为变量进行处理的,node 牵涉到的代码才解析,其它的代码不不解析,解析分几个过程:语法检查、然后会生成一个中间的伪代码,然后再把伪代码发给客户机。
3、 客户端接收到伪代码之后就会执行,客户端再把执行结果发送给服务器。
4、 服务器再把客户端的执行结果写入日志

安装前准备

 环境介绍

 NTP配置

由于我是在公司内部openstack平台生产的虚拟机,默认有了时间同步,没有的话加个crontab。

关闭iptables

 FQDN设置

hosts绑定,或者有dns更好,生产环境下最好还是用dns进行域名解析。

 新版本命令变更

Puppet 3.01,对很多以前版本的命令已经去掉

                  

我安装的时候用的puppet3.1,也要使用新版命令

ruby安装

Puppet 需要 Ruby 的支持,如果要查看命令行帮助的话需要额外 ruby-rdoc 这个软件包:

安装puppet服务端

如果系统是centos 5 系列的话,注意更改源地址,服务端配置文件不用修改。

puppet客户端安装

软件安装

Puppet 需要 Ruby 的支持,如果要查看命令行帮助的话需要额外 ruby-rdoc 这个软件包:,安装后需修改一处配置文件。

配置文件修改

 启动服务

 

证书申请

客户端发起证书请求

Puppet客户端与服务器端是通过SSL隧道通信的,客户端安装完成后,需要向服务器端申请证书:
首次连接服务器端会发起证书申请,在客户端执行命令如下:

如果返回以下信息说明证书请求成功了

服务端查看证书请求

在puppet服务器端查看到申请证书的客户端主机名。

注:前面有+号的说明已经授权签发了。

服务端颁发证书

查看是否颁发成功

验证puppet配置

在服务端写个例子测试一下。这个例子作用很简单,用来在客户端的/tmp目录下新建一个 woyoo.txt 文件,内容为:hello,puppet!在服务端/etc/puppet/manifests下编写代码:【服务器端不需要新建这个文件】

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

文件同步

服务端编写文件同步脚本

客户端同步策略

案例详解

Host文件同步

当我们服务器数量有几百台的时候,这样一个个加node肯定是不行了,我们采用模块化来实现

创建目录

创建所须文件

nodes.pp中使用了正则表达式,这使得一个非常 简单的node可以匹配多个客户端,而对于特殊主机来讲,可单独在文件结尾添加node即可

通过一个if/elsif决断语句,结合Puppet内置变量$operatingsystem可同步任何跨平台的操作系统的hosts文件

客户端请求策略后的结果

 用户管理

创建账户

我想批量创建个www账号

modules下创建相应的目录

注意:

客户端请求策略

 删除账号

比较懒,就在刚刚那个创建用户的脚本里面改了下。

客户端请求策略

 crontab

创建相应的目录和脚本

引用模块

 

客户端请求策略

 Puppet Dashboard

mysql安装

优化mysql设置

编辑 /etc/my.cnf, 在[mysqld]字段,增加最后一行.

启动服务

设置密码并创建数据库

 Passenger+Apache+Dashboard

让Apache支持ruby

配置Dashboard

编辑 /usr/share/puppet-dashboard/config/database.yml

初始化数据库

 

配置Apache

我们需要整合Passenger和apache

重启服务

配置puppet

让Dashboard使用Reports,现在默认agent是已经启用Report的功能,所以你就不需要设置agent,你只需要设置Server端就可以.

重启puppetmaster 服务

访问 http://puppet.54im.com

导入报告

 Delayed Job Workers

查看启动的job

停止delay job

Dashbaord里现在可以看到数据了

分类: puppet, 自动化运维 标签:

修改puppet客户端默认连接puppetmaster的时间

2012年9月23日 没有评论

puppet 客户端默认连接到puppetmaster的时间间隔,默认情况下,puppet 客户端每隔30分钟连接到puppetmaster.如下示例:我修改为10分钟.

vim /etc/puppet/puppet.conf
runinterval = 600   # 默认配置文件里没有这一行,需要自己手动添加,这里的单位为秒

或者当puppet 和func 结合使用时,不想客户端自动找puppetmaster同步,可以启动脚本里面加 -no-client 或者puppet 客户端不以后台进程启动

分类: puppet, 自动化运维 标签: