Puppet由一些互相协作的基本组件构成。
Manifests文件
Manifests文件存储Puppet从机的配置细节,使用Puppet语言编写,保存在Puppet主机中。Manifests文件的扩展名是.pp
,Manifests文件可以理解为由Puppet执行的程序。
例如: 你可以在Puppet主机中创建一个Manifests文件,该文件被Puppet执行时,会在所有Puppet从机上安装Apache服务器。
Module/模块
Puppet模块是Manifests文件和数据(例如状态/Facts、文件和模板)的集合,具有特定的目录结构,是自包含的。模块对于组织Puppet代码非常有用,通过模块可以把代码分散到多个Manifests文件。
Resource/资源
资源是系统配置的基本单元,比如特定软件包。
Facter
Facter收集Puppet从机的基本信息(状态/Facts),比如硬件细节、网络设置、操作系统类型和版本、IP地址、MAC地址、SSH密钥等等。这些信息可以在Puppet主机中的Manifests文件里作为变量使用。
Mcollective
Mcollective是一个任务执行框架,允许在多个从机上并行执行多任务。
它可以执行以下任务:
- 与从机集群交互
- 可以对从机广播,所有从机会同时收到请求。请求可以附带过滤器,符合条件的从机才能接受请求。
- 使用命令行工具调用从机。
- 编写关于网络设施的自定义报告。
Catalog/编目
编目(Catalog)包含了从机上的最终配置信息。编目(Catalog)由Puppet主机根据Manifests文件、从机的状态信息(Facts)、以及其他一些外部信息编译生成。如果把Manifests文件理解为Puppet程序的源代码,编目(Catalog)就是编译后的可执行程序。
最终,当从机请求时,主机将编译后的编目(Catalog)发送给从机。