Назад | Перейти на главную страницу

шеф-клиент задерживается до конца рецепта

У меня есть рецепт, который выглядит так:

service "xyz" do
  :action nothing
end

file "xyz.conf" do
   ...
   notfies :restart, "service[xyz]", delayed
end

file "xyz.props" do
   ...
   notfies :restart, "service[xyz]", delayed
end

Как вы можете видеть, отложенное уведомление - это хороший способ убедиться, что перезапуск запускается только один раз и только при изменениях, но моя проблема заключается в том, что уведомления с задержкой запускаются в конце запуска шеф-клиента, у меня есть рецепты, следующие за этим, которые нуждаются в служба перезапущена, есть ли способ выполнить перезапуск в конце рецепта?

Сейчас я смотрю, возможно, исследую run_context.delayed_notification_collection чтобы узнать, получает ли служба уведомление и использует ли это в охране.

так что в конце рецепта я могу сделать:

service "xyz" do
  action :restart
  only_if notification_for("service_restart")
end

Есть ли у кого-нибудь идеи получше?

Я завершил использование node.run_state, чтобы установить флаг для перезапуска. Мои ресурсы, изменившие конфигурацию, будут уведомлять рубиновый блок, который в основном устанавливает флаг, например node.run_state [: SVC_restart] = true. И затем, в конце, служба будет создана с действием: перезапуск и охраной, чтобы проверить, существует ли и установлен ли этот флаг.