边用边学Puppet 系列 之 puppet 工作流程

1,139 阅读2分钟

一、Puppet 是什么?

Puppet是一个IT基础设施自动化管理工具,它能够帮助系统管理员管理基础设施的整个生命周期: 供应(provisioning)、配置(configuration)、联动(orchestration)及报告(reporting)。它既可以单机运行,也可以通过C/S的方式运行,大多数场景下还是用C/S方式来运行Puppet。

puppet-cs.png

二、 C/S架构下的工作流程(图片来自《Puppt权威指南》)

image.png

执行测试

puppet agent

puppet agent --server puppetserver.test.laobing.cn --test

image.png

puppet server

image.png

下面具体分析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)流程结束。

puppet 名词解释

  • 资源:是puppet的核心,通过资源申报,定义在资源清单中。相当于ansible中的模块,只是抽象的更加彻底。
  • 类:一组资源清单。
  • 模块:包含多个类。相当于ansible中的角色
  • 站点清单:以主机为核心,应用哪些模块。