Puppet集中配置管理系统

Puppet是一个配置管理工具,典型的,puppet是一个C/S结构,当然,这里的C(客户端)可以有很多,因此,也可以说是一个星形结构,所有的puppet客户端同一个服务器端的puppet通讯。每个puppet客户端每半小时连接一次客户端(时间也可以设置为其他),下载最新的配置文件,并且严格按照配置文件来配置服务器,配置完成以后,puppet客户端可以反馈给服务器端一个消息,如果出错,也会给服务器端反馈一个消息。下面是一个典型的puppet配置的数据流动情况

1 (管理员)管理员编写puppet manifest,提交到svn (svn db  svn db备份 ) 只需要备份svn,你就备份了所有的服务器配置 哪怕是上万台计算机 这里的备份数据不会超过100M

2 从svn取出所有的puppet配置信息

3 (puppet master)客户端facter收集服务器信息发送给puppet master (连接是基于ssl和证书的,保证了安全性)

4 puppet master 根据收集到的客户端信息,编译manifest,发回到客户端

5(多个puppet client) puppet执行从服务器收到的manifest,完成对机器的配置

稳定性

Puppet与其他手工操作工具由一个最大区别就是puppet的配置具有稳定性,因此你可以多次执行puppet,一旦你更新了你的配置文件,puppet就会根据配置文件夹更改你的机器配置,通常每30分钟检查一次,puppet会让你的系统状态同配置文件所要求的状态保持一致(比如你配置文件里要求ssh服务必须开启,加入不小心把ssh服务关闭了,那么下一次执行puppet的时候,puppet会发现这个异常,然后会开启ssh服务,以使系统状态和配置文件保持一致) puppet就像一个魔术师 会让你混乱的系统收敛到puppet配置文件想要的状态,可以使用puppet管理服务器的整个生命周期,从初始化到退役,不同于传统的例如sun的jumpstart或者redhat的kickstart,puppet可以长年让服务器保持最新状态,只要一开始就正确的配置他们,然后再也不用去管他们,通常puppet用户只需要给机器安装好puppet并让他们运行,然后剩余的工作就交给puppet来完成

Puppet的细节和原理

Puppet的目的时为了让你只集中于你要管理的目标,而忽略实现的细节,例如命令名 参数或者文件格式,puppet把系统里面的用户 软件包 服务等看作是资源,puppet的作用就是管理这些资源以及资源之间的相互联系。

Puppet采用了非常简单的C/S架构,所有数据的交互都通过ssl进行,以保证安全,它的工作流程入图所示:

Puppet clientpuppet master

Connet1plugins

                 2

Facter3ENC

4

Apply catalognode $certname(

  $conf = linux

Class {‘ssh’:

Ssh_key=>’$file’,

}

)

5

File?Comple catelog functions

6

Reportfileserver

8               7

Finishreport

1 客户端puppet向master发起认证请求,或使用带签名的证书

2 Master告诉client你是合法的

3 客户端puppetd调用faster,faster探测出主机的一些变量,例如主机名,内存大小,ip地址等,puppet将这些信息通过ssl连接发送到服务器端

4 服务器端的puppet master检测客户端的主机名,然后找到manifest对应的node配置,并对该部分内容进行解析。Facter送过来的信息可以作为变量处理,node牵扯到的代码才解析,其他没牵扯到的代码不解析。解析分为几个阶段,首先是语法检查,如果语法错误就报错;如果语法没错,就继续解析,解析的结果生成一个中间的伪代码(catelog),然后把伪代码发给客户端

5 客户端接收到伪代码 并且执行

6 客户端在执行时判断有没有file文件,如果有 则向fileserver发起请求

7 客户端判断有没有配置report,如果已配置,则把执行结果发送给服务器

8服务器端把客户端的执行结果写入日志,并发送给报告系统

@@@@@@@@@@@@@@   puppert  @@@@@@@@@@@@@@@@@@@

系统环境:rhel6.3 selinux and iptables disabled

Server:192.168.0.201   desktop1.example.com   puppet master

Client: 192.168.0.202   desktop2.example.com   puppet agent

Client: 192.168.0.203   desktop3.example.com   puppet agent

重要:Server和所有的client之间需要解析,以及时间同步,不然会验证失败

 

Server端

yum localinstall -y rubygems-1.3.7-1.el6.noarch.rpm

搭建yum仓库:【puppet】和【ruby]这两个

Yum install -y puppet-server

/etc/puppet配置目录:

组织结构如下:

-puppet.conf     主配置文件,详细内容可执行puppet --genconfig

-fileserver.conf   文件服务器配置文件

-auth.conf        认证配置文件

-autosign.conf    自动验证配置文件

-tagmail.conf     邮件配置文件(将错误信息发送此)

-manifests        文件存储目录(puppet会先读取该目录的.pp文件,<site.pp>)

-node

-puppetclient.pp

-site.pp      定义puppet相关的变量和默认配置

-modules.pp   加载class类模块文件(include syslog)

-modules      定义模块

-syslog     以syslog为例

-file

-manifests

-init.pp    class类配置

-templates    模块配置目录

-syslog.erb   erb模块

Puppet第一个执行的代码是/etc/puppet/manifest/site.pp,因此这个文件必须存在,而且其他的代码也要通过该文件来调用

touch /etc/puppet/manifest/site.pp

没有此文件puppet master无法启动,配置后面在定义

Service puppetmaster start   启动puppetmaster

Netstat -antlp |grep ruby

Tcp      8140      listen 1596/ruby

Client端:

只需安装puppet即可,安装方法同server端:yum install -y puppet

##客户端连接到puppet master:

Puppet agent --server=desktop1.example.com --no-daemonize --veibose

Info: creating a new SSL key for desktop2.example.com

Info:  caching certificate for ca

Info:  cteating a new SSL certificate request for desktop2.example.com

Info(information)的缩写 信息 知料 情报 通知

Client向master发出证书验证请求,然后等待master签名并返回证书

参数 --server指定了需要连接的puppet master的名字或是地址,默认连接名为puppet的主机

如果修改默认连接主机可以修改/etc/sysconfig/puppet文件中的PUPPET_SERVER=puppet选项

参数 --no-daemonize是puppet客户端运行在前台

参数--verbose使客户端输出详细的日志

在master端:

Puppet cert list    显示所有等待签名的证书

puppet cert sign desktop2.example.com   签名证书

## 如果同时签名所有证书,执行以下命令:

Puppet cert sign --all

Puppet cert clean desktop2.example.com  删除签名证书

在对证书签名后的两分钟后,在agent端上可以看到如下输出:

Info:caching certification for desktop2.example.com

Starting puppet client version 3.0.0

Info:caching certificate_revocation_list for ca

Info:applying configuration version ‘1349536603’

Finished catalog run in 0.13 seconds

自动验证:

在server端,编译puppet.conf文件:

Vim /etc/puppet/puppet.conf

[main]

Autosign = true 允许所有客户端认证

/etc/puppet 目录下创建autosign.conf文件,内容如下:

Vim /etc/puppet/autosign.conf

*.example.com  表示允许所有example.com域的主机

Service puppetmaster reload

在client端只需执行:

server puppet start

在实际中有时会修改client端的主机名,这样就需要重新生成证书:

1 在server端执行:puppet cert --clean desktop2.example.com

你要删除的原client端主机名

2 在client 端执行 : rm -fr /var/lib/puppet/ssl/*

Puppet agent --server=puppet.example.com

Puppet资源定义

一下资源均可在

 

server1

装8个软件 在打开服务 /etc/init.d/puppertmaster start

server2

装7个软件 在打开服务 /etc/init.d/puppert start

发送请求 puppet agent --server server1.example.com --no-daemonize -vt

server1

puppet cert list   显示所有的等待签名的证书

puppet cert list --all

puppet cert sign server2.example.com  ##发送证书

在server2上

puppet agent --server server1.example.com --no-daemonize -vt

## 查看发送的证书

在server3 上

装7个软件

在server1 上cd /etc/puppet

vim autosign.conf(自创文件)

*.example.com

vim puppet.conf

在【main】目录下加  autosign = true

/etc/init.d/puppetmaster reload

在server3

puppet agent --server server1.example.com --no-daemonize -vt

### 即可发送请求成功

在server1

puppet cert list --all

puppet cert clean server2.example.com

puppet cert list --all

在server2

puppet agent --server server1.example.com --no-daemonize -vt

###  会有报错  因为修改了配制文件 得到了认证 发送请求自动成功

cd /var/lib/puppet/ssl  rpm -qf /var/lib/puppet/ssl  ls  rm -fr *

删除之后 在向master发送认证请求 就不会报错了 若再有报错就重启一下puppetmaster  reload

在server1

puppet cert list --all 即可看到三个证书请求

在server1

cd manifests/   vim site.pp  (自创)

file {

"/tmp/testfile":

content => "www.westos.org"

}

在server2

puppet agent --server server1.example.com --no-daemonize -vt 即可

server1变动的东西cat /tmptestfile    md5sum /tmp/testfile

vim /tmp/testfile   随便加一些东西在发送请求可看到变动

puppet agent --server server1.example.com --no-daemonize -vt

在cat /tmp/testfile 会看到server2的/tmp/testfile 文件已经被主服务器更改了

server2受server1操纵

时间: 2024-10-13 16:24:12

Puppet集中配置管理系统的相关文章

实战Puppet 集中配置管理系统(3)——Puppet dashboard与nginx+passenger安装配置

     本次实验内容紧接前两次实验,第一节内容主要介绍PUPPET的安装认证与资源定义,第二节主要写apache与nginx模块的应用,本次介绍Puppet dashboard与nginx+passenger 的安装,Puppet dashboard 是用以 web 方式管理 puppet.puppet 默认使用基于 Ruby 的WEBRickHTTP 来处理 HTTPS 请求,单个服务器使用Apache/Nginx+Passenger 替换掉 WEBRickHTTP,Passenger 是用

&lt;Puppet 集中配置管理系统RHEL6&gt;

Puppet 集中配置管理系统 puppet 是一个配置管理工具, 典型的, puppet 是一个 C/S 结构, 当然,这里的 C 可以有很多,因此,也可以说是一个星型结构. 所有的 puppet 客户端同一个服务器端的 puppet 通讯. 每个puppet 客户端每半小时(可以设置)连接一服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet 客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息. 下图展示了一个典型的 puppe

Puppet 集中配置管理系统

1.什么是Puppet?  puppet 是一个配置管理工具, 典型的, puppet 是一个 C/S 结构, 当然,这里的 C 可以有很多,因此,也可以说是一个星型结构. 所有的 puppet 客户端同一个服务器端的 puppet 通讯. 每个puppet 客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet 客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息 2.puppet 的细节和原理 pu

学习笔记--Puppet集中配置管理系统

实验环境:server6:server端 Server7:client端 须保证server端与client端存在解析,并且时间一致,火墙与selinux关闭 1.安装 Server端:yum install -y puppet-server-3.8.1-1.el6.noarch.rpm puppet-3.8.1-1.el6.noarch.rpm facter-2.4.4-1.el6.x86_64.rpm hiera-1.3.4-1.el6.noarch.rpm rubygem-json-1.5

PUPPET集中配置(一)

PUPPET集中配置管理系统较之于其他管理工具具有稳定性,能够管理服务器的整个管理周期,并使其配置有条不紊,会让你的系统同配置要求保持一致.本次通过 C/S 架构的配置使用Puppet 自带的语言来配置 Server 上的文件系统,Cron任务等,然后在各个服务器实现配置.通过对 Manifests 内 Nodes 与 Site.pp 等配置的编辑和修改,只需在 Server 端进行简单的编辑就可以实现集中配置管理.在 Nginx配置时, Nginx 会在启动时直接调用Puppet,而默认每半个

[系统开发] 配置管理系统

一.用途介绍 对于依赖开源平台提供互联网服务的公司而言,为了维持业务正常运转,每天需要管理不同主机的大量配置文件:为了提高管理效率,很多公司采用了 Puppet 对配置进行统一管理.但是对于 Puppet 服务器的管理一般也是基于配置文件的方式,不仅容易出错,不方便,而且缺乏一套审核的机制.如果错误的配置被节点应用,那么造成的损失也是很大的. 出于上面的考虑,我建立了一套 Web 的配置管理系统,把它放置在 SVN 与 Puppet 之间,用于配置的审计,同时还加入了很多自动化管理的功能,比如:

CMDB与自动化运维,配置管理系统三大功能

运维主要工作责任是管理服务器,一般有基础运维和应用运维,应用运维面向业务线 cmdb即配置管理系统三大功能 1,代码的自动上线 2,监控系统 3,自动装机系统 目标: 收集服务器的信息 (cpu, 内存, 网卡, 硬盘等) 实现方式: 1. linux命令获取cpu, 内存,网卡 2. python执行linux的命令 subprocess模块 getoutput函数 agent db 数据清洗分析API 通过requests向API发送 部署在 服务器 上脚本文件 wed界面缺点:每台部署ag

[转载] zookeeper应用——集中配置管理系统的实现

转载自http://blog.csdn.net/huangfengxiao/article/details/8844239 1 场景描述 参考http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html,实现自己的集中配置管理系统. 术语:配置管理(Configuration Management) 一个带配置的服务程序,部署在若干台机器上,如果配置发生了变化,接下去要进行的操作是停止所有机器上的该程序,修改

360 QConf配置管理系统简易部署和使用 | 峰云就她了

360 QConf配置管理系统简易部署和使用 | 峰云就她了