一、puppet简介概念:

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

自动运维工具之puppet_其他


二、稳定性
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_其他_02

  1.客户端 Puppetd 向 Master 发起认证请求,或使用带签名的证书。

  2.Master 告诉 Client 你是合法的。

  3.客户端 Puppetd 调用 Facter,Facter 探测出主机的一些变量,例如主机名、内存大小、IP 地址
     等。Puppetd 将这些信息通过 SSL 连接发送到服务器端。

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

  5.客户端接收到“伪代码”,并且执行。

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

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

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

四、puppet工作:

  1. 定义:使用puppet特定的语言定义基础配置信息,通常把这些配置信息写在Moudules中。

  2. 模拟:在配置执行之前检测代码,但并不是真正的执行。

  3. 执行:按步骤一定义的配置自动部署。检测并记录下所发生变化的内容。

  4. 报告:将期待的变化、实际发生的变化以及任何修改发送给报告系统。