天天看点

《Puppet实战手册》——1.5 创建去中心化Puppet架构

本节书摘来自异步社区《puppet实战手册》一书中的第1章,第1.5节,作者:【英】john arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

有些系统分散管理时会工作得更好。

使用puppet最常见的方法就是运行一台puppet master服务器,puppet客户端连接到puppet master并接收各自的配置清单。然而,puppet master并不是必需的,可以直接在配置清单文件上运行puppet apply命令来应用变更。

换句话说,如果能安排适当的清单文件分发至客户端上,就可以使用puppet直接执行而不需要通过puppet master来控制。这将消除由于仅有一台主服务器导致的性能瓶颈,也消除了单点故障。同时,这也避免了添加新的客户端时颁发ssl签名证书的问题。

有很多方法可以将清单文件分发至客户端,但是git(或其他版本控制系统)为此做了大量工作。用户可以在本地副本中编辑清单,然后提交至git,并推送至中心仓库。在那里,它们会自动分发至客户端。

准备工作

如果puppet配置清单没有存放在git中,参考上面步骤将清单加入git中管理。

此时,需要第二台机器来检出puppet仓库的副本。如果使用ec2实例,则创建另一个实例,并给它取个主机名,如cookbook2。

操作步骤

具体步骤如下。

1. 在新机器上检出github仓库。

2. 参照下面的内容,修改manifests/nodes.pp文件:

3. 运行以下命令:

工作原理

新机器上已经创建了一个puppet仓库的副本。

在运行puppet前,必须首先在配置清单中针对cookboo2创建节点声明。

现在应用这些配置清单,让它们生效。

<code>ubuntu@cookbook2:~/puppet$ sudo puppet apply manifests/site.pp</code>

puppet找到cookbook2的节点声明,并应用与之前用于cookbook相同的配置清单:

更多参考

此处已经将puppet基础设施从一台机器扩展到了另外一台,现在可以将其扩展到任意多台。只需要检出git仓库,并执行puppet apply命令。

这是一个非常好的方法,不需要复杂的配置,也不用多余的机器作为puppet master,就可以将现在的机器交由puppet管理。笔者的很多客户都已经使用了这种基于git的基础设施,它简单、易于扩展和维护。

需要考虑的一个改进就是要让每台机器自动从github拉取修改并使用puppet应用这些修改。然后要做的就只是推送变更至github,变更的内容就会在某一个时间部署至所有puppet管理的机器。接下来,读者将在下一节看到如何做到这一点。