我的印象总是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.
这种重新启动服务的能力非常重要。为什么它不能正常工作?
答案 0 :(得分:1)
它会延迟收集该资源,直到客户端运行结束。此外,如果资源被延迟多次“通知”,它将只执行一次。这对于加快厨师 - 客户运行时间非常有益。
来自Chef's docs:
指定通知应排队,然后在chef-client运行的最后执行。