Chef infra chef服务器如何知道节点';应用了的角色,其服务是否已启动并运行?

Chef infra chef服务器如何知道节点';应用了的角色,其服务是否已启动并运行?,chef-infra,Chef Infra,例如,如果节点的角色定义为apache2,并且假设chef客户端每隔X秒检查一次更改,那么chef服务器如何知道角色已成功应用,以及apache2(httpd)定义的服务已启动/运行 上面的用例是执行一些编排,其中分配了角色,然后进行某种循环检查,以查看服务是否已完成并正在运行,然后再进行下一阶段的分配 考虑启用该处理程序,代码将设置一些可用于确定上次chef客户端运行的状态的值 Chef是一种声明性语言。我们必须假设,如果配方说明服务应该在运行,并且客户端没有错误地完成,那么服务确实在运行 另

例如,如果节点的角色定义为apache2,并且假设chef客户端每隔X秒检查一次更改,那么chef服务器如何知道角色已成功应用,以及apache2(httpd)定义的服务已启动/运行

上面的用例是执行一些编排,其中分配了角色,然后进行某种循环检查,以查看服务是否已完成并正在运行,然后再进行下一阶段的分配

考虑启用该处理程序,代码将设置一些可用于确定上次chef客户端运行的状态的值

Chef是一种声明性语言。我们必须假设,如果配方说明服务应该在运行,并且客户端没有错误地完成,那么服务确实在运行

另一个选项是使用


这将确保所有节点都正确聚合。

我不同意。理解每种工具的领域对于做出正确的假设很重要。Chef服务器永远不会知道服务是否已启动并正在运行。它所能说的最多就是服务没有失败。这是有区别的。厨师长将知道命令
service httpd start
是否返回
0
。它无法知道这是否真的启动了web服务器,或者是否很快就崩溃了,或者是否有人或其他进程停止了它。为此,您需要监控。Chef是一项融合技术。您的配方描述了节点所需的状态,正在运行的chef client将尝试采取正确的操作,以确保服务器与该状态匹配。这对我来说已经足够了。显然,如果我不信任chef,我可以编写自己的chef资源或实施额外的监控。。。为什么不呢?一个人永远不会有足够的监控。。。。例如,谁监视chef客户端正在运行的服务器?
knife ssh "role:webserver" "sudo chef-client"