Puppet 是一个开源系统配置管理工具,它有着简明的架构以及良好的扩展性;同时,Puppet 还提供了自有的系统配置描述语言以及完善的公用库,非常适合用于管理和部署大规模集群系统。
Puppet 的系统架构
Puppet 使用简明的 C/S 架构,分为 Puppet Server 和 Puppet Node。
图1. puppet系统架构Puppet Server
Puppet Server 是配置和管理整个集群的大脑,管理着所有节点。系统管理员在 Puppet Server 上用 Puppet 特有的配置描述语言为各个节点编写配置文件 (manifest),配置文件描述了节点的目标状态——资源的集合。这些资源可以是文件、服务、软件包等等。各个节点会周期性的查询 Puppet Server,获得自己的最新配置文件,并且在本地应用这些配置文件,使得自身的资源和状态达到配置文件要求。
Puppet Node(Agent)
被 Puppet Master 管理着的计算机节点称为 Puppet node。Puppet node 会周期性的查询 Puppet Master,来获取自己的配置文件,并且在本地应用。在每次应用配置文件之后,Puppet node 会提供上传一份报告给 Puppet Master,以便以后的统计和分析。系统管理员也可以手动地在 Puppet Node 上执行命令,让 Puppet Node 立即查询 Puppet Server 获取自身最新的配置文件,并且在本地应用。
Puppet 的工作流程
Puppet 的工作流程可以概括成这几步:定义、模拟、应用、报告。
图 2. Puppet 的工作流程定义 (Define)
管理员为各个节点编写配置文件,配置文件中定义了该节点所需要的资源的集合以及资源之间的关系。这些资源可以是文件、服务、软件包、可执行的命令等等。Puppet 内置的配置管理语言对这些资源提供了较为完整的底层抽象,减轻了编写配置文件的复杂度。
模拟 (Simulate)
根据节点的配置文件,我们可以了解到该节点需要什么样的资源并且处于什么样的状态。配置文件描述了节点的状态,而不是具体的配置步骤。Puppet 会将配置文件 Manifest 编译成更为详细的一种配置文件 Catalog。通过 Catalog,Puppet 会根据节点的当前状态,模拟出节点达到该目标状态所需要的步骤。
应用 (Enforce)
节点周期性地向 Puppet Server 来请求自己最新的配置文件。Puppet 会将节点的实际状态与节点配置文件中所表述的目标状态做比较,并根据得到的所需要的步骤,对节点执行操作,使其达到配置文件所表述的状态。
报告 (Report)
当每次应用执行过后,节点都会给 Puppet Server 发送一份运行报告,报告该节点的状态,以便以后的分析和统计。
Puppet 配置语言介绍
Puppet 配置管理语言中的核心概念是资源,资源可以是一个软件包,一个文件,一种服务等等。一个节点的状态可以用资源的集合以及他们之间的关系来表示。管理员不需要详细地描述配置和部署系统的具体步骤,Puppet 只需要管理员来描述系统的目标状态,即资源的集合以及它们之间的关系。Puppet 内置的执行引擎会根据节点的现有状态将配置文件转化为具体的执行步骤并且执行。
在 Puppet 中,类是一系列相关资源的集合;模块是一系列类的集合。Puppet 内置提供了一些常用的类和模块,同时用户可以定义自己的类和模块。通过类和模块使用,配置模块重用和共享变的非常容易。
安装(Debian)
在master上,需要运行:
apt-get install puppet puppetmaster facter
在agent上,只需要安装下面这些包:
apt-get install puppet facter
实战
配置rsync模块,包含以下功能:
1. 确 保 系 统 安 装 了 rsync 包。
2. 设 置 rsync 的 配 置 文 件。
参考链接
https://www.bookstack.cn/read/deployopenstackwithpuppet/base_modules-puppet-rsync.md
网友评论