预计阅读本页时间:-
5.1.3 Puppet的基本概念及工作流程介绍
在使用任何软件之前都需要了解其工作原理,否则会给后续使用带来诸多不便。Puppet采用了非常简单的服务器-客户端(即常用的C/S)架构,所有数据的交互都通过SSL进行,以保证安全,它的工作模型示意图如图5-1所示。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
图5-1 Puppet的C/S模型图
通过图5-1可知,Puppet会使用简单的C/S模型进行交互工作,服务端称为“Puppet Master或Puppet Server”,安装在客户端的软件称为Puppet Agent。客户端主机本身被定义为一个节点,如图5-1中的backup.cn7788.com 、xen.cn7788.com 及nginx.cn7788.com 。
1.工作流程
Puppet的工作流程如图5-2所示。
图5-2 Puppet工作流程图
下面具体说明Puppet的详细工作流程:
1)客户端Puppet-Client向Puppet-Master端发起认证请求,或使用带签名的证书。
2)Puppet-Master端告诉Puppet-Client是合法的。
3)Puppet-Client调用facter,facter探测出主机的一些变量,例如主机名、内存大小、IP地址等,Puppet-Client将这些信息通过SSL连接发送到服务器端。
4)Puppet-Master端检测客户端的主机名,然后找到manifest对应的node配置,并对该部分内容进行解析。facter发送过来的信息将被当作变量处理,只有与node有牵涉的代码才会被解析,其他没牵涉的代码不解析。解析分为几个阶段,首先是语法检查,如果语法错误就报错;如果语法没错,就继续解析,解析的结果生成一个中间的“伪代码”(catalog),然后把伪代码发给客户端。
5)Puppet-Client端接收到“伪代码”,并且执行。
6)Puppet-Client端在执行时判断有没有file文件,如果有,则向fileserver发起请求。
7)Puppet-Client端判断有没有配置report,如果已配置,则把执行结果发送给服务器。
8)Puppet-Master端把Puppet-Client端的执行结果写入日志,并发送给报告系统。
根据Puppet的工作流程可以发现,它跟我们之前用的Ansible推送模式不一样,它采取的是拉取模式,即安装在节点机器上的Agent程序定期向Puppet Master(Server)服务器报备状态并拉取相应的配置信息。
2.Puppet的基础概念
为了更好地理解Puppet的工作原理,下面介绍一下Puppet中经常见到的基础概念。
·资源:Puppet涉及的资源主要有以下几种。
·file:主要负责管理文件,这里的文件是真实存在的。
·package:软件包的安装管理。
·service:系统服务的管理。
·cron:配置自动任务计划。
·exec:远程执行运行命令。
通过对这些资源进行管理和配置,就能够在复杂的分布式环境中,自动化地管理数据繁多的节点机器。
·类:类的作用是把一组资源集中在一个盒子里面一起使用,这样做的好处是方便大家写出更简洁的代码,以便于维护,它相当于资源的容器。
·模板:模板可为资源设置统一的格式。
·节点:在Puppet中,node(节点)用于区分使用不同的client客户端。
·定义:在Puppet的官方文档里是没有定义(define)这一说法的,可以将其理解为资源的组合容器。
·模块:模块是资源、类、定义的组合,相当于更强的容器,模块名必须为普通字符,这里以名为Nginx的模块举例说明,它的路径位于/etc/puppet/modules/nginx下。一般来说,Nginx模块会包含3个目录,分别为manifests、files及templates目录。
·manifests目录用于存放init.pp文件及其他配置文件,init.pp文件是模块的核心,每一个模块都必须有一个init.pp文件。
·files目录用于存放模块目录需要用到的文件。
·templates目录则包含模块可能用到的模板文件。