3f8a3ea4b6
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>
2.1 KiB
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
configyplan←matilda-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 |