Шеф-повар - нужна легкая "очередь" (на всю жизнь по рецепту)
В настоящее время у меня есть рецепт шеф-повара, с помощью которого я размещаю сообщения в чате внутри цикла:
artifacts.each do |artifactItem|
# Deploy the artifact
#...
# Post to chat
chat_post "deployed artifact #{artifact_name}"
end
Результат в моем чате выглядит так:
chef [BOT]
deployed artifact A
chef [BOT]
deployed artifact B
chef [BOT]
deployed artifact C
Я задаюсь вопросом - есть ли в шеф-поваре простой механизм "очереди", в котором я могу ставить в очередь свои сообщения о развертывании и публиковать их все сразу (после завершения моего рецепта)? Если так, как будет выглядеть код.
2 ответа
Самый простой способ сделать это - использовать систему отложенных уведомлений.
artifacts.each do |artifactItem|
# Deploy the artifact
#...
# Post to chat
r = chat_post "deployed artifact #{artifact_name}" do
action :nothing
end
ruby_block "notification for #{artifact_name}" do
block { }
notifies :someaction, r
end
end
Или что-то в этом роде, убедитесь, что вы проверили, какое действие использовать для уведомления (независимо от действия по умолчанию на chat_post
ресурс есть. Также это предполагает chat_post
это ресурс, а не какой-то вспомогательный метод. Если это не ресурс, вам может понадобиться два ruby_blocks
,
Ты можешь использовать node.run_state
сохранить временные данные, доступные для текущего запуска шеф-повара.