refactor(ambitos): Migración completa dtic-DASUTEN (A04) y dtic-BKPs (A03) + herramientas ADN

Migración dtic-DASUTEN a estándar A04:
- A04_dtic-DASUTEN.md: Manifiesto creado
- A04.P001 a A04.P005: Planes renombrados de P2601.*
- _hist/_hist_P2601_dasuten.md: Legacy archivado

Migración dtic-BKPs a estándar A03:
- A03_dtic-BKPs.md: Manifiesto creado
- A03.P001, A03.P002: Planes migrados
- docs/ambito/dtic-BKPs/: Nueva estructura

Herramientas ADN nuevas:
- adn/tools/bkps/: BKPs migrado a tools ADN
- adn/tools/cli/dron.rb: Vigía de tareas largas
- adn/tools/cli/copiloto.rb: Asistente CLI
- adn/tools/cli/novato.rb: CLI de aprendizaje

Limpieza:
- dtic-BKPs/ → _hist/dtic-BKPs/ (legacy archivado)
- adn/tools/cli/backup.rb → _hist/ (migrado a bkps.rb)

Otros:
- nodos/pcv-dasu1.md, srvv-data.md, srvv-nginx-rm.md: Actualizados
- adn/tools/core/conciliador.rb: Mejoras
- adn/tools/w-zombi/data/cmd.json: Actualizado

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ricardo Monla
2026-04-07 10:23:53 -03:00
co-authored by Claude Opus 4.6
parent 018e45e046
commit 1802c25194
61 changed files with 3148 additions and 1201 deletions
@@ -0,0 +1,108 @@
# Plan: Migración dtic-BKPs a Tools ADN
> **Grupo de Trabajo:** dtic-BKPs (Respaldos de Infraestructura)
**Código:** A03.P001
**Fecha:** 06 de abril de 2026
**Autor:** Sistema ADN
**Versión:** 1.0
**Estado:** ✅ COMPLETADO
## 📋 Resumen Ejecutivo
La herramienta `dtic-BKPs v6.0` actualmente reside en el directorio raíz del repositorio (`dtic-BKPs/`) como un sistema independiente con su propio entrypoint (`dtic-BKPs.rb`), configuración YAML, librería interna (`lib/`) y logs propios. Esto contradice el principio de **Armonía Integral** del ADN, donde todas las herramientas deben integrarse bajo `./adn/tools/run <subcomando>`.
Ya existe un intento previo parcial en `adn/tools/cli/backup.rb` (25KB) y `adn/tools/cli/backup/configurador.rb`, pero tiene bugs (el `--help` falla con `undefined local variable or method 'mostrar_ayuda'`).
El objetivo es **completar la migración** integrando la lógica probada de `dtic-BKPs v6.0` en el ecosistema ADN, preservando la configuración YAML y los procesadores funcionales.
## 🎯 Objetivo
Migrar `dtic-BKPs/` completamente a `adn/tools/cli/` para que:
1. Se invoque vía `./adn/tools/run bkps <subcomando>` (consistente con el ecosistema).
2. La configuración YAML se centralice en `adn/tools/config/bkps.yml`.
3. Los procesadores (Proxmox, Xen, Rclone) se integren como módulos ADN.
4. Los logs se unifiquen con el sistema de logging ADN (`adn/tools/core/logger`).
5. El directorio `dtic-BKPs/` raíz quede deprecado y eventualmente archivado.
## 📊 Inventario Actual
### Fuente: `dtic-BKPs/` (a migrar)
| Archivo | Tamaño | Función |
| :--- | :--- | :--- |
| `dtic-BKPs.rb` | 5.6 KB | Entrypoint, dispatcher, menú, auto-screen |
| `dtic-BKPs.yml` | 2.3 KB | Configuración de tareas y comandos |
| `lib/config.rb` | 1.7 KB | Parser de configuración YAML |
| `lib/logger.rb` | 1.7 KB | Logger propio (duplica ADN Logger) |
| `lib/menu.rb` | 5.9 KB | Menú interactivo con auto-avance |
| `lib/proc_proxmox.rb` | 5.0 KB | Procesador de dumps Proxmox |
| `lib/proc_xen.rb` | 2.7 KB | Procesador de backups XenServer |
| `lib/sync_rclone.rb` | 1.5 KB | Sincronización rclone |
### Destino: `adn/tools/cli/` (existente parcial)
| Archivo | Tamaño | Estado |
| :--- | :--- | :--- |
| `backup.rb` | 25.5 KB | ⚠️ Incompleto, `--help` roto |
| `backup/configurador.rb` | 1.2 KB | ⚠️ Solo configurador |
## 📅 Fases de Implementación
### ✅ FASE 1: Auditoría y Diagnóstico (Completada 2026-04-06)
- **1.1:** ✅ Analizado `adn/tools/cli/backup.rb` — 25KB con bugs (`mostrar_ayuda` undefined).
- **1.2:** ✅ Comparado con `dtic-BKPs v6.0` — funcionalidad probada y estable.
- **1.3:** ✅ Dependencias verificadas: rclone ✔, pv ✔, screen ✔.
### ✅ FASE 2: Migración a adn/tools/bkps/ (Completada 2026-04-06)
- **2.1:** ✅ Creado `adn/tools/bkps/bkps.rb` — CLI `SubcomandoBkps` con subcomandos: help, list, run, status, menu.
- **2.2:** ✅ Migrados procesadores a `adn/tools/bkps/lib/` — proc_proxmox.rb, proc_xen.rb, sync_rclone.rb, config.rb, menu.rb.
- **2.3:** ✅ Configuración YAML copiada a `adn/tools/bkps/bkps.yml`.
- **2.4:** ✅ Logger propio reemplazado por ADN Logger nativo.
- **2.5:** ✅ Dispatcher (`adn/tools/run`) actualizado con ruta `'bkps'``ADN::SubcomandoBkps`.
### ✅ FASE 3: Auditoría de backup.rb legacy (Completada 2026-04-06)
Análisis de `adn/tools/cli/backup.rb` (659 líneas, 25KB) — funcionalidades **diferentes** a las de dtic-BKPs v6.0:
| Funcionalidad | Descripción | Asimilar? |
| :--- | :--- | :---: |
| `ejecutar_backup(nodo)` | Backup remoto individual vía vzdump+SSH+candados, auto-detección VMID/host desde nodos/*.md | ✅ |
| Bitácora-First integrado | Auto-crear/actualizar evento en DB durante ejecución | ✅ |
| `comando_estados` | Consulta en tiempo real de tareas vzdump en cluster Proxmox vía API JSON | ✅ |
| `comando_sanear` | Saneamiento con retención configurable, exclusiones interactivas, borrado remoto | ✅ |
| `predeterminar` | Persistencia de defaults vía Configurador | ⏳ |
| `auto_reconciliar_bitacora` | Cierre automático de entradas pendientes cruzando con API Proxmox | ✅ |
**Bugs encontrados:** `mostrar_ayuda` mal anidado (fuera de scope private), `end` desbalanceados (L620-658).
### ✅ FASE 4: Asimilación de funcionalidades de backup.rb (Completada 2026-04-06)
- **4.1:** ✅ `bkps backup <nodo>` — backup remoto individual vía vzdump+SSH+candados con auto-detección de VMID/host.
- **4.2:** ✅ `bkps estados` — consulta estado Proxmox en tiempo real vía API JSON.
- **4.3:** ✅ `bkps sanear --dias N` — saneamiento con retención configurable, `--dry-run`, borrado remoto.
- **4.4:** ✅ Auto-cierre de bitácora implementado como tool ADN `dron` (reutilizable para cualquier ámbito).
### ✅ FASE 5: Validación, Documentación y Deprecación (Completada 2026-04-06)
- **5.1:** ✅ Pipeline C4 ejecutado exitosamente vía `./adn/tools/run bkps run C4 --batch` (23 sets, ~26min).
- **5.2:** ✅ Armonía Integral aplicada: ámbito, contexto y plan actualizados.
- **5.3:** ✅ Archivado: `dtic-BKPs/``_hist/dtic-BKPs/`, `backup.rb``adn/tools/cli/_hist/`.
## 🛠 Estructura Final
```
adn/tools/bkps/ # Tool principal (A03)
├── bkps.rb # CLI (11 subcomandos)
├── bkps.yml # Configuración YAML (tareas, retención 3 tiers)
├── cron-bkps.sh # Wrapper cron con lockfile + dron
└── lib/
├── config.rb # Parser YAML
├── menu.rb # Menú TUI interactivo
├── proc_proxmox.rb # Procesador Proxmox
├── proc_xen.rb # Procesador XEN
└── sync_rclone.rb # Sincronización rclone
adn/tools/cli/dron.rb # Dron de tareas largas (reutilizable)
```
## 📌 Notas
- Pipeline C4 ejecutado exitosamente el 2026-04-06 (23 sets Proxmox, ~26min).
- Tool `dron` creada como herramienta ADN genérica: `./adn/tools/run dron {lanzar|vigilar|estado|limpiar}`.
- Legacy archivado en `_hist/dtic-BKPs/` (standalone) y `adn/tools/cli/_hist/backup.rb` (intento previo).
@@ -0,0 +1,88 @@
# Plan: Automatización de Backups de Servidores
> **Grupo de Trabajo:** dtic-BKPs (Respaldos de Infraestructura)
**Código:** A03.P002
**Fecha:** 06 de abril de 2026
**Autor:** Sistema ADN
**Versión:** 1.2
**Estado:** ✅ COMPLETADO (F4.1 alertas pendiente futura iteración)
**Dependencia:** [A03.P001 — Migración a Tools ADN](A03.P001_Migracion_ADN.md) ✅
**Última verificación:** 2026-04-06 13:17 (drones operativos)
## 📋 Resumen Ejecutivo
Automatizar el ciclo completo de backups de servidores virtualizados (XenServer y Proxmox). Gracias a la migración completada en A03.P001, ya se cuenta con:
- CLI unificada: `./adn/tools/run bkps <subcomando>` (11 subcomandos)
- Modo batch: `bkps run C4 --batch` (pipeline completo sin interacción)
- Saneamiento: `bkps sanear --dias N` (limpieza con retención)
- Backup individual: `bkps backup <nodo>` (vzdump remoto)
- Monitoreo: `bkps estados` (estado Proxmox en tiempo real)
- Delegación: `dron lanzar --evento ID -- <comando>` (auto-cierre bitácora)
El objetivo de este plan es llevar esas capacidades a ejecución **programada y desatendida** con registro automático, notificaciones y políticas de retención.
## 🎯 Objetivo
1. **Ejecución programada** — Cron jobs en horarios de baja carga sin intervención.
2. **Registro automático en bitácora** — Cada ejecución crea/cierra su evento vía `dron`.
3. **Notificaciones** — Alertas por resultado (éxito/fallo).
4. **Rotación y limpieza** — Políticas de retención automatizadas vía `bkps sanear`.
5. **Monitoreo de salud** — Reporte de estado ampliado en `bkps status`.
## 📅 Fases de Implementación
### ✅ FASE 1: Ejecución No-Interactiva (Completada — heredada de A03.P001)
- **1.1:** ✅ `bkps run C4 --batch` — pipeline completo sin interacción.
- **1.2:** ✅ Logging con métricas: duración por tarea (▶→✔ Xm Ys) + total + conteo de fallos.
- **1.3:** ✅ Auto-cierre de bitácora vía `dron lanzar --evento ID -- <comando>`.
### ✅ FASE 2: Programación y Orquestación (Completada 2026-04-06)
- **2.1:** ✅ Cron wrapper: `adn/tools/bkps/cron-bkps.sh C4 "nota"`.
- **2.2:** ✅ Lockfile en `tmp/locks/bkps_<ref>.lock` (auto-cleanup, stale detection).
- **2.3:** ✅ Integración dron: bitácora automática (evento:crear + auto-cierre con resultado).
```bash
# Ejemplo cron nocturno con bitácora automática
./adn/tools/run dron lanzar --evento AUTO --nota "Cron: backup nocturno C4" -- ./adn/tools/run bkps run C4 --batch
```
### ✅ FASE 3: Retención y Limpieza Automática (Completada 2026-04-06)
- **3.1:** ✅ Retención 3 tiers en YAML: Proxmox (zfsDISCO1), Local (ns8Disco3), Nube (rmOneDrive).
- **3.2:** ✅ `bkps sanear` con protección 🛡️ más reciente por nodo por tier.
- **3.3:** ✅ `bkps buscar <nodo>` — localizar backups en los 3 tiers.
- **3.4:** ✅ C5 (`full_full_sanear`) con post-sanear automático.
### ✅ FASE 4: Notificaciones y Monitoreo (Completada 2026-04-06)
- **4.1:** ⏳ Alertas por fallo (email/webhook) — pendiente futura iteración.
- **4.2:** ✅ `bkps status` ampliado: herramientas, espacio disco, retención configurada.
- **4.3:** ✅ Bitácora web ya muestra eventos de backups vía `dron` auto-cierre.
## 🛠 Herramientas Disponibles (heredadas de A03.P001)
| Comando | Función |
| :--- | :--- |
| `bkps run C4 --batch` | Pipeline completo sin interacción |
| `bkps backup <nodo>` | Backup individual vzdump remoto |
| `bkps buscar <nodo>` | Localizar backups en 3 tiers |
| `bkps estados` | Estado Proxmox en tiempo real |
| `bkps sanear` | Sanear 3 tiers con protección por nodo |
| `bkps sanear --tier N` | Sanear tier específico |
| `bkps status` | Estado del sistema + espacio disco |
| `dron lanzar --evento ID/AUTO -- <cmd>` | Auto-cierre de bitácora |
| `dron flota` | Dashboard de flota |
| `dron salud` | Health check (zombies/estancados) |
## 🛸 Estado de Drones (Verificación 2026-04-06)
**Flota:** 2 drones completados y limpiados
- `dron_125106_654316` — Evento #1395: "Test diario de vuelo" → ✔ OK (0min)
- `dron_125505_657901` — Evento #1398: "Test diario v2" → ✔ OK
**Diagnóstico:** Ambos drones completaron exitosamente pero quedaron como "zombies" (PID muerto, estado=vigilando). El health check los auto-reparó marcándolos como fallidos y `dron limpiar` los removió.
**Conclusión:** Sistema de auto-reparación funciona correctamente. Verificar flota al inicio de sesión:
```bash
./adn/tools/run dron salud # Detecta y auto-repara zombies
./adn/tools/run dron limpiar # Remueve completados
```
+135
View File
@@ -0,0 +1,135 @@
# A03 - Ámbito dtic-BKPs
> Manifiesto de Ámbito | Referencia: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md)
## Identificación
| Campo | Valor |
| :--- | :--- |
| **Código** | A03 |
| **Nombre** | Backups de Servidores — dtic-BKPs |
| **Estado** | ⏳ En Ejecución |
| **Inicio** | 06/04/2026 |
| **Fin Estimado** | Recurrente (operación continua) |
## Objetivo
El ámbito **dtic-BKPs** engloba todas las operaciones de respaldo (backup), procesamiento y sincronización de máquinas virtuales y datos críticos de la infraestructura DTIC. Esto incluye:
1. **Procesamiento de backups de VMs** (XenServer y Proxmox) desde orígenes locales y remotos.
2. **Sincronización y descarga** de archivos de respaldo entre nodos de almacenamiento.
3. **Upload a la nube** (OneDrive) de backups procesados para resguardo offsite.
## Herramientas
| Herramienta | Uso |
| :--- | :--- |
| **ADN CLI `bkps`** | `./adn/tools/run bkps <subcomando>` — interfaz unificada |
| **bkps.yml** | Configuración declarativa de tareas y comandos (`adn/tools/bkps/bkps.yml`) |
| **rclone** | Sincronización de archivos local ↔ remoto ↔ nube |
| **VZDump** | Respaldos offline de VMs Proxmox (stop mode) |
| **screen** | Sesiones desatendidas para operaciones largas |
| **ADN CLI `dron`** | `./adn/tools/run dron` — vigía de tareas largas con auto-cierre de bitácora |
## Nodos Involucrados
| Nodo | Rol en el Ámbito |
| :--- | :--- |
| **srv-ns8** | Almacenamiento central (ns8Disco2/ns8Disco3), procesamiento de backups |
| **pve_PMOX3** | Origen de dumps Proxmox (zfsDISCO1) |
| **srvv-maurik** | Origen de backups XenServer |
## Tareas Configuradas
| ID | Descripción | Tipo |
| :--- | :--- | :--- |
| `proc_syncXen1` | Procesar BKPs de VMs XEN01 | xva |
| `proc_syncPmox` | Procesar BKPs de VMs Proxmox | proxmox |
| `sinc_pmox_ns8` | Descargar BKPs de zfsDISCO1 | rclone |
| `sync_BkpAntiguos_nube` | Upload bkps-ANTIGUOS a OneDrive | rclone |
| `sync_BkpsSERVIDORes_nube` | Upload bkps-SERVIDORes a OneDrive | rclone |
| `sync_BkpUsers_nube` | Upload bkps-USERs a OneDrive | rclone |
## Comandos Compuestos
| ID | Descripción | Tareas |
| :--- | :--- | :--- |
| `descargar_y_procesar_pmox` | Descargar y Procesar BKPs de PMOX | sinc_pmox_ns8 → proc_syncPmox |
| `full_procesamiento` | Procesar TODOS los BKPs | proc_syncXen1 → proc_syncPmox |
| `full_upload` | Subir todos los BKPs a la Nube | sync_BkpAntiguos, sync_BkpsSERVIDORes, sync_BkpUsers |
| `full_full` | Procesar y Subir todo | Todas las tareas |
## Flujo de Trabajo Típico
```
1. Registrar evento en bitácora (inicio de jornada de backups)
2. Ejecutar: ./adn/tools/run bkps run <T1|C1|ID>
3. Monitorear progreso (screen -r si es desatendido)
4. Cerrar evento en bitácora con hora de fin
```
### Subcomandos ADN disponibles
```bash
./adn/tools/run bkps help # Ayuda
./adn/tools/run bkps list # Listar tareas y comandos
./adn/tools/run bkps run T1 # Ejecutar tarea individual
./adn/tools/run bkps run C4 --batch # Pipeline completo sin interacción
./adn/tools/run bkps run T1 --dry-run # Simulación
./adn/tools/run bkps status # Estado del sistema + espacio disco
./adn/tools/run bkps estados # Estado Proxmox en tiempo real
./adn/tools/run bkps backup <nodo> # Backup remoto individual (vzdump)
./adn/tools/run bkps buscar <nodo> # Buscar backups en 3 tiers
./adn/tools/run bkps sanear # Sanear 3 tiers (Proxmox+Local+Nube)
./adn/tools/run bkps sanear --tier 2 # Sanear solo tier específico
./adn/tools/run bkps menu # Menú interactivo (auto-screen)
```
## Planes Asociados
| Código | Nombre | Estado |
| :--- | :--- | :--- |
| [A03.P001](A03.P001_Migracion_ADN.md) | Migración a Tools ADN | ✅ |
| [A03.P002](A03.P002_Automatizacion_Backups.md) | Automatización de Backups | ✅ |
## 🛸 Sistema de Drones (Operación Autónoma)
**Herramienta:** `./adn/tools/run dron <subcomando>`
| Subcomando | Función |
| :--- | :--- |
| `dron lanzar --evento ID/AUTO --nota "X" -- <cmd>` | Lanzar tarea en background con auto-bitácora |
| `dron flota` | Dashboard compacto de la flota |
| `dron salud` | Health check activo (detecta zombies/estancados) |
| `dron estado` | Estado detallado de cada dron |
| `dron limpiar` | Limpiar tareas completadas/fallidas |
**Estado actual (2026-04-06 13:17):** Flota limpia — 2 drones completados y removidos.
**Evento AUTO:** Crea evento de bitácora automáticamente y lo cierra al finalizar. Ideal para cron jobs y tareas desatendidas.
**Ejemplo cron:**
```bash
./adn/tools/run dron lanzar --evento AUTO --nota "Backup nocturno C4" -- ./adn/tools/run bkps run C4 --batch
```
## 🔄 Armonía Integral
**Última actualización:** 2026-04-06 (reestructuración completada)
| Documento | Estado | Notas |
| :--- | :--- | :--- |
| `docs/contexto/IA.md` | ✅ Actualizado | Procedimiento de Armonía Integral agregado |
| `A03_dtic-BKPs.md` | ✅ Actualizado | Manifiesto con drones y estructura estándar |
| `A03.P002_Automatizacion_Backups.md` | ✅ Actualizado | Versión 1.2, estado de drones |
---
## Referencias
- **CLI ADN**: `./adn/tools/run bkps help`
- **Código fuente**: [`adn/tools/bkps/bkps.rb`](../../../adn/tools/bkps/bkps.rb)
- **Configuración**: [`adn/tools/bkps/bkps.yml`](../../../adn/tools/bkps/bkps.yml)
- **Legacy (archivado)**: [`_hist/dtic-BKPs/`](../../../_hist/dtic-BKPs/) — versión standalone pre-migración
- **ADN Ontología**: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md)
- **Bitácoras**: `./adn/tools/run db evento:listar --ambito dtic-BKPs`