Ir al contenido
Documentación en vista previa. InfraWard aún no es público y estas páginas pueden cambiar antes del lanzamiento.

Conceptos y arquitectura

  • Asset: cualquier elemento del inventario: un servidor, un CT o una VM de Proxmox, un contenedor, una imagen, una red o un volumen de Docker, un dominio… Los assets se relacionan entre sí (un contenedor corre en un servidor, un dominio llega a un servicio) y forman la vista de topología.
  • Alta (enrolment): el paso que convierte un servidor en un nodo inventariado. Un token de un solo uso descarga un script que crea un usuario de inventario con un sudoers mínimo y de solo lectura y fija las huellas de las host keys.
  • Descubrimiento y recolección: el worker se conecta por SSH, recoge la información con Ansible y descubre recursivamente lo que contiene cada nodo.
  • Reconciliación: el inventario se compara periódicamente con la realidad. Lo nuevo se añade, lo que cambia se actualiza y lo que desaparece se retira tras varias pasadas sin verlo.
  • SBOM y findings: cada imagen, servidor o CT tiene un SBOM CycloneDX. Los SBOMs se reevalúan con la última base de datos de Trivy sin volver a conectarse a las máquinas.
  • Proyectos, etiquetas y políticas: agrupan assets, controlan el intervalo de reconciliación y definen quién puede abrir una terminal en qué.
Servicio Tecnología Función
web Angular, servido por nginx Interfaz; reenvía /api/ a la API
api NestJS + Fastify + TypeORM REST con OpenAPI, autenticación y alta de servidores; aplica las migraciones al arrancar
worker NestJS + Ansible + Trivy Recolección, descubrimiento, escaneos y reconciliación; consume las colas y escala a varias réplicas
gateway La imagen del worker en modo gateway Terminal interactiva (WebSocket → SSH con PTY); sin colas y sin acceso a los secretos
PostgreSQL 18 Inventario, SBOMs, findings y auditoría
Redis 7 Cola de trabajos (BullMQ)
OpenBao Opcional Proveedor de secretos y CA SSH

La API nunca ejecuta Ansible ni Trivy: todo el trabajo pesado va por la cola al worker.

En la base de datos solo se guardan referencias secret://…. Los valores viven en:

  • OpenBao (recomendado): KV v2 para los secretos y una CA SSH que firma certificados de vida corta, de modo que los servidores se dan de alta sin claves por servidor.
  • Proveedor local: secretos cifrados con AES-256-GCM con una clave maestra que se guarda fuera de la base de datos.

La caja fuerte de credenciales (contraseñas que usan las personas, como consolas o IPMI) va en un almacén separado con su propia identidad. Solo la API puede leerla; el worker no.

Se pueden ejecutar varias réplicas del worker. Los trabajos se reparten por colas según su tipo, sin duplicarse, con un límite de trabajos a la vez por servidor (un CT cuenta contra su nodo) y coordinación mediante locks y un líder en Redis. Si una réplica cae, otra retoma sus trabajos.

El gateway abre la sesión SSH con la cuenta de administración del servidor usando un certificado que firma la API y que dura pocos minutos. Solo está disponible en servidores con el acceso de administración activado, y los permisos se conceden por asset, etiqueta o proyecto.