Chef infra 厨师长客户端取消通知延迟

Chef infra 厨师长客户端取消通知延迟,chef-infra,Chef Infra,我想知道是否有办法取消重新启动设置为延迟的服务的通知。例如,下面是一个配置更改代码块: template "/etc/myapp/myconfig.conf" do source "myconfig.conf.erb" mode 0600 notifies :restart, "service[myapp]", :delayed end 但在我的食谱的最后,我有一些逻辑,如果满足某些条件,我会禁用这个应用程序。这可以很好地工作,但是在禁用之后(在chef运行结束时),延

我想知道是否有办法取消重新启动设置为延迟的服务的通知。例如,下面是一个配置更改代码块:

template "/etc/myapp/myconfig.conf" do
    source "myconfig.conf.erb"
    mode 0600
    notifies :restart, "service[myapp]", :delayed
end

但在我的食谱的最后,我有一些逻辑,如果满足某些条件,我会禁用这个应用程序。这可以很好地工作,但是在禁用之后(在chef运行结束时),延迟的重新启动请求将启动并重新启动进程。我想知道如果服务被禁用,是否有办法告诉chef取消所有重启请求。想法?

这是可以做到的,但并不漂亮。您需要进入[
run_context
][1]并获得[
delayed_notification_集合
][2]。然后可以删除通知。但请注意,这是相当深入的厨师内部,这是非常不鼓励


请看一个例子。它只在测试厨房测试能够发挥作用的范围内进行测试。

是的,正如你所说,这可能会起作用,但我同意这将是非常不鼓励的。我研究过使用订阅,但问题是我们有很多模板和食谱文件,可能会影响重启,这似乎也是一种黑客行为。也许这只是变成了opscode人员在执行延迟操作之前检查并查看服务是否在配方结束之前被禁用的功能请求。在其他地方提到过,但我认为这不会起作用,因为上面讨论的原因我只是添加了一个指向github repo的链接,代码正在尝试。事实上,它确实有效。但这很难看,必须在收集阶段(以及声明通知之后)进行。换句话说,对于一个丑陋的问题,这是一个糟糕的解决方案。