一、Puppet 简介
1、Puppet的用途
Puppet是开源的基于Ruby的系统配置管理工具,依赖于C/S的部署架构。主要开发者是Luke Kanies,遵循GPLv2版权协议。从1997年开始Kanies参与UNIX的系统管理工作,Puppet的开发源于这些经验。因为对已有的配置工具不甚满意,从2001年到2005年间,Kanies开始在Reductive实验室从事工具的开发。很快,Reductive实验室发布了他们的旗舰产品——Puppet。
2.、Pupput的特性
许多系统配置管理工具工作的方式非常类似,如cfengine。是什么让Puppet与众不同?
Puppet的语法允许你创建一个单独脚本,用来在你所有的目标主机上建立一个用户。所有的目标主机会依次使用适用于本地系统的语法解释和执行这个模块。举例:如果这个配置是在Red Hat服务器上执行,建立用户使用useradd命令;如果这个配置是在FreeBSD主机上执行,使用的是adduser命令。
Puppet另一个卓越的地方是它的灵活性。源于开源软件的天性,你可以自由的获得Puppet的源码,如果你遇到问题并且有能力的话,你可以修改或者加强Puppet的代码去适用于你的环境。另外,社区开发者和捐献者还在不断增强Puppet的功能。一个大的开发者和用户社区也致力于提供Puppet的文档和技术支持。
Puppet也是易于扩展的。定制软件包的支持功能和特殊的系统环境配置能够快速简单的添加进Puppet的安装程序中。
二、Puppet 组织结构
安装Puppet后,在/etc/puppet下tree就可以看到
三、Puppet工作方式与流程
1、Puppet的基本工作流程
(1)、定义
(2)、模拟
(3)、执行
(4)、报告
2、Puppet的详细工作流程
(a)agent把节点名与facts信息发送给master
(b)master通过site.pp中包含的node.pp判断agent要做什么,将所需要的class类信息编译后存入catalog并发送给agent。
(c)agent对catalog进行代码验证(检测语法及错误)并执行,执行信息、结果写入日志
(d)agent完成执行,系统达到预期状态,把结果及执行数据返回给master
客户端与服务器端的安全认证
- Puppet通信都采用SSL安全加密协议,以保障所有数据传输的安全性。
- Puppet Master 在启动后会向自己签发证书和key。可以在/var/puppet/ssl或/var/lib/puppet/ssl目录下看到它们
- Puppet Agent 在运行puppet apply--test 时添加参数--verbose 可以在客户端终端看到申请证书的详细过程
- Puppet Master 同样可以使用puppetcert list查看申请证书的客户端列表。使用命令puppetcert sign agent_name来签发证书。
- 如果Master一直不签发证书,客户端会每2分钟请求一次。