Каков эффективный способ синхронизации git pull requests и перезапуска сервисов systemctl для нескольких кластеров Django-Q?

Я запускаю множество кластеров Django-Q (на Ubuntu focal) для выполнения распределенных вычислений на больших массивах данных. У меня есть производственные кластеры и кластеры разработки, у каждого из которых есть своя ветка git. Мне нужен способ синхронизировать обновление и перезапуск служб systemctl этих кластеров при внесении изменений в их соответствующие git-репозитории.

В настоящее время я подключаюсь по ssh к каждой машине и выполняю следующие команды.

$ git pull
$ sudo systemctl restart qcluster

Я ценю любые идеи, которые у вас могут быть.

Проблема с этим заключается в том, что он работает по требованию.
Вам нужно каким-то образом обнаружить наличие новых коммитов, а затем инициировать SSH+pull+restart.

В зависимости от вашего сервиса удаленного хостинга (GitHub/GitLab,...), вы можете установить webhook listener на каждый достижимый, чтобы автоматизировать этот шаг.
Как только слушатель получит уведомление о новом коммите, он сможет подключиться к кластерам и выполнять ваши команды.
Плейбук Ansible playbook хорошо подойдет, поскольку Ansible не имеет агентов и в основном полагается на SSH для выполнения скриптов на удаленных машинах.

Вернуться на верх