Давно задумал изучить и внедрить какую-нибудь централизованную…
Давно задумал изучить и внедрить какую-нибудь централизованную платформу для управления разнородными задачами, типа запуска скриптов, плейбуков, каких-то загрузок, проверок, обновлений и т.д. Основная задача - замкнуть все кроны и таймеры на хостах на единое управление. Дополнительная - туда же и плейбуки засунуть, чтобы всё было в одном месте.
Программ такого рода много - Cronicle, Rundeck, Kestra, Airflow, Dagu и многие другие. Плюс, подобное можно реализовать на базе любой платформы для CI/CD, либо веб интерфейсе для Ansible. Я ранее немного использовал Rundeck и ещё какую-то похожую программу, но уже забыл название. В этот раз решил остановиться на Dagu.
💡 Рассказываю, почему выбрал именно Dagu:
▪️Максимально простая система - один бинарник на Go, который включает в себя и веб интерфейс.
▪️Вся конфигурация в текстовом виде, в том числе набор задач, формат - yaml, идеально для IaC, никаких СУБД и лишних сущностей, легко бэкапить и переносить.
▪️Настройки можно делать как через веб интерфейс, так и напрямую в текстовых файлах, изменения применяются сразу.
▪️Мне в целом понравился веб интерфейс, визуализация этапов workflow и сама концепция программы.
▪️Современный продукт, развивается, обновляется, есть интеграция с LLM, встроен MCP.
▪️Понравилось, как сохраняется и просматривается вывод в консоль от запущенных скриптов, удобно проверять и дебажить.
Я развернул и пока попробовал программу на своих скриптах, которые запускаются по крону на различных серверах. Первая задача - перенести их все на Dagu в его планировщик, а из кронов серверов убрать.
Понравилось, что можно сразу все свои костыли и велосипеды засунуть в Wrokflow, как есть. Выполнение скрипта по SSH выглядит примерно так:
Показал максимально простой пример подключения к серверу и запуска скрипта. Весь его вывод сохраняется и потом доступен к просмотру. В 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
Программ такого рода много - 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