Alternativa a Rundeck
Automatización de runbooks sin JVM, sin base de datos SQL y sin jobs creados desde la consola gráfica.
Dagu es una alternativa a Rundeck para equipos de operaciones que quieren jobs programados, runbooks bajo demanda y una Web UI desde un único binario pequeño. Las definiciones de jobs viven en git como YAML en lugar de detrás de una consola, el estado vive en archivos en lugar de MySQL o Postgres, y a los servidores existentes se llega por SSH o con workers etiquetados. Esta página también cubre la ruta de migración y los puntos donde Rundeck sigue siendo la opción más fuerte.
# 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
Un binario único con estado en archivos, sin JVM y sin base de datos SQL
Los jobs son YAML bajo control de versiones, revisados como cualquier otro cambio
Pasos SSH y workers etiquetados llegan a los servidores existentes
SSO, RBAC y registro de auditoría a un precio público por servidor
At a glance
Rundeck vs. Dagu para automatización de operaciones
Un binario único con estado en archivos; colas y workers son opcionales.
Un servicio Java más MySQL o Postgres en producción.
YAML declarativo revisado en git.
La consola web primero; exportación a YAML y sincronización SCM como vía secundaria.
Pasos SSH, o workers etiquetados que se conectan hacia fuera por gRPC con mTLS.
Despacho a nodos desde un inventario de modelo de recursos por SSH o WinRM.
Roles para todo el sistema, con SSO y registro de auditoría en el plan con licencia.
Políticas ACL de grano fino por proyecto y por job.
Gratis con servidores ilimitados; los planes de pago se licencian por servidor Dagu con workers ilimitados.
Núcleo open source; Process Automation comercial con precio bajo presupuesto.
Una sola instancia de scheduler; la alta disponibilidad es un diseño de despliegue que asumes tú.
El plan comercial ofrece configuraciones en clúster.
In depth
Where each tool fits
Conserva el runbook, deja atrás la stack
Rundeck se ejecuta como un servicio Java delante de una base de datos SQL, con jobs definidos por proyecto desde la consola web. Dagu mantiene los mismos conceptos operativos dentro de un solo proceso que guarda su estado en archivos.
- Los jobs se convierten en archivos DAG, los pasos de job en pasos, y los manejadores de error se corresponden con handler_on.failure.
- Las opciones de job se corresponden con params: entradas tipadas con valores por defecto, proporcionadas desde la UI, la CLI o la API en el momento de la ejecución.
- No hay que dimensionar ni hacer backups de MySQL o Postgres, ni afinar el heap de la JVM; basta con una VM pequeña.
Jobs como código, no clics en la consola
Rundeck puede exportar definiciones y sincronizarlas mediante su plugin de SCM, pero la consola es la superficie principal de autoría. Dagu invierte eso: el archivo YAML de tu repositorio es la definición.
- Cada job es un archivo YAML en git, así que los cambios llegan como diffs revisables en lugar de ediciones en la consola.
- dagu validate comprueba las definiciones generadas y las escritas a mano en CI antes de que lleguen al scheduler.
- La Web UI queda para operar: iniciar ejecuciones con parámetros, ver los logs, reintentar y suspender programaciones.
Llega a los servidores existentes sin instalar un agente
Rundeck despacha comandos a los nodos desde un inventario de modelo de recursos. Dagu cubre el mismo terreno con dos mecanismos: SSH para hosts sin agente y workers donde un ejecutor persistente encaja mejor.
- Usa el ejecutor SSH para ejecutar pasos en hosts Linux y UNIX existentes sin ningún agente residente.
- Arranca dagu worker en las máquinas que necesitan ejecución local y enruta pasos hacia ellas con labels de worker_selector.
- Los workers se conectan hacia fuera por gRPC protegido con mTLS, así que las redes segmentadas no necesitan puertos de entrada.
Separa a quienes ejecutan los jobs de quienes los modifican
El despliegue clásico de Rundeck entrega un subconjunto seguro de operaciones a un grupo más amplio. El plan self-host con licencia de Dagu cubre esa separación con roles, SSO y registro de auditoría.
- El rol operator puede iniciar y detener ejecuciones pero no editar definiciones; viewer es de solo lectura; developer y manager pueden cambiar workflows.
- Inicia sesión con tu proveedor de identidad existente mediante OIDC en lugar de mantener un segundo directorio de usuarios.
- El registro de auditoría recoge la actividad administrativa y relevante para la seguridad para su revisión.
Un precio público en lugar de una llamada de ventas
El plan comercial de Rundeck se convirtió en PagerDuty Process Automation, con precio bajo presupuesto. El plan community de Dagu es gratuito con servidores y workers ilimitados, y el plan con licencia tiene un precio público por servidor.
- El plan community cubre el motor de orquestación completo, la Web UI, la planificación cron y los ejecutores de Docker, SSH y HTTP.
- El self-host con licencia empieza en 500 dólares al año por tres licencias de servidor y añade SSO, RBAC, registro de auditoría, enrutamiento de incidentes y soporte por correo electrónico.
- Los workers siguen siendo ilimitados en todos los planes, así que añadir un host de ejecución nunca cambia el número de licencias.
Dónde Rundeck es la opción más fuerte
Una comparación que solo enumera victorias no sirve durante una evaluación. Estos son los puntos en los que un equipo con Rundeck debería esperar trabajo extra o quedarse donde está.
- El inventario de nodos de Rundeck es más rico: las fuentes de modelo de recursos y los filtros de nodos pueden distribuir un mismo comando entre cientos de hosts. Dagu dirige los pasos a hosts SSH o a workers etiquetados y no tiene un concepto de inventario de flota.
- Las políticas ACL por proyecto y por job de Rundeck pueden entregar exactamente un job parametrizado a un grupo de helpdesk. Los roles de Dagu se aplican a todo el sistema, no por job.
- La versión comercial Process Automation ofrece configuraciones en clúster para alta disponibilidad, y el ecosistema de plugins, incluidos los ejecutores de nodo WinRM y los plugins de notificación, es más grande.
FAQ
Practical questions before adopting Dagu
¿Es Dagu un reemplazo directo de Rundeck?
No. Los conceptos se corresponden con claridad: los jobs se convierten en archivos DAG, los pasos de job en pasos, las opciones en params y los manejadores de error en handler_on.failure. Pero no hay un importador, y el modelo de filtros de nodos de Rundeck no tiene un equivalente directo. Migrar significa reescribir cada job como un archivo YAML, algo mecánico para los jobs basados en comandos.
¿Se pueden seguir lanzando jobs con parámetros desde una UI?
Sí. params declara entradas tipadas con valores por defecto, y una ejecución puede iniciarse desde la Web UI, la CLI o la API con valores proporcionados en el momento de la ejecución. Lo que Dagu no tiene es la ACL por job de Rundeck para exponer exactamente un job a un grupo; los roles se aplican a todo el sistema.
¿Cómo ejecuta Dagu comandos en muchos servidores?
De dos formas. El ejecutor SSH ejecuta pasos en hosts sin agente, y el modo distribuido arranca workers en máquinas que recogen los pasos que coinciden con sus labels de worker_selector. No hay un inventario de modelo de recursos; el reparto entre una flota grande se expresa con pasos en paralelo o con un script envoltorio.
¿Necesita Dagu una base de datos como Rundeck?
No. El historial de ejecuciones, los logs y el estado de la cola son archivos en disco. Eso es también lo que hace sencillas las redes cerradas: un binario, sin JVM y sin servicios externos a los que llegar.
¿Qué reemplaza a las programaciones y los webhooks de Rundeck?
Las programaciones cron con soporte de zonas horarias vienen integradas, y las ejecuciones pueden dispararse desde fuera mediante la API o un webhook con el payload disponible para el workflow. La concurrencia está limitada por workflow de forma predeterminada y los límites compartidos usan colas con nombre.
Next step
Start with one workflow.
Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.