本节书摘来自华章计算机《Puppet权威指南》一书中的第2章,第2.4节,作者:王冬生著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.4 Puppet 工作流程
Puppet既可以单机运行,也可以通过C/S的方式运行。不过大多数场景下还是用C/S方式来运行Puppet。如图2-2所示为C/S场景下Puppet的工作流程图。
下面具体分析Puppet的工作流程。
1)Agent访问Master建立访问信任关系,流程中包括Master对Agent证书授权签名,并准许Agent访问Master资源。
2)建立信任关系后Master调用Agent的Facter,探测出Agent主机的一些机器变量,如主机名、内存大小、IP地址、CPU和负载等信息。Agent将这些信息通过SSL加密传输发送到Master,Master以变量名形式获取这些信息并使用。
3)Master接收Agent的主机信息请求,并将它们发送到本机的manifests或ENC(外部节点分类器),ENC包括Python、Ruby和Shell等,只要支持yaml格式都可以,然后进行配置信息查询。
4)根据Agent的HOSTNAME匹配到相应的Node(节点), 整个解析过程分为几个阶段,首先是语法检查,如果有语法错误则停止报错,否则继续解析最终编译生成Catalog。
5)Agent接收到Catalog后,在本机应用Master的配置信息。
6)根据接收到的Catalog中的信息判断Agent在执行时有没有File文件要从Master推送到Agent,如果有则向Master Fileserver发起请求获取文件。
7)将Agent的信息以报告形式上报Master。读者需要注意Puppet 2.6和Puppet 2.6以下版本默认并不会主动推送报告到Master,需要设置puppet.conf配置文件中的reports=true参数。Puppet 2.7和Puppet 2.7以上版本默认开启此功能。
8)流程结束。