Lanza tus playbooks desde una pestaña del navegador.
Playbook Runner es una interfaz web autoalojada para Ansible: inventario, credenciales SSH, playbooks, programaciones y el registro en directo de cada ejecución, sin el peso de AWX o Tower.
curl -fsSL https://raw.githubusercontent.com/Nonetss/playbook-runner/main/scripts/bootstrap.sh | bashQué incluye
Tu inventario, con la clave correcta ya asignada.
Dispositivos y grupos viven en la base de datos. Cada dispositivo apunta a una credencial SSH, así que basta con elegir un grupo: el usuario y la clave correctos acompañan a cada host. Genera un par ed25519 en el navegador y copia un script que da de alta el usuario en un host nuevo.
Mira cada tarea mientras ocurre.
Elige un playbook y un grupo, confirma y ejecuta. Las líneas PLAY y TASK llegan al navegador a medida que ansible-runner las emite, sin sondeos. Si cierras la pestaña, la ejecución se cancela en el ejecutor.
O guarda tus playbooks en Git.
Añade un repositorio por HTTPS o SSH, elige rama y subdirectorio. Sus playbooks aparecen en solo lectura y se ejecutan desde una copia del commit sincronizado, así que los roles, plantillas y group_vars que tengan al lado funcionan sin más.
Prográmalo y luego revisa qué pasó.
Dale a un job una expresión cron y el backend lo lanza a su hora. Un job nunca se solapa consigo mismo, y el historial guarda el estado, la duración y los hosts de cada ejecución.
Automatízalo a través de la API.
Cada endpoint está documentado en una referencia OpenAPI interactiva servida en /scalar. Crea una API key personal y llámala desde scripts o CI.
Y el resto de la caja de herramientas
- Scripts
- Guarda scripts de Bash o Python y ejecútalos sobre una selección de hosts, con la misma consola en directo.
- Comandos ad-hoc
- Lanza el módulo shell o command contra cualquier selección, con become opcional, para lo puntual que no merece un playbook.
- Usuarios y roles
- Sin registro público. Los administradores crean las cuentas y asignan admin, user o pending, que puede iniciar sesión pero espera aprobación.
- Inicio de sesión único
- Cualquier proveedor OIDC (Keycloak, Authentik, Google…) junto a email y contraseña. Se activa con tres variables.
- API keys
- Claves personales enviadas como x-api-key, para scripts y pipelines de CI.
- Instalable en el móvil
- La interfaz es una PWA: añádela a la pantalla de inicio y revisa una ejecución desde cualquier sitio.
Cómo está montado
Cuatro servicios y PostgreSQL, levantados con Docker Compose. El navegador solo habla con el gateway Caddy, que manda la API al backend y todo lo demás al frontend. El backend es el dueño de la base de datos y llega al ejecutor de Ansible por gRPC, a través del router interno del gateway.
Recorrido de las peticiones
- → HTTPS
- :80Caddy→ /*
- :4321Astro SSR
- → /rpc
- :80Caddy
- :3000Hono · oRPCPostgreSQL→ gRPC
- :50050Caddy→ /run.*
- :50051ansible-runner→ SSH
Enrutado del gateway
| Petición | Va a |
|---|---|
| /rpc /api /scalar /openapi.json | backend:3000 |
| cualquier otra ruta | frontend:4321 |
| gRPC /run.* en :50050 | ansible:50051 |
| cualquier otro servicio gRPC | UNIMPLEMENTED |
- Las claves privadas no salen del servidor.
- Las claves SSH se cifran en reposo con AES-256-GCM y la API nunca las devuelve. Solo se descifran para preparar una ejecución, y el ejecutor borra los ficheros de clave al terminar.
- El ejecutor no tiene base de datos.
- El backend resuelve el playbook, los hosts y sus claves, y envía un único paquete completo por gRPC, autenticado con un token compartido. La salida vuelve por la misma llamada.
- Las ejecuciones tienen límite.
- Por defecto corren como mucho ocho procesos de Ansible a la vez; las peticiones de más se rechazan en lugar de encolarse. Las claves de host SSH se verifican: se confía en el primer contacto y se rechazan las que cambian.
En marcha con un solo comando.
En un host Linux con Docker, curl y openssl, desde un directorio vacío:
curl -fsSL https://raw.githubusercontent.com/Nonetss/playbook-runner/main/scripts/bootstrap.sh | bash¿Prefieres montarlo a mano? Desplegar con Docker Compose
Qué hace el script
- Pregunta la URL pública, el puerto y el primer administrador, y opcionalmente los datos de OIDC.
- Genera todos los secretos con openssl, incluida la clave que cifra las claves SSH guardadas.
- Escribe .env y compose.yml en el directorio actual.
- Descarga las imágenes de ghcr.io y arranca el stack. El backend migra la base de datos y crea el administrador al arrancar.