Alternativa al Programador de tareas

El Programador de tareas ejecuta comandos. No te da una planificación que puedas operar.

Dagu se instala como servicio de Windows y aporta lo que el Programador de tareas nunca tuvo: dependencias entre trabajos, reintentos, registros por paso, historial de ejecuciones y una única consola de navegador para todos los servidores en lugar de una sesión RDP por máquina.

Una cadena de trabajos dependientes en un archivo
# nightly-close.yaml
schedule: "0 2 * * *"
max_active_runs: 1
shell: powershell -NoProfile

steps:
  - id: export
    run: .\scripts\Export-Sales.ps1
    retry_policy:
      limit: 2
      interval_sec: 300

  - id: transform
    run: .\scripts\Transform-Sales.ps1
    depends: export

  - id: load
    run: .\scripts\Import-ToCore.ps1
    depends: transform

handler_on:
  failure:
    run: .\scripts\Notify-Failure.ps1

mail_on:
  failure: true

Se instala como servicio de Windows

Pasos en PowerShell, pwsh y cmd.exe

Definiciones de trabajos en YAML versionado

Una consola web para todos los servidores

At a glance

Programador de tareas y Dagu en Windows Server

Dependencias
Dagu

Declaradas con depends; un fallo detiene los pasos posteriores.

Programador de tareas de Windows

Ninguna. El orden se aproxima con las horas de inicio.

Gestión de fallos
Dagu

Reintentos, manejadores de recuperación y notificación por correo.

Programador de tareas de Windows

Un código de último resultado que revisa una persona.

Definiciones
Dagu

YAML revisado en Git y desplegable en cualquier host.

Programador de tareas de Windows

Configuración gráfica por máquina, exportable como XML.

Visibilidad
Dagu

Consola de navegador con historial y registros por paso.

Programador de tareas de Windows

Complemento MMC local y registro de eventos, por servidor.

In depth

Where each tool fits

01

Un orden expresado con horas no es una dependencia

El Programador de tareas lanza una tarea a una hora. No existe la idea de que una tarea espere a otra, así que el orden se expresa estimando duraciones y separando las horas de inicio.

  • La tarea de las 02:30 se ejecuta haya tenido éxito o no la de las 02:00, y normalmente consume lo que esta dejó
  • depends declara el orden directamente: un paso anterior fallido detiene el trabajo posterior en lugar de corromperlo
  • Los trabajos realmente independientes se ejecutan en paralelo en vez de separarse por precaución
02

Fallos que se anuncian solos

Una tarea fallida deja un código de último resultado y espera a que alguien mire. La mayoría de los equipos se enteran a la mañana siguiente, por la persona que está aguas abajo de los datos.

  • retry_policy reintenta lo transitorio antes de despertar a nadie
  • handler_on.failure ejecuta un trabajo de recuperación y mail_on envía la notificación
  • Cada ejecución conserva stdout y stderr por paso, en lugar de un código de retorno y lo que llegara al registro de eventos
03

Definiciones revisables y una consola accesible

Las definiciones del Programador viven en la interfaz de una máquina. Exportarlas produce XML que nadie revisa, y comprobar diez servidores significa diez sesiones remotas.

  • Los flujos son YAML en Git: un cambio de planificación es una pull request y pruebas y producción comparten la misma definición
  • La interfaz web muestra ejecuciones actuales e históricas desde cualquier navegador, sin RDP por servidor
  • PowerShell, pwsh y cmd.exe están disponibles, así que los scripts existentes se trasladan sin cambios

FAQ

Practical questions before adopting Dagu

¿Dagu funciona como servicio de Windows?

Sí. El instalador de PowerShell puede registrarlo como servicio de Windows mediante un envoltorio WinSW con versión fijada: arranca con la máquina y aparece en Get-Service como cualquier otro servicio. Hay binarios de Windows para amd64, 386 y arm64.

¿Siguen funcionando mis scripts de PowerShell y batch?

Sí. Un paso ejecuta el comando mediante PowerShell, pwsh o cmd.exe, elegible por flujo o por paso. Si no se configura shell, Dagu prefiere PowerShell, luego pwsh y luego cmd.exe. Los scripts se invocan igual que lo hacía el Programador de tareas.

¿Puede un solo Dagu gestionar trabajos en varios servidores Windows?

Sí, de dos formas. Los workers pueden ejecutarse en otras máquinas y recibir trabajo de un coordinador, y los nodos remotos permiten que una interfaz web cambie entre despliegues de Dagu separados. En ambos casos la consola es un navegador y no un escritorio remoto.

¿Qué versiones de Windows son compatibles?

Windows Server 2019 y posteriores es el objetivo seguro. Las versiones antiguas sin AF_UNIX siguen ejecutando flujos, pero el socket de estado en vivo y control de parada no está disponible, así que Dagu registra un aviso y continúa sin él.

Next step

Start with one workflow.

Install Dagu, move one fragile script or agent task into YAML, and decide from a real run history.