Новое Распределяем каналы MAX по категориям и территориям. Читать новость

Давно задумал изучить и внедрить какую-нибудь централизованную…

Репост из «ServerAdmin.ru | Linux | DevOps»

Давно задумал изучить и внедрить какую-нибудь централизованную платформу для управления разнородными задачами, типа запуска скриптов, плейбуков, каких-то загрузок, проверок, обновлений и т.д. Основная задача - замкнуть все кроны и таймеры на хостах на единое управление. Дополнительная - туда же и плейбуки засунуть, чтобы всё было в одном месте.

Программ такого рода много - Cronicle, Rundeck, Kestra, Airflow, Dagu и многие другие. Плюс, подобное можно реализовать на базе любой платформы для CI/CD, либо веб интерфейсе для Ansible. Я ранее немного использовал Rundeck и ещё какую-то похожую программу, но уже забыл название. В этот раз решил остановиться на Dagu.

💡 Рассказываю, почему выбрал именно Dagu:

▪️Максимально простая система - один бинарник на Go, который включает в себя и веб интерфейс.
▪️Вся конфигурация в текстовом виде, в том числе набор задач, формат - yaml, идеально для IaC, никаких СУБД и лишних сущностей, легко бэкапить и переносить.
▪️Настройки можно делать как через веб интерфейс, так и напрямую в текстовых файлах, изменения применяются сразу.
▪️Мне в целом понравился веб интерфейс, визуализация этапов workflow и сама концепция программы.
▪️Современный продукт, развивается, обновляется, есть интеграция с LLM, встроен MCP.
▪️Понравилось, как сохраняется и просматривается вывод в консоль от запущенных скриптов, удобно проверять и дебажить.

Я развернул и пока попробовал программу на своих скриптах, которые запускаются по крону на различных серверах. Первая задача - перенести их все на Dagu в его планировщик, а из кронов серверов убрать.

Понравилось, что можно сразу все свои костыли и велосипеды засунуть в Wrokflow, как есть. Выполнение скрипта по SSH выглядит примерно так:



steps:
 - id: start_backup_via_ssh
  action: ssh.run
  with:
   user: backup
   host: 192.168.137.9
   key: /root
/.ssh/id_ed25519
   shell: "/bin/bash -o pipefail"
   command: /root/sites-backup/sites-rsync.sh



Показал максимально простой пример подключения к серверу и запуска скрипта. Весь его вывод сохраняется и потом доступен к просмотру. В Dagu есть профили, куда можно добавлять переменные и секреты и потом использовать их в настройках задач. Есть интеграция с провайдерами Vault, Kubernetes, AWS и д.р. Можно отправлять уведомления через различные каналы - почта, мессенджеры, вебхуки и т.д.

Задачи, соответственно, выстраиваются в последовательность, которая может ветвиться. Сначала делаем подготовку, потом какое-то действие, потом отправляем отчёт, в случае ошибки делаем что-то другое. Пока у меня вся логика зашита в скриптах, но если по мере использования и изучения Dagu понравится, то логику буду дробить на шаги и реализовывать уже в рамках Workflow самой программы. Это будет и удобнее, и нагляднее.

В качестве действий - огромный набор возможностей:
◽️ Shell команды и скрипты на хостах с подключением по SSH
◽️ Управление Docker, Kenernetes
◽️ Использование JavaScript прямо в этапах workflow
◽️ Запросы по HTTP, SMTP, SFTP, S3, Rclone, команды GIT, SQL запросы
◽️ Интеграция с LLM моделями для использования их в задачах
◽️ Использование локального браузера для парсинга страниц сайтов
◽️ Сохранение артефактов, файлов, архивов, шаблонов
◽️ Ветвление и различные маршруты
◽️ Ручное подтверждение человеком того или иного действия

Мне показалось, что тут есть всё, что надо для разнородных задач. Я уже прикинул, как можно бэкапить и делать проверки. Например, дампим базу данных, передаём на сервер бэкапов, с тестового сервера забираем бэкап, распаковываем, заливаем в базу, делаем проверочный запрос. Для этого делаем два workflow - бэкап и проверка.

Как я уже сказал, подобная функциональность много где есть. Тот же n8n много задач закрывает, которые я задумал сделать в Dagu. Но последний по совокупным возможностям и относительной простоте мне показался более подходящим для моих разнородных задач. Буду изучать и использовать. Если всё получится, потом ещё напишу про него.

#devops #cicd
Просмотры: 5
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти