Puppet 组件如何相互协作?

How do puppet components cooperate with each other?

我使用的是 Puppet 开源版。

我发现 Puppet 3.7.5 中有几个组件:

但不知道他们是怎么合作的。我见过一个简单的体系结构,它只包括 puppet-master 和 puppet-agent。

至于其他组件,不知道是怎么配合的。谁能给我详细的合作方式或者数据流图吗?

完全公开我在 PuppetLabs 工作!

棋子的基本分类:

  • 傀儡代理人

每个节点上的 Puppet 代理向 Puppet 主机发送关于节点配置的事实——详细说明硬件、操作系统、包版本和其他信息。基本上这将每 n 分钟(默认为 30)启动一个 Puppet 运行,然后将更改报告给 master。

  • 人偶大师

Puppet master 使用代理提供的事实来编译有关每个节点应如何配置的详细数据(称为目录),并将其发送回 Puppet 代理。

  • MCollective

MCollective 是 Puppet 的编排工具,主要用于以编程方式在服务器集群上执行操作。想想 Fabric、Capistrano 等,但级别更高。 More detail here

  • 希拉

Hiera 是 Puppet 的分层key/value 商店。它允许您通过将数据保存在 Hiera 中并将代码保存在 Puppet 中来实现关注点分离。 More detail here

  • 木偶数据库

PuppetDB 是一个数据仓库,用于缓存 Puppet 生成的数据,并允许您通过 API.

利用该数据

这是一张图表,说明它们如何在企业版中组合在一起:

OSS 不会有控制台,但其余大部分也适用于 OSS 版本。阅读更多 here.

关于进一步的问题,有很多 documentation, IRC rooms and learning materials