【发布时间】:2018-07-20 00:13:12
【问题描述】:
我们正面临一个奇怪的问题,即 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)
但是当我们检查服务器本身时,celery-workers 并没有重新启动。从服务器上的 restart_command 手动执行命令,没有任何问题。因此,似乎 Chef 出于某种原因没有执行此 restart_command:
'sv force-stop celery-worker-1 ; sv start celery-worker-1'
提前感谢您的帮助。
【问题讨论】:
标签: amazon-web-services chef-infra celery chef-recipe aws-opsworks