Альтернатива Rundeck
Автоматизация runbooks без JVM, SQL-базы данных и заданий, создаваемых в GUI.
Dagu является альтернативой Rundeck для команд эксплуатации, которым нужны задания по расписанию, runbooks по требованию и Web UI из одного небольшого бинарника. Определения заданий живут в Git как YAML, а не за консолью, состояние хранится в файлах, а не в MySQL или Postgres, а до существующих серверов задания доходят по SSH или через воркеры с метками. На этой странице также описаны путь миграции и области, где Rundeck остается более сильным выбором.
# restart-app.yaml
params:
- name: host
default: app01.internal
ssh:
user: ops
host: ${params.host}
key: ~/.ssh/ops_key
steps:
- id: drain
run: /opt/app/bin/drain --wait
- id: restart
run: sudo systemctl restart app
depends: [drain]
- id: health_check
run: curl -fsS http://localhost:8080/healthz
retry_policy:
limit: 5
interval_sec: 10
depends: [restart]
handler_on:
failure:
run: ./scripts/notify-oncall.sh
Execution order
Один бинарник с состоянием в файлах, без JVM и SQL-базы данных
Задания в YAML под версионным контролем проходят ревью, как любое другое изменение
SSH-шаги и воркеры с метками дотягиваются до существующих серверов
SSO, RBAC и журнал аудита по открытой цене за сервер
At a glance
Rundeck vs. Dagu для автоматизации эксплуатации
Один бинарник с состоянием в файлах; очереди и воркеры опциональны.
Java-сервис плюс MySQL или Postgres в продакшне.
Декларативный YAML с ревью в Git.
В первую очередь веб-консоль; экспорт YAML и синхронизация через SCM как вторичный путь.
SSH-шаги или воркеры с метками, подключающиеся исходящим соединением по gRPC с mTLS.
Рассылка на узлы из инвентаря resource model по SSH или WinRM.
Роли на всю систему; SSO и журнал аудита в лицензионном тарифе.
Детальные ACL-политики на уровне проекта и задания.
Бесплатно без ограничения числа серверов; платные тарифы лицензируются на сервер Dagu, воркеры безлимитны.
Открытое ядро; коммерческий Process Automation с ценой по запросу.
Один экземпляр планировщика; схему высокой доступности вы проектируете сами.
Коммерческая версия предлагает кластерные конфигурации.
In depth
Where each tool fits
Сохраните runbook, уберите стек
Rundeck работает как Java-сервис поверх SQL-базы данных, а задания определяются по проектам через веб-консоль. Dagu сохраняет те же операционные концепции внутри одного процесса, который хранит состояние в файлах.
- Задания становятся DAG-файлами, шаги заданий превращаются в шаги, а обработчики ошибок соответствуют handler_on.failure.
- Опции заданий соответствуют params: типизированные входные данные со значениями по умолчанию, задаваемые из UI, CLI или API при запуске.
- Нет MySQL или Postgres, требующих расчета размера и резервного копирования, и нет кучи JVM, которую нужно настраивать; хватает небольшой виртуальной машины.
Задания как код, а не клики в консоли
Rundeck умеет экспортировать определения и синхронизировать их через SCM-плагин, но главным местом создания заданий остается консоль. Dagu переворачивает это: определением является YAML-файл в вашем репозитории.
- Каждое задание хранится как YAML-файл в Git, поэтому изменения приходят как diff на ревью, а не как правки в консоли.
- dagu validate проверяет сгенерированные и написанные вручную определения в CI до того, как они попадут в планировщик.
- Web UI остается для эксплуатации: запускать с параметрами, смотреть логи, повторять запуски и приостанавливать расписания.
Дотянитесь до существующих серверов без установки агента
Rundeck рассылает команды по узлам из инвентаря resource model. Dagu закрывает ту же задачу двумя механизмами: SSH для хостов без агентов и воркеры там, где постоянный исполнитель подходит лучше.
- Используйте executor SSH, чтобы выполнять шаги на существующих хостах Linux и UNIX без резидентного агента.
- Запускайте dagu worker на машинах, где нужно локальное выполнение, и направляйте на них шаги метками worker_selector.
- Воркеры подключаются исходящим соединением по gRPC с защитой mTLS, поэтому сегментированным сетям не нужны входящие порты.
Разделите тех, кто запускает задания, и тех, кто их меняет
Классическое развертывание Rundeck передает безопасное подмножество операций более широкой группе. Лицензионный self-hosted тариф Dagu закрывает такое разделение ролями, SSO и журналом аудита.
- Роль operator может запускать и останавливать запуски, но не может править определения; viewer имеет доступ только на чтение; developer и manager могут менять workflow.
- Входите через существующий провайдер идентификации по OIDC вместо ведения второго каталога пользователей.
- Журнал аудита фиксирует административные и значимые для безопасности действия для последующего разбора.
Открытая цена вместо звонка в отдел продаж
Коммерческая версия Rundeck стала продуктом PagerDuty Process Automation с ценой по запросу. Тариф Community у Dagu бесплатен и не ограничивает число серверов и воркеров, а у лицензионного тарифа открытая цена за сервер.
- Community включает полный движок оркестрации, Web UI, расписания cron и executors для Docker, SSH и HTTP.
- Лицензионный self-hosted тариф стоит от 500 долларов в год за три серверные лицензии и добавляет SSO, RBAC, журнал аудита, маршрутизацию инцидентов и поддержку по электронной почте.
- Воркеры остаются безлимитными на любом тарифе, поэтому добавление исполняющего хоста не меняет число лицензий.
Где Rundeck по-прежнему сильнее
Сравнение, в котором перечислены только выигрыши, бесполезно при оценке. Вот области, где команде, работающей на Rundeck, стоит заложить дополнительную работу или вовсе не переходить.
- Инвентарь узлов у Rundeck богаче: источники resource model и фильтры узлов позволяют развернуть одну команду на сотни хостов. Dagu адресует шаги SSH-хостам или воркерам с метками, а концепции инвентаря всего парка у него нет.
- ACL-политики Rundeck на уровне проекта и задания позволяют отдать группе поддержки ровно одно параметризованное задание. Роли в Dagu действуют на всю систему, а не на отдельные задания.
- Коммерческий Process Automation предлагает кластерные конфигурации для высокой доступности, а экосистема плагинов, включая исполнители узлов WinRM и плагины уведомлений, у него шире.
FAQ
Practical questions before adopting Dagu
Заменяет ли Dagu Rundeck без доработок?
Нет. Концепции сопоставляются просто: задания становятся DAG-файлами, шаги заданий превращаются в шаги, опции переходят в params, а обработчики ошибок становятся handler_on.failure. Но импортера нет, а у модели фильтров узлов Rundeck нет прямого эквивалента. Миграция означает переписывание каждого задания в YAML-файл; для заданий, состоящих из команд, это механическая работа.
Смогут ли пользователи по-прежнему запускать задания с параметрами из UI?
Да. params объявляют типизированные входные данные со значениями по умолчанию, а запуск можно начать из Web UI, CLI или API, передав значения во время запуска. Чего у Dagu нет, так это ACL уровня задания, как в Rundeck, чтобы открыть группе ровно одно задание; роли действуют на всю систему.
Как Dagu выполняет команды на многих серверах?
Двумя способами. Executor SSH выполняет шаги на хостах без агентов, а в распределенном режиме воркеры на машинах забирают шаги, совпавшие по меткам worker_selector. Инвентаря resource model нет; веерный запуск по большому парку выражается параллельными шагами или скриптом-оберткой.
Нужна ли Dagu база данных, как Rundeck?
Нет. История запусков, логи и состояние очереди хранятся в файлах на диске. Это же упрощает работу в закрытых сетях: один бинарник, без JVM и без внешних сервисов, до которых нужно достучаться.
Что заменяет расписания и webhooks Rundeck?
Расписания cron с поддержкой часовых поясов встроены, а запуски можно инициировать извне через API или webhook, при этом payload доступен workflow. Параллельность по умолчанию ограничена на уровне workflow, а общие лимиты задаются через именованные очереди.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.