Интеграция в реальном времени с шеф-поваром Server

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

Мой вопрос состоит в том, поддерживает ли Шеф-повар механизм более в реальном времени для того, чтобы достигнуть эти данные. Идеально я хотел бы получить изменение - такое как новое появление узла или быть удаленным - более или менее сразу после того, как оно происходит, уменьшая задержку и также устраняя большие пакеты. Сервер Шеф-повара публикует уведомления? (Я ничего не вижу об этом здесь.) Или можно было бы обработать эту сторону клиента (шеф-повар-клиент)? Есть ли другие подходы, которые я не рассматриваю?

Править: Я говорю конкретно о данных узла. Я делаю

GET /nodes

получить узел-> хеш URI, и затем

GET /nodes/:name

получить отдельные данные узла. Это - огромное возвращение объема данных, хотя, таким образом, было бы замечательно использовать в своих интересах некоторый механизм нажатия, если это существует. Я делаю это, потому что я хочу интегрировать эти данные с другими служебными данными (например, сервисные данные зависимости, данные фермы, состояния вращения подсистемы балансировки нагрузки, и т.д.), который живет за пределами Шеф-повара.

-1
задан 15 December 2014 в 09:53
2 ответа

Вы можете использовать обработчик отчетов , который запускается в конце выполнения chef-client и уведомляет вашу другую систему.

Объект run_status содержит некоторую интересную информацию о run, например run_status.updated_resources , что может сделать уведомление зависимым от того, был ли изменен какой-либо ресурс. Если вас интересуют атрибуты узла, run_status.node содержит новые атрибуты, которые можно выполнить POST с помощью HTTP-запроса.

1
ответ дан 5 December 2019 в 19:26

Я не думаю, что у Chef есть встроенный такой механизм. Однако вам следует взглянуть на Chef-Guard . Chef-guard действует почти как прокси между вашими узлами / рабочей станцией и chef-сервером. он реализует весь API-интерфейс chef rest, поэтому вы можете использовать его, как если бы это был ваш сервер-повар. Однако он поддерживает репозиторий github со всеми вашими изменениями - в режиме реального времени. Затем он пересылает эти изменения на шеф-сервер. Вы можете сделать одно из двух, в зависимости от того, насколько вы амбициозны.

  1. Вы можете форкнуть chef-guard и заменить интеграцию с github своими собственными действиями. (в основном создание собственного прокси-сервера Chef-server со встроенными настраиваемыми триггерами)
  2. Вы можете просто использовать chef-guard из коробки, а затем поместить триггеры в репозиторий github (который поддерживает настраиваемые триггеры из коробки).

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

1
ответ дан 5 December 2019 в 19:26

Теги

Похожие вопросы