Каков эффективный способ синхронизации 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 для выполнения скриптов на удаленных машинах.