# Inventario y proyectos

> Recorre el inventario en árbol o en topología, fíltralo, actúa sobre muchos assets a la vez y organízalos con etiquetas y proyectos.

## Vista de árbol

**Inventario** muestra los servidores dados de alta y todo lo que contienen, siguiendo la relación `contiene`: un nodo Proxmox contiene sus CT y VMs; un host Docker o Podman, sus contenedores. Cada fila indica el tipo, la dirección, el estado y las vulnerabilidades: la severidad máxima abierta y cuántos hallazgos CRITICAL y HIGH tienen ya parche.

[Captura: Árbol del inventario con un host Docker y sus cuatro contenedores, y otros dos servidores]

Desde la barra de herramientas puedes mostrar los retirados, expandir o contraer todas las ramas, elegir las columnas visibles y exportar la vista actual a CSV o JSON.

## Sintaxis de búsqueda

El buscador admite texto libre y filtros. El texto libre solo busca en los nombres.

```text
tag:prod tipo:contenedor -estado:parado ip:10.0.0.0/24
```

| Clave | Coincide con |
|---|---|
| `tag:` | Una etiqueta, exacta. |
| `nombre:` / `name:` | Parte del nombre visible o descubierto. |
| `tipo:` / `type:` | Tipo de asset: `servidor`, `ct`, `vm`, `contenedor`, `imagen`… |
| `estado:` / `status:` | Estado de inventario o de ejecución: `activo`, `retirado`, `parado`… |
| `rol:` / `role:` | Un rol detectado, como `docker-host` o `podman-host`. |
| `proyecto:` / `project:` | Un proyecto, por nombre o por ID. |
| `ip:` | Una dirección exacta, un prefijo (`10.0.`) o una red IPv4 (`10.0.0.0/24`). |

Reglas: pon entre comillas los valores con espacios (`nombre:"web prod"`), antepón `-` para negar un término, repite una clave para un O (`tag:prod tag:staging`) y combina claves distintas para un Y. La consulta queda en la URL, así que puedes compartir una vista filtrada copiando la dirección.

## Vista de topología

**Topología** dibuja los hosts y lo que contienen como un grafo: contenedores, imágenes, redes y volúmenes, con enlaces `conectado a`, `monta` e `instancia de`. Pulsa un host para cargar su contenido, haz doble clic para expandirlo y usa **Resaltar CVE críticos** para marcar los assets con vulnerabilidades críticas.

[Captura: Topología de un host Docker: contenedores conectados a la red bridge, sus imágenes y volúmenes]

## Ficha del asset

Cada asset tiene su ficha con pestañas: **Resumen**, **Vulnerabilidades**, **Paquetes**, **Servicios**, **Puertos**, **Relaciones** (mapa, jerarquía y lista), **Credenciales** (de la caja fuerte), **Recolecciones**, **Snapshots** y **Datos en bruto**.

[Captura: Ficha de un host Docker: avisos, resumen de vulnerabilidades, contenedores, sistema y acceso]

El resumen muestra también los avisos de la recolección; por ejemplo, cuando sshd admite contraseñas o cuando la última recolección fue parcial. En un host con Podman rootless aparece además la tarjeta **Usuarios de Podman** (consulta [Podman](/es/docs/enrollment.md#podman)).

Las acciones de la ficha dependen de tu rol y del asset: **Recolectar de nuevo**, **Escanear vulnerabilidades**, **Abrir terminal**, **Reconciliar ahora**, notas, etiquetas, una política propia, **Dar de baja** y **Purgar**.

### Logs de las ejecuciones

**Recolecciones** lista las recolecciones, descubrimientos y escaneos del asset con su fecha, tipo, estado y duración, con las fallidas resaltadas. Elige una para ver su log:

- los pasos de la ejecución y cada comando que lanzó el worker (`ssh`, `ansible-playbook`, `trivy`…) con su duración y código de salida;
- las tareas de Ansible, tras **Ver detalle**, y las que fallaron con su mensaje;
- las últimas líneas de la salida de error de lo que falló, y el resultado.

El log se refresca mientras la ejecución está en cola o en curso. Los secretos, claves y tokens se censuran antes de guardar el log, y la salida de los comandos (los datos del servidor) no se guarda nunca. El log de cada ejecución tiene un tope de 256 KiB (`COLLECTION_LOG_MAX_KB`) y se borra a los 30 días (`COLLECTION_LOG_RETENTION_DAYS`).

Todos ven la lista de ejecuciones. Leer un log exige el permiso `assets.operate` (Admin, Editor y Operador), porque incluye la salida de error de los servidores.

### Snapshots

Cada recolección que cambia algo guarda un snapshot. **Snapshots** los enumera y muestra las diferencias entre dos de ellos: paquetes añadidos, quitados o actualizados, servicios, puertos y datos del sistema.

## Acciones en lote

Marca las filas que quieras (o **Seleccionar todo lo visible**) y usa la barra inferior: etiquetar y desetiquetar, mover a un proyecto, recolectar, escanear, aplicar una política o dar de baja. Las acciones disponibles dependen de tu rol. Marcar un host no marca sus hijos.

## Etiquetas

Las etiquetas son texto libre. Añádelas desde la ficha o en lote. Sus colores se eligen en **Ajustes → Inventario**. Las etiquetas sirven para las políticas (reconciliación y escaneo por etiqueta) y para el acceso a la terminal.

## Proyectos

Un proyecto agrupa assets, cada uno con todo lo que contiene. Añadir un host Docker añade sus contenedores, imágenes, redes y volúmenes. Las excepciones sacan del proyecto un asset y su contenido.

[Captura: Proyectos en cuadrícula con assets, CVE abiertos y hallazgos críticos]

Cada proyecto tiene su propio panel y su propia política (que se aplica salvo que el asset, un nodo superior o una etiqueta tengan una regla más concreta), y sirve de filtro en todas partes (`proyecto:`).

[Captura: Panel de un proyecto con resumen de assets, vulnerabilidades con parche y los CVE más urgentes]

## Paneles

**Panel** es una rejilla de widgets: vulnerabilidades prioritarias, altas pendientes, tareas en curso, assets por tipo o estado, avisos, caducidades, CVE nuevos, actividad reciente y gráficos de evolución. Pulsa **Personalizar** para añadir, quitar, redimensionar y mover widgets. Cada usuario tiene su disposición y cada proyecto, la suya.

## Reconciliación

El worker reconcilia cada nodo raíz con la frecuencia que fija su política (cada 6 horas por defecto). Recoge y vuelve a descubrir el nodo, añade lo nuevo, actualiza lo que cambia y guarda un snapshot. Lo que falta en 3 descubrimientos completos seguidos (`RECONCILE_RETIRE_AFTER`) pasa a retirado. **Reconciliar ahora** lo fuerza para un asset.

## Actividad

**Actividad** lista todos los trabajos (recolecciones, descubrimientos, escaneos, verificaciones de alta, reevaluaciones de SBOM) con su asset, estado, réplica del worker, inicio, duración y si tiene log.

Cada trabajo indica su **origen**, con un enlace a lo que lo lanzó:

| Origen | Significado |
|---|---|
| **En lote** | Una acción en lote sobre varios assets. |
| **Encadenada** | Otro trabajo; por ejemplo, una recolección que lanzó un descubrimiento. |
| **Manual** | Alguien lo pidió desde la interfaz o la API. |
| **Programada** | La comprobación periódica del inventario (reconciliación). |
| **Alta** | La verificación de un servidor nuevo. |

Filtra por estado, tipo u origen para encontrar los trabajos fallidos y su error. Al pulsar una fila se abre la página del trabajo (`/activity/<id>`) con sus tiempos, el error, los trabajos que lanzó y su log (con `assets.operate`). Llevan a ella la pestaña **Recolecciones**, el widget **Actividad reciente** y el resultado de una acción en lote. Los trabajos anteriores a la versión 0.6.0 no tienen origen.

[Captura: Lista de actividad con trabajos terminados por asset y worker]

---

Página HTML: https://infraward.net/es/docs/inventory/
