Альтернатива Rundeck

Автоматизация runbooks без JVM, SQL-базы данных и заданий, создаваемых в GUI.

Dagu является альтернативой Rundeck для команд эксплуатации, которым нужны задания по расписанию, runbooks по требованию и Web UI из одного небольшого бинарника. Определения заданий живут в Git как YAML, а не за консолью, состояние хранится в файлах, а не в MySQL или Postgres, а до существующих серверов задания доходят по SSH или через воркеры с метками. На этой странице также описаны путь миграции и области, где Rundeck остается более сильным выбором.

Runbook в одном YAML-файле
# 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

drainsshrestartsshhealth_check5 retries

Один бинарник с состоянием в файлах, без JVM и SQL-базы данных

Задания в YAML под версионным контролем проходят ревью, как любое другое изменение

SSH-шаги и воркеры с метками дотягиваются до существующих серверов

SSO, RBAC и журнал аудита по открытой цене за сервер

At a glance

Rundeck vs. Dagu для автоматизации эксплуатации

Runtime
Dagu

Один бинарник с состоянием в файлах; очереди и воркеры опциональны.

Rundeck

Java-сервис плюс MySQL или Postgres в продакшне.

Авторинг
Dagu

Декларативный YAML с ревью в Git.

Rundeck

В первую очередь веб-консоль; экспорт YAML и синхронизация через SCM как вторичный путь.

Удаленное выполнение
Dagu

SSH-шаги или воркеры с метками, подключающиеся исходящим соединением по gRPC с mTLS.

Rundeck

Рассылка на узлы из инвентаря resource model по SSH или WinRM.

Делегирование
Dagu

Роли на всю систему; SSO и журнал аудита в лицензионном тарифе.

Rundeck

Детальные ACL-политики на уровне проекта и задания.

Лицензирование
Dagu

Бесплатно без ограничения числа серверов; платные тарифы лицензируются на сервер Dagu, воркеры безлимитны.

Rundeck

Открытое ядро; коммерческий Process Automation с ценой по запросу.

Доступность
Dagu

Один экземпляр планировщика; схему высокой доступности вы проектируете сами.

Rundeck

Коммерческая версия предлагает кластерные конфигурации.

In depth

Where each tool fits

01

Сохраните runbook, уберите стек

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

  • Задания становятся DAG-файлами, шаги заданий превращаются в шаги, а обработчики ошибок соответствуют handler_on.failure.
  • Опции заданий соответствуют params: типизированные входные данные со значениями по умолчанию, задаваемые из UI, CLI или API при запуске.
  • Нет MySQL или Postgres, требующих расчета размера и резервного копирования, и нет кучи JVM, которую нужно настраивать; хватает небольшой виртуальной машины.
02

Задания как код, а не клики в консоли

Rundeck умеет экспортировать определения и синхронизировать их через SCM-плагин, но главным местом создания заданий остается консоль. Dagu переворачивает это: определением является YAML-файл в вашем репозитории.

  • Каждое задание хранится как YAML-файл в Git, поэтому изменения приходят как diff на ревью, а не как правки в консоли.
  • dagu validate проверяет сгенерированные и написанные вручную определения в CI до того, как они попадут в планировщик.
  • Web UI остается для эксплуатации: запускать с параметрами, смотреть логи, повторять запуски и приостанавливать расписания.
03

Дотянитесь до существующих серверов без установки агента

Rundeck рассылает команды по узлам из инвентаря resource model. Dagu закрывает ту же задачу двумя механизмами: SSH для хостов без агентов и воркеры там, где постоянный исполнитель подходит лучше.

  • Используйте executor SSH, чтобы выполнять шаги на существующих хостах Linux и UNIX без резидентного агента.
  • Запускайте dagu worker на машинах, где нужно локальное выполнение, и направляйте на них шаги метками worker_selector.
  • Воркеры подключаются исходящим соединением по gRPC с защитой mTLS, поэтому сегментированным сетям не нужны входящие порты.
04

Разделите тех, кто запускает задания, и тех, кто их меняет

Классическое развертывание Rundeck передает безопасное подмножество операций более широкой группе. Лицензионный self-hosted тариф Dagu закрывает такое разделение ролями, SSO и журналом аудита.

  • Роль operator может запускать и останавливать запуски, но не может править определения; viewer имеет доступ только на чтение; developer и manager могут менять workflow.
  • Входите через существующий провайдер идентификации по OIDC вместо ведения второго каталога пользователей.
  • Журнал аудита фиксирует административные и значимые для безопасности действия для последующего разбора.
05

Открытая цена вместо звонка в отдел продаж

Коммерческая версия Rundeck стала продуктом PagerDuty Process Automation с ценой по запросу. Тариф Community у Dagu бесплатен и не ограничивает число серверов и воркеров, а у лицензионного тарифа открытая цена за сервер.

  • Community включает полный движок оркестрации, Web UI, расписания cron и executors для Docker, SSH и HTTP.
  • Лицензионный self-hosted тариф стоит от 500 долларов в год за три серверные лицензии и добавляет SSO, RBAC, журнал аудита, маршрутизацию инцидентов и поддержку по электронной почте.
  • Воркеры остаются безлимитными на любом тарифе, поэтому добавление исполняющего хоста не меняет число лицензий.
06

Где 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.