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

Как выполнить скрипт только после того, как повар обновит все узлы?

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

В рецепте, который развертывает исполняемый файл, я бы рассмотрел возможность сохранения новой версии программного обеспечения в атрибуте узла после того, как исполняемый файл был развернут. Затем в отдельном рецепте выполните поиск по этим узлам и убедитесь, что все результаты содержат только новую версию программного обеспечения, то есть:

if search(:node, 'roles:role_for_your_app_servers').reject do |n|
  n['software']['version'] != target_version
end.empty?

  do_database_update

end

Чтобы это работало, вам нужно сначала убедиться, что все ваши узлы включают атрибут версии программного обеспечения, прежде чем добавлять эту функцию.