如果节点的角色被定义为例如apache2,并假设chef-client检查每隔X秒的间隔进行更改,那么chef-server如何知道角色已成功应用以及apache2定义的服务(httpd)正在运行?
上述用例是执行一些业务流程,其中分配了角色,然后进行某种循环检查以查看服务是否已完成并正在运行,然后再继续进行下一阶段的分配。
答案 0 :(得分:2)
考虑启用lastrun处理程序,代码将设置一些node attributes,可用于确定最后一个主厨客户端运行的状态。
Chef是一种声明性语言。必须假设如果配方声明服务应该正在运行并且客户端完成而没有错误,那么服务确实正在运行。
另一种选择是使用knife command
启动厨师客户端knife ssh "role:webserver" "sudo chef-client"
这将确保所有节点都正确收敛。