Dagu: оркестрация рабочих процессов с помощью YAML

Dagu — это самохозяйственный оркестратор рабочих процессов, подходящий для команд, чья основная работа не связана с оркестрацией. Он позволяет описывать рабочие процессы в декларативном формате YAML, используя существующие скрипты, команды SSH и контейнеры, и отделяет логику бизнес-процессов от оркестрации.

Проект предлагает легковесный подход к автоматизации операций с помощью единственного бинарника без необходимости в базе данных. Dagu работает на Linux, macOS и Windows и подходит для работы в локальных, облачных или изолированных средах. Его основные преимущества — это простота установки и отсутствие внешних зависимостей, а также возможность планирования и управления историями выполнения рабочих процессов. Это хорошая альтернатива Airflow и Cron, если твои требования не требуют сложных интеграций.

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

Dagu: создан для команд, чья основная работа не является оркестрацией

Документация · 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 →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте