我可以在Linux服务器上安装两个Chef客户端,以便两个客户端都可以管理Linux服务器吗?

时间:2018-07-27 07:41:11

标签: linux chef

我想在Linux服务器上安装一个Chef客户端,以通过执行shell命令来管理服务器。在运行列表的配方之一中有一个重新启动命令时,其余配方在服务器重新启动后不会继续执行。由于找不到解决方法,我想知道是否可以在Linux服务器上安装两个Chef客户端并执行不同的配方,以便其余配方可以在服务器重新启动后继续执行。有人可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:0)

通常将两个客户端放在单个设备上,或者将两个配置管理工具放在同一设备上是一个坏主意。即使您能够做到,但从确定何时更新前进的方向将使您容易犯错误的认知负担会增加。

正确的方法是在配方中添加重启标志;在调用重新启动资源之前,您需要设置一个标志(可以是文件内容甚至存在,环境变量或任意数量的其他持久数据对象),以指示已执行重新启动。如果它是周期性的,则可以改用上次使用其atime属性访问文件的方式。然后,围绕需要重新启动的步骤执行逻辑,如果设置了标志no-restart标志,则防止重新启动;如果设置了重新启动标志,则触发该重新启动。这样一来,您将拥有一个厨师,其厨师将在重新启动时跳过部分运行列表,然后在另一次运行中跳过不必要的重新启动过程。

另一个不错的选择是只是更加注意如何订购资源。如果重新启动位于您的最后一个运行列表项中,并且以:delayed的时间通知您,则它将是最后一次运行的资源,这意味着其余的配方已经收敛。如果您每次都需要一次完全收敛,那么您应该选择该选项。

选项1是一个以Ruby为中心的解决方案,将需要您接受开发工作。选项2更纯净,带有一些Ruby,您可以在以下文档中阅读有关通知资源的信息:https://docs.chef.io/resource_common.html#notifications

在选项3中,您可以在厨师运行期间更改运行列表,可以用来删除需要重新启动的配方,但是我认为您将从选项1或2中受益更多。