Служба 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) тогда он не обновляется, поэтому нет триггера уведомлений. Для данных слоев вы должны проверить это вручную.

Другие вопросы по тегам