Chef service restart_command未在AWS opsworks instnace上运行

时间:2018-02-09 09:05:50

标签: amazon-web-services chef celery chef-recipe aws-opsworks

我们正面临着一个奇怪的问题,即Chef服务定义上的restart_command没有被执行。我们在AWS OpsWorks中有一项任务,该任务正在使用以下服务定义执行:

service "celery-worker-1" do
  action [ :nothing ]
  supports :restart=>true, :status=>true
  retries 3
  restart_command 'sv force-stop celery-worker-1 ; sv start celery-worker-1'
  if node[:opsworks][:instance][:layers].include?('celery-worker')
    subscribes :restart, "deploy_revision[testapp]", :delayed
  end
end

然后在通知文件末尾调用

  elsif node[:opsworks][:instance][:layers].include?('celery-worker')
    notifies :restart, resources(:service => "celery-worker-0", :service => "celery-worker-1")

当从OpsWorks执行此任务时,日志显示没有错误或问题:

[2018-02-09T08:33:34+00:00] INFO: Processing service[celery-worker-0] action nothing (testapp::configure line 17)
[2018-02-09T08:33:34+00:00] INFO: Processing service[celery-worker-1] action nothing (testapp::configure line 27)

但是当我们检查服务器本身时,芹菜工人没有重新启动。从服务器上的restart_command手动执行命令,没有任何问题。因此,似乎Chef由于某种原因没有执行此restart_command:

'sv force-stop celery-worker-1 ; sv start celery-worker-1'

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这意味着(a + t*(c-a), b + t*(d-b)) 为假或node[:opsworks][:instance][:layers].include?('celery-worker')未更新。对于后者,您可以在输出中看到,如果您得到类似deploy_revision[testapp]的内容,则它不会更新,因此没有通知触发器。对于图层数据,您必须手动检查。