4. Nivel 0 y Espejo Local de Dependencias¶
Reconstruir todo desde cero es el principio más exigente del sistema. Para que sea posible sin internet, hace falta un "kit de rescate" físico y tres almacenes locales de dependencias. Mientras estos componentes funcionen, SmallCountry puede reconstruirse aunque el resto del mundo esté desconectado.
Nivel 0 — Rescue Boat¶
Dispositivo físico (SSD externo o USB de alta capacidad) que contiene:
| Recurso | Contenido |
|---|---|
| Binarios esenciales | OpenTofu, Ansible, git, curl, jq |
| Estado de infraestructura | .tfstate de OpenTofu |
| Script de arranque | bootstrap.sh |
| Credenciales mínimas | Claves SSH, tokens API (interfaz de programación) |
| Documentación offline | Copia estática de docs.sc con runbooks |
Se actualiza trimestralmente y se guarda en ubicación física separada del servidor.
Espejo Local de Dependencias¶
1. Apt-Cacher-NG — proxy de paquetes¶
Caché transparente de paquetes Debian/Proxmox. Cada apt install pasa por él. Si internet cae, los paquetes ya descargados se siguen sirviendo a velocidad local.
2. Forgejo Registry OCI — imágenes Docker¶
Todas las imágenes se cachean localmente. Flujo: Docker Hub → Forgejo Registry → Trivy + Cosign + SBOM (lista de componentes de software) → cuarentena → disponible para LXCs (contenedores ligeros de Proxmox). Los nodos de producción NUNCA acceden a Docker Hub.
3. Espejo PyPI — paquetes Python¶
Dependencias de Ansible, code-server y otras herramientas cacheadas localmente. Mismo principio que APT.
Reconstrucción offline¶
flowchart TD
RescueBoat([Rescue Boat conectado]) --> Bootstrap[1. bootstrap.sh\nInstala OpenTofu y Ansible\ndesde binarios locales]
Bootstrap --> Recrea[2. OpenTofu recrea\ninfraestructura]
Recrea --> C1[Bridges, VLANs\nLXCs, volúmenes ZFS]
C1 --> AnsibleProv[3. Ansible provisiona\ncada LXC]
AnsibleProv --> D1[apt install desde\nApt-Cacher-NG offline]
AnsibleProv --> D2[docker pull desde\nForgejo Registry offline]
AnsibleProv --> D3[pip install desde\nespejo PyPI offline]
D1 --> Restauracion[4. Restauración de datos\ndesde PBS local]
D2 --> Restauracion
D3 --> Restauracion
Restauracion --> Verificacion[5. Verificación funcional]
Verificacion --> F1[Healthchecks HTTP]
F1 --> F2[Consultas de integridad BD]
F2 --> RTO([RTO objetivo: menor a 15 min])
Mantenimiento¶
| Componente | Frecuencia | Verificación |
|---|---|---|
| Rescue Boat | Trimestral | Simulacro: arrancar Proxmox limpio desde Rescue Boat |
| Apt-Cacher-NG | Continuo (transparente) | Automático |
| Forgejo Registry | Nocturno | Renovate + cuarentena |
| Espejo PyPI | Bajo demanda | Semaphore |
Relaciones con otros mecanismos¶
- Modo de Emergencia: el Nivel 0 es el último recurso cuando incluso el Modo de Emergencia no es suficiente
- Cuarentena de Artefactos: el registro OCI implementa la cuarentena de imágenes
- Contratos de Datos: mismo principio de soberanía aplicado a dependencias de software
El Nivel 0 y el Espejo Local son la diferencia entre "tengo backups" y "puedo reconstruir". Lo primero es necesario. Lo segundo es soberanía.