![活跃的傀儡特工如何处理倒下的傀儡大师?](https://linux22.com/image/621704/%E6%B4%BB%E8%B7%83%E7%9A%84%E5%82%80%E5%84%A1%E7%89%B9%E5%B7%A5%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E5%80%92%E4%B8%8B%E7%9A%84%E5%82%80%E5%84%A1%E5%A4%A7%E5%B8%88%EF%BC%9F.png)
假设 Puppet 代理正在刷新,而我停止了 Puppet Master 服务。这是否可能会导致不完整或损坏的设置被推出,就像我下面描述的一样?
背景:
我正在对我的 puppet 配置文件使用持续集成和版本控制(Bamboo 和 Stash)。
我在重新部署过程中遇到了一些问题。当我为生产分支执行拉取请求时,这个问题最为明显,但它也会在其他地方发生。Puppet 代理可能试图访问在被推回之前已被删除的资源文件。虽然这种情况很少见,但已经造成了各种混乱,尤其是在使用文件语句推回整个目录的模块中。
我想到的最明智的做法是在部署期间停止 Puppet Master 服务,然后重新启动它,但我没有看到在 PuppetMaster 仍在使用时停止它会产生什么后果。
答案1
对于递归部署来说,假设上次运行期间没有任何文件发生变化,那么这难道不是一个问题吗,因此之前设置的文件与之后的文件相同?
没错。替换文件的决定是基于客户端和服务器的 md5 哈希值的比较。如果您在运行过程中停止主服务器,它应该只会在所有剩余的文件资源上出错 - 您不会最终得到文件的部分副本。
答案2
木偶戏有几个不同的部分。
- 节点从自身检索事实,并将其发送到 Puppet 主服务器
- Puppet Master 服务器从服务器接受这些事实,并编译一个目录,该目录应在报告其事实的节点上运行。这包括所管理文件的内容。
- 该目录被发送到节点并且节点在本地应用其目录。
- 节点报告其运行
因此,根据您在此过程中的位置,运行将直接失败,或者节点的运行将继续但在报告时失败。
不应该存在您所提到的文件损坏的问题。