Files
brahman/crates/modules/matilda/SDD.md
T
sergio 3f8a3ea4b6 feat(matilda): administración de servidores — core + config + plan
matilda-core: modelo declarativo (Host, Container, VHost, Inventory).
matilda-config: renderiza Container→docker-compose/docker run y
VHost→bloque server nginx (con TLS + redirección :80→:443).
matilda-plan: reconciliación pura actual→deseado con acciones
ordenadas por dependencia (contenedores antes que vhosts, removes
en orden inverso). Demo CLI en apps/matilda.

29 tests. Funciones puras, cero Docker/SSH/disco.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 17:06:36 +00:00

2.1 KiB

modules/matilda/ — Administración de servidores

Propósito. Administrar servidores de forma declarativa: se describe el inventario deseado (hosts, contenedores Docker, vhosts de proxy inverso) y matilda renderiza la configuración y calcula el plan que reconcilia el estado actual con el deseado.

Crates

crate tipo rol
matilda-core lib Modelo: Host, Container, VHost, Inventory
matilda-config lib Renderizado: Container → docker-compose / docker run; VHost → nginx
matilda-plan lib Reconciliación: plan(actual, deseado) → lista ordenada de Actions

App: apps/matilda — demo CLI (cargo run -p matilda).

Flujo

  Inventory (deseado) ──► matilda-config ──► docker-compose.yml + nginx
        │
        └──► matilda-plan ◄── Inventory (actual) ──► Plan { actions }
  • Declarativo: el inventario describe qué debe existir; nadie ejecuta nada en core/config/plan — son funciones puras.
  • Plan ordenado: crear contenedores antes que vhosts; eliminar vhosts antes que sus contenedores. Determinista (inventario en BTreeMap).

Dependencias

  • config y planmatilda-core. Todos #![forbid(unsafe_code)].
  • Cero Docker, cero SSH, cero disco — sólo modelos y strings.

Estado

core + config + plan implementados y verdes (29 tests) + demo CLI.

Pendiente (la capa de I/O, ~7 sub-crates del plan original):

crate pendiente rol
matilda-linker transporte SSH (sobre transport-ssh-multiplex)
matilda-ghost agente remoto que aplica el plan en el servidor
matilda-docker ejecución real de Docker vía Linker/Ghost
matilda-app frontend GPUI