什么:延迟做通知?或者为什么它无法正常工作?

时间:2016-08-18 13:36:04

标签: chef

我的印象总是delayed如下

notifies :restart, 'service[nexus]', :delayed

会将服务重启延迟到运行结束。现在我注意到似乎并非如此。如下面的日志所示,重启是发送延迟并立即执行。每一次。

btw的日志非常奇怪,因为配方似乎多次运行。我ruby_block只有一个security-configuration.xml,但它在日志中出现很多次。

:delayed的目的是什么?什么延迟?

如何多次在日志中显示资源?它应该不运行一次吗?

==> default: [2016-08-18T13:24:31+00:00] INFO: ruby_block[/opt/nexus/sonatype-work/conf/security-configuration.xml] sending restart action to service[nexus] (delayed)
==> default: [2016-08-18T13:24:55+00:00] INFO: service[nexus] restarted
==> default: [2016-08-18T13:24:55+00:00] INFO: ruby_block[/opt/nexus/sonatype-work/conf/security-configuration.xml] sending restart action to service[nexus] (delayed)
==> default: [2016-08-18T13:25:13+00:00] INFO: service[nexus] restarted
==> default: [2016-08-18T13:25:13+00:00] INFO: ruby_block[/opt/nexus/sonatype-work/conf/security-configuration.xml] sending restart action to service[nexus] (delayed)
==> default: [2016-08-18T13:25:36+00:00] INFO: service[nexus] restarted
==> default: [2016-08-18T13:25:36+00:00] INFO: ruby_block[/opt/nexus/sonatype-work/conf/security-configuration.xml] sending restart action to service[nexus] (delayed)
==> default: [2016-08-18T13:25:59+00:00] INFO: service[nexus] restarted
==> default: [2016-08-18T13:25:59+00:00] INFO: ruby_block[/opt/nexus/sonatype-work/conf/security-configuration.xml] sending restart action to service[nexus] (delayed)

我正在使用Chef客户端12.4.1。

更新

所以我对延迟的理解是正确的。现在的问题是延迟不再有效的原因。这个行为也存在于其他服务,例如jenkins

==> default: [2016-08-19T06:51:56+00:00] INFO: template[/var/lib/jenkins/config.xml] sending restart action to service[jenkins] (delayed)
==> default: [2016-08-19T06:51:58+00:00] INFO: service[jenkins] restarted 

延迟重启通知的服务会立即重新启动,因此在运行期间会多次重启。现在这也导致运行失败,并且通常会重新启动消息。

==> default: STDERR: Job for jenkins.service failed because start of the service was attempted too often. See "systemctl status jenkins.service" and "journalctl -xe" for details.

这种重新启动服务的能力非常重要。为什么它不能正常工作?

1 个答案:

答案 0 :(得分:1)

它会延迟收集该资源,直到客户端运行结束。此外,如果资源被延迟多次“通知”,它将只执行一次。这对于加快厨师 - 客户运行时间非常有益。

来自Chef's docs

  

指定通知应排队,然后在chef-client运行的最后执行。