debian 6 搭建puppet服务器

最近接触了debian的系统,现在要在上面部署puppet,在此记录下,其实第一次接触这个东西,也看到好多资料,都很强大,很详细,在此从一篇文章中摘取了自己想要的和自己做的结合,专做记录,所以有自己原创,但是也有别人,所以算转载了,后篇,会写出自己的东西。

puppet 简介
   
puppet官方网站: http://www.puppetlabs.com/
puppet中文wiki: http://puppet.chinaec2.com/
puppet中文论坛: http://www.puppetfans.com/
 
puppet是一种Linux、Unix平台的集中配置管理系统,所谓配置管理系统,就是管理机器里面诸如文件,用户,进程,软件包这些资源,其设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系
 
puppet使用一种描述性语言来定义配置项,配置项中被称为”资源”,描述性语言可以声明你的配置的状态---比如声明一个软件包应该被安装或者一个服务应该被启动
用puppet,可以运行一个服务器端,然后每个客户端通过ssl证书连接服务器,得到本机器的配置列表,然后更加列表的来完成配置工作,所以如果硬件配置好,在一天之内配置好上千上万台机器是很容易实现的事情,前提得大部分机器配置类似
在大规模的生成环境中,如果只有一台puppetmaster会忙不过来的,因为puppet是用ruby写 的,ruby是解析型语言,每个客户端来访 问,都要解析一次,当客户端多了就忙不过来,所以需要扩展成一个服务器组。puppetmaster可以看作一个web服务器,实际上也是由ruby提供 的web服务器模块来做的。因此可以利用web代理软件来配合puppetmaster做集群设置。
puppet 系统架构
 
Puppet是开源的基于Ruby的系统配置管理工具,puppet是一个C/S结构, 当然,这里的C可以有很多,因此,也可以说是一个星型结构. 所有的puppet客户端同一个服务器端的puppet通讯. 每个puppet 客户端每半小时( 可以设置) 连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息. 下图展示了一个典型的puppet配置的数据流动情况
 
puppet 工作流程

 

1)         客户端通过facter收集客户端信息并发送至服务端
2)         连接服务端并请求catalog日志
3)         请求节点(node)的信息
4)         从服务器端接收节点(node)的实例
5)         编译代码(包括语法检查等工作)
6)         查询是否有exported 虚拟资源
7)         如有,则从数据库接收虚拟资源
8)         接收完整的catalog日志
9)         存储catalog日志到数据库
10)       客户端接收完整的catalog日志

上面的写的介绍不错吧?下面开始自己做了。

puppet server:192.168.154.129    server.puppet.com 

puppet client:192.168.154.130    client.puppet.com

切记要同一域

下面开始安装:

server端: 

client端: 

Ps:修改/etc/defaule/puppet配置文件为yes

重启服务/etc/init.d/puppet /etc/init.d/puppetmaster

puppet 的客户端和服务器是通过ssl链接的,在服务器有一个自签名的根证书,在安装软件的时候自动生成。注意:要在安装软件之前先设置主机名,因为生成证书的时候要主机名写入证书,如果证书生成好了再改主机名,就连不上,这是很多初学者遇到的问题。每个客户端的证书要经过根证书签名才能和服务器链接。所以首先要在客户端之下面的命令来请求服务器签名证书。

记得在hosts里面写入server.puppet.com的解析关系,puppet.com是这里的域

client: puppetd --test --server server.puppet.com

 server: puppetca -s -a

查看已经授权的client: puppetca -a --list

然后查看client和server端文件的md5值,验证

这样,客户端和服务端就配置好了,可以在服务端配置好测试mainfest代码进行测试、puppetmaster的第一个执行代码是在/etc/puppet/mainfest/site.pp 因此这个文件必须存在,而且其他的代码也要通过代码来调用,现在,建立一个最简单的site.pp文件,看下:

 client:执行puppetd --test --server server.puppet.com

查看/tmp

上面的应该看见了吧,下面来解决实际情况:

比如:1>新加入一台机器,加入puppet.com域的时候,不能每次都让server来手动“批准”吧,怎么让他自动认证呢?

在服务器端puppet.conf配置文件里[main]下方加入autosgin = true

重启puppetmaster服务即可

这样客户端执行puppetd --test --server server.puppet.com 服务器会自动认证

2>有些时候需要修改主机名,我们需要重新配置认证

(1)、首先需要在客户端删除rm -rf /var/lib/puppet/ssl/

(2)、然后在服务器端删除客户端的证书:puppetca --clean client.puppet.com

(3)、然后在客户端执行puppetd --test --server server.puppet.com即可。

 

你可能感兴趣的:(puppet,Debian6,debianpuppet)