Dagu: оркестрация рабочих процессов с помощью YAML
Dagu — это самохозяйственный оркестратор рабочих процессов, подходящий для команд, чья основная работа не связана с оркестрацией. Он позволяет описывать рабочие процессы в декларативном формате YAML, используя существующие скрипты, команды SSH и контейнеры, и отделяет логику бизнес-процессов от оркестрации.
Проект предлагает легковесный подход к автоматизации операций с помощью единственного бинарника без необходимости в базе данных. Dagu работает на Linux, macOS и Windows и подходит для работы в локальных, облачных или изолированных средах. Его основные преимущества — это простота установки и отсутствие внешних зависимостей, а также возможность планирования и управления историями выполнения рабочих процессов. Это хорошая альтернатива Airflow и Cron, если твои требования не требуют сложных интеграций.
Учитывай, что проект находится на ранней стадии разработки, так что могут быть недоработки. Ознакомиться с документацией и запустить проект можно по ссылкам из README.
Документация ·
CLI ·
API ·
Примеры ·
Демо онлайн
(пользователь/пароль: demouser) ·
Discord
Dagu
Dagu — это локально ориентированный движок для автоматизации рабочих процессов и операций. Он является проектом с открытым исходным кодом и может быть развернут самостоятельно: это один бинарный файл с встроенным веб-интерфейсом, без необходимости в сторонней базе данных или брокере сообщений, работающий на Linux, macOS и Windows. Используй декларативный формат YAML для определения DAG (направленных ациклических графов). Он нативно поддерживает выполнение shell-команд, Docker-контейнеров, Kubernetes Jobs, удаленные команды через SSH и многое другое через Dagu Actions.
Dagu преобразует существующие скрипты и runbook в производственные рабочие процессы с функциями по расписанию, повторными попытками, человеческими задачами и историей выполнения. Он работает там, где хранятся данные и учетные данные: на месте, в изолированных сетях, на краю или в облаке, и может масштабироваться от одного узла до множества рабочих узлов.
Краткий обзор
Dagu можно установить и запустить с использованием простых команд. Он предлагает множество возможностей, включая параллельное выполнение и управление зависимостями, прозрачный доступ к логам и истории выполнения.
Почему Dagu?
Dagu ориентирован на упрощение оркестрации, если обработка этих задач не является основной работой. Он не требует перенаписи твоих скриптов и контейнеров, что делает его более удобной альтернативой традиционным оркестраторам, таким как cron, Airflow и Temporal. Dagu рассматривает структуру рабочего процесса как конфигурацию, а не как код, что позволяет легко адаптировать его под свои нужды.
Установка и запуск
Для установки Dagu на различных платформах доступны несколько вариантов:
- macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.sh | bash - Homebrew:
brew install dagu - npm:
npm install -g --ignore-scripts=false @dagucloud/dagu - Windows (PowerShell):
irm https://raw.githubusercontent.com/dagucloud/dagu/main/scripts/installer.ps1 | iex - Docker:
docker run --rm -v ~/.dagu:/var/lib/dagu -p 8080:8080 ghcr.io/dagucloud/dagu:latest dagu start-all - Kubernetes (Helm):
helm repo add dagu https://dagucloud.github.io/dagu helm repo update helm install dagu dagu/dagu --set persistence.storageClass=
После установки, ты можешь создать рабочий процесс в файле hello.yaml:
steps:
- id: hello
run: echo "hello from Dagu"
Запусти его с помощью команды:
dagu start hello.yaml
Для запуска сервера используй:
dagu start-all --dags .
После этого открой браузер и перейди по адресу http://localhost:8080.
Ограничения
Важно учитывать, что Dagu работает на одной машине, либо на временных рабочих узлах, созданных твоей платформой для каждой задачи, либо на постоянных рабочих узлах. В зависимости от выбранной топологии могут возникнуть ограничения на количество параллельных запусков и еще ряд эксплуатационных нюансов. Убедись, что ознакомился с документами касательно [топологий развертывания](https://docs.dagu.sh/overview/deployment-models) и [управления зависимостями](https://docs.dagu.sh/writing-workflows/examples).
Заключение
Dagu предлагает гибкое решение для организации и автоматизации рабочих процессов, упрощая оркестрацию и интегрируя широкий спектр задач при помощи простого в использовании интерфейса. Ты сможешь имплементировать автоматизацию в своей работе без сложных настроек и зависимостей от множественных систем.
Открыть на GitHub: dagucloud/dagu →
RepoRadar