厨师客户推迟到配方结束

我有一个如下所示的配方:

service "xyz" do :action nothing end file "xyz.conf" do ... notfies :restart, "service[xyz]", delayed end file "xyz.props" do ... notfies :restart, "service[xyz]", delayed end 

正如你可以看到延迟通知是一个很好的方法,以确保重新启动只触发一次,只有当更改,但我的问题是延迟通知在厨师客户端运行结束时触发,我有食谱后,这需要服务重新启动,有没有办法我可以做配方结束重新启动?

目前我正在研究可能检查run_context.delayed_notification_collection来查看服务是否被通知并在警卫中使用。

所以在配方结束时我可以这样做:

 service "xyz" do action :restart only_if notification_for("service_restart") end 

有没有人有更好的想法?

我结束使用node.run_state设置重新启动标志。 我的资源,修改后的configuration会通知一个ruby块,基本上设置一个标志,如node.run_state [:SVC_restart] = true。 然后最后服务将被创build:重新启动动作和一个警卫检查是否存在和设置标志。