Служба Chef restart_command не работает в AWS opsworks instnace
Мы сталкиваемся со странной проблемой, когда команда restart_command для определения службы Chef не выполняется. У нас есть задача в 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 ответ
Это будет означать, что либо node[:opsworks][:instance][:layers].include?('celery-worker')
ложно или deploy_revision[testapp]
не обновляется. Для последнего вы можете увидеть в выводе, если вы получите что-то вроде deploy_revision[testapp] (up-to-date)
тогда он не обновляется, поэтому нет триггера уведомлений. Для данных слоев вы должны проверить это вручную.