From 74649d49ad396c3837c38771565aeb1c7b67bb50 Mon Sep 17 00:00:00 2001 From: Ricardo Monla Date: Tue, 14 Apr 2026 20:38:02 -0300 Subject: [PATCH] [Informes DASUTEN] Resguardadas versiones v0.4 y v0.3 en _versiones/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se copian los informes actualizados al directorio de versiones: - 01_v0.4.md — Informe ejecutivo con pipeline de backups implementado - 02_v0.3.md — Informe técnico con anexo G de drones atómicos Cambios desde versiones anteriores: - Estado 100% completado (vs 95%) - Impresión resuelta mediante symlink - Pipeline de backups documentado (6 drones atómicos) - Módulo DasuExecutor incorporado - Integración con bkps.rb detallada --- .../_versiones/01_v0.4.md | 147 +++++ .../_versiones/02_v0.3.md | 606 ++++++++++++++++++ 2 files changed, 753 insertions(+) create mode 100644 docs/informes/2026-04_DASUTEN-migracion/_versiones/01_v0.4.md create mode 100644 docs/informes/2026-04_DASUTEN-migracion/_versiones/02_v0.3.md diff --git a/docs/informes/2026-04_DASUTEN-migracion/_versiones/01_v0.4.md b/docs/informes/2026-04_DASUTEN-migracion/_versiones/01_v0.4.md new file mode 100644 index 00000000..9632a1e1 --- /dev/null +++ b/docs/informes/2026-04_DASUTEN-migracion/_versiones/01_v0.4.md @@ -0,0 +1,147 @@ +# INFORME DE AVANCE +## Migración del Sistema DASUTEN a Infraestructura Autónoma + +> **Área responsable:** Departamento de Tecnología de la Información y Comunicaciones (DTIC) +> **Facultad Regional La Rioja — Universidad Tecnológica Nacional** +> **Fecha:** 13 de abril de 2026 +> **Elaborado por:** Ricardo Monla — DTIC, UTN-FRLR +> **Destinatarios:** [Completar] +> **Versión:** 0.3 (Borrador) +> +> *Este documento es de carácter ejecutivo y narrativo. El detalle técnico completo se encuentra en el documento complementario [02_informe_tecnico_DASUTEN.md](02_informe_tecnico_DASUTEN.md).* + +--- + +## 1. Contexto y Punto de Partida + +El sistema de gestión administrativa de **DASUTEN** (Departamento de Acción Social Universitaria Tecnológica Nacional) en la Facultad Regional La Rioja funcionaba desde hace años sobre la infraestructura informática compartida de la Facultad: servidores, red interna y servicios de dominio que atienden a toda la institución. + +Si bien esta configuración fue funcional durante un tiempo, con el correr de los años fue manifestando limitaciones concretas: + +- **Fragilidad operativa:** Cualquier incidencia en la red o los servidores de la Facultad —incluso ajena a DASUTEN— impactaba directamente en el funcionamiento del sistema. +- **Complejidad desproporcionada:** La arquitectura heredada requería múltiples servidores virtuales y un controlador de dominio, componentes pensados para entornos de mayor escala que resultaban sobredimensionados para las necesidades de una sola oficina. +- **Dificultad de mantenimiento:** Los respaldos de datos y las actualizaciones periódicas que envía Rectorado requerían coordinación con la infraestructura general de la Facultad, generando demoras y dependencias cruzadas. +- **Limitación de autonomía:** DASUTEN, si bien opera dentro de las instalaciones de la Facultad, responde funcionalmente a **Rectorado (Buenos Aires)**. La dependencia de la infraestructura local dificultaba una eventual gestión directa desde la sede central. + +A esta situación se sumó que, al reubicarse la oficina en un espacio propio alejado de los servidores, las fallas de conectividad se agravaron por la cantidad de puntos intermedios en la red. Para dar continuidad al servicio, se gestionó una línea de internet propia y se implementó un esquema de trabajo indirecto donde las usuarias — Andrea Almirón y Romina Molina — accedían mediante escritorio remoto a una PC virtual para poder operar el sistema. Esto implicaba mantener cuatro componentes simultáneamente (servidor de dominio, servidor de base de datos, PC virtual y PC física), multiplicando los puntos de falla. + +--- + +## 2. Objetivo del Proyecto + +Diseñar e implementar una solución que permita al sistema DASUTEN operar de forma **completamente autónoma**, teniendo en cuenta: + +- **Recursos limitados:** Aprovechar equipos ya existentes — un equipo de escritorio de prestaciones modestas y un servidor compacto reutilizado. **Sin adquisición de hardware nuevo.** +- **No interferir con la oficina:** Que DTIC pueda realizar respaldos, actualizaciones de Rectorado y soporte técnico **de forma remota y transparente**, sin afectar las tareas cotidianas. +- **Trabajo directo:** Que las usuarias operen el sistema directamente desde la PC de la oficina, sin depender de conexiones remotas intermedias. +- **Simplicidad:** Una arquitectura lo más simple posible, administrable y confiable en el tiempo. + +--- + +## 3. Qué se logró + +### 3.1 La simplificación + +Se reemplazó la arquitectura compleja por un esquema directo y simple: + +| Aspecto | Antes | Ahora | +|:---|:---:|:---:| +| Componentes necesarios | 4 | 2 | +| Forma de trabajo | Indirecta (vía escritorio remoto) | Directa (sistema en la PC) | +| Dependencia de red de Facultad | Sí | No | +| Puntos de falla | Múltiples | Mínimos | +| Requiere presencia física para soporte | Frecuentemente | No | +| Hardware nuevo adquirido | — | Ninguno | + +Las usuarias ahora operan el sistema **directamente desde la PC de la oficina**. El servidor de base de datos funciona dentro de la misma oficina, en la red propia de DASUTEN, sin intermediarios. + +### 3.2 El proceso: de testeo a producción + +Si bien el proyecto llevó más tiempo del inicialmente estimado, esto responde a una decisión deliberada: se planificó una **etapa de testeo exhaustivo** antes de llevar el sistema a producción. Cada paso fue validado primero en un entorno de pruebas antes de aplicarse al entorno real, minimizando riesgos para la operación de la oficina. + +**A la fecha, el sistema se encuentra a un paso del 100%**, restando únicamente un ajuste de compatibilidad en la impresión de documentos, para el cual ya se dispone de una solución provisoria. + +### 3.3 Valor agregado: herramientas y metodología + +Más allá del objetivo central, el trabajo realizado **generó herramientas y metodologías de valor** que benefician a la gestión de DTIC en su conjunto: + +- **Dashboard web de seguimiento** del proyecto, con visibilidad en tiempo real del progreso. +- **Sistema de bitácoras** con registro detallado y auditable de cada intervención técnica. +- **Herramientas de automatización** (Ecosistema ADN) para respaldos, gestión remota y tareas repetitivas. +- **Metodología de trabajo con IA generativa**, altamente productiva y replicable en futuros proyectos. +- **Pipeline de Drones Atómicos** para backups: 6 drones independientes que se encadenan secuencialmente, comunicándose vía JSON. +- **Módulo común DasuExecutor** que centraliza la ejecución remota de PowerShell, eliminando código repetido (-52% líneas). + +--- + +## 4. Estado Actual + +| Aspecto | Estado | +|:---|:---:| +| Sistema operativo en oficina | ✅ | +| Base de datos migrada y verificada | ✅ | +| Trabajo directo (sin escritorio remoto) | ✅ | +| Administración remota por DTIC | ✅ | +| Respaldos automatizados | ✅ Pipeline implementado | +| Impresión de documentos | ✅ Resuelto (symlink) | + +El sistema se encuentra **100% operativo**. La usuaria accede directamente al sistema desde la PC de la oficina. DTIC administra y respalda de forma remota sin interferir con la operación diaria. + +### 4.1 Pipeline de Backups Implementado + +Se implementó un sistema automatizado de backups con las siguientes características: + +- **Backup completo semanal** (~1.3 GB, 35-40 minutos): `./adn/tools/run bkps run dasuten_full` +- **Backup diferencial diario** (~0.4-10 MB, 5-10 minutos): `./adn/tools/run bkps run dasuten_diferencial` +- **Arquitectura de Drones Atómicos**: 6 drones independientes (exportar → transferir → upload → download → restaurar → verificar) +- **Comunicación vía JSON**: Cada dron escribe su output en `/tmp/dron_*_output.json` para el siguiente paso +- **Google Drive como intermediario**: Elimina dependencia de Tailscale inestable +- **Integrado en bkps.rb**: Ejecutable desde el ecosistema ADN de herramientas + +### 4.2 Solución de Impresión + +El problema de impresión se resolvió mediante un **symlink** que redirige `C:\Sistema` → `C:\SysDasuten\Sistema`, permitiendo que el sistema encuentre las plantillas Word/Excel sin modificar el ejecutable compilado. + +--- + +## 5. Beneficios Alcanzados + +- **Trabajo directo:** Las usuarias operan el sistema sin intermediarios. +- **Autonomía operativa:** Infraestructura propia, desvinculada de la Facultad, preparada para gestión desde Rectorado. +- **Optimización de recursos:** Sin inversión en hardware nuevo. +- **Soporte transparente:** DTIC gestiona remotamente sin afectar la oficina. +- **Mayor estabilidad:** De 4 componentes a 2, menos fallas posibles. +- **Herramientas reutilizables:** Activos aprovechables para otros proyectos de DTIC. + +--- + +## 6. Próximos Pasos + +1. ✅ **Impresión resuelta** (symlink `C:\Sistema` → `C:\SysDasuten\Sistema`). +2. ✅ **Configuración de red estabilizada** (red plana DHCP del ISP). +3. ✅ **Respaldos automatizados implementados** (pipeline de drones integrado en bkps.rb). +4. ⏳ **Retiro de infraestructura legacy** (VMs 100-102 apagadas, preservadas como respaldo). +5. 🔄 **Refrescos diferenciales diarios** configurados (lun-vie 08:00). + +--- + +## 7. Conclusión + +La migración del sistema DASUTEN demuestra que es posible **lograr una mejora sustancial en estabilidad, autonomía y experiencia de trabajo** partiendo de recursos limitados y sin inversión adicional. + +Se pasó de un esquema indirecto y complejo a uno directo y simple, donde el sistema funciona en la propia oficina. El proceso generó además herramientas y metodologías que quedan como activo del área para futuros proyectos. + +DASUTEN opera hoy de forma independiente, administrable remotamente por DTIC y preparada para una gestión más ágil desde la Facultad Regional o desde Rectorado. + +--- + +### Historial de versiones + +| Versión | Fecha | Cambios | +|:---:|:---:|:---| +| 0.1 | 13/04/2026 | Borrador inicial | +| 0.2 | 13/04/2026 | Se amplía contexto de situación inicial | +| 0.3 | 13/04/2026 | Se retoma enfoque narrativo, se integra contexto como complemento | +| 0.4 | 14/04/2026 | Impresión resuelta + Pipeline de backups implementado | + +*Fin del informe.* diff --git a/docs/informes/2026-04_DASUTEN-migracion/_versiones/02_v0.3.md b/docs/informes/2026-04_DASUTEN-migracion/_versiones/02_v0.3.md new file mode 100644 index 00000000..db445e77 --- /dev/null +++ b/docs/informes/2026-04_DASUTEN-migracion/_versiones/02_v0.3.md @@ -0,0 +1,606 @@ +# INFORME TÉCNICO — Migración del Sistema DASUTEN a Nuevo Servidor + +> **Área:** Departamento de Tecnología de la Información y Comunicaciones (DTIC) +> **Proyecto:** Migración de infraestructura DASUTEN — Modo Workgroup sin Domain Controller +> **Código interno:** A04.P005 +> **Fecha del informe:** 13 de abril de 2026 +> **Elaborado por:** Ricardo Monla — Área DTIC, UTN-FRLR +> **Versión:** 0.2 +> +> *Este documento contiene el detalle técnico completo de la migración. Para la síntesis ejecutiva, ver [01_informe_ejecutivo_DASUTEN.md](01_informe_ejecutivo_DASUTEN.md).* + +--- + +## 1. Resumen Ejecutivo + +Se informa el avance de la migración del sistema de gestión administrativa **DASUTEN** (Departamento de Acción Social Universitaria Tecnológica Nacional) desde la infraestructura compartida de la Facultad hacia un entorno independiente, autónomo y simplificado. + +**Estado general del proyecto: 100% completado.** + +El sistema DASUTEN se encuentra **totalmente operativo** en la nueva infraestructura desde el día 14 de abril de 2026, habiendo superado exitosamente todas las pruebas funcionales incluyendo impresión de documentos. + +### Logros principales + +- ✅ Servidor de base de datos **completamente migrado** a infraestructura nueva. +- ✅ Base de datos de producción **restaurada y verificada** sin errores de integridad. +- ✅ Sistema DASUTEN **desplegado y operativo** en la PC física de la usuaria. +- ✅ Impresión de documentos **resuelta** mediante symlink. +- ✅ Eliminación exitosa de la dependencia del **Active Directory (Domain Controller)**. +- ✅ Simplificación de la arquitectura de red — de 3 servidores virtuales a 1. +- ✅ Pipeline de backups **automatizado** con drones atómicos. + +--- + +## 2. Antecedentes y Motivación + +### 2.1 Infraestructura original (en red de Facultad) + +El sistema DASUTEN operaba sobre infraestructura compartida con la Facultad Regional La Rioja, dependiendo de: + +- Un servidor SQL Server alojado en la red interna de la Facultad (`srvv-fenix`). +- Un Domain Controller Active Directory para la autenticación de usuarios. +- Conectividad de red interna de la Facultad con routing complejo. + +Esta configuración generaba **múltiples puntos de falla**: +- Dependencia del dominio institucional para la autenticación. +- Complejidad de red con subnetting privado, NAT y gateway interno. +- Cualquier cambio en la infraestructura de la Facultad impactaba directamente en DASUTEN. + +### 2.2 Esquema de trabajo provisorio (AnyDesk + PC Virtual) + +Al reubicarse la oficina DASUTEN en un espacio propio alejado de los servidores, se agravaron las fallas de conectividad: la señal de red recorría múltiples puntos intermedios dentro del edificio, y la caída de cualquiera de ellos dejaba a la oficina sin sistema. + +Para dar continuidad al servicio, se gestionó una **línea de internet propia** para la oficina y se implementó el siguiente esquema de trabajo: + +``` +PC Física (dasu-pc) Servidor srv-dasu (Proxmox VE) + Usuarias: Almirón / Molina ├── VM 100: dasu-srvv-dc (Domain Controller AD DS) + Acceso: AnyDesk ──────────────────► ├── VM 101: dasu-srvv-sql (SQL Server + BD sysdasuten) + (escritorio remoto) └── VM 102: dasu-pcv (PC Virtual ← trabajo aquí) +``` + +**Componentes requeridos:** 4 (servidor dominio + servidor BD + PC virtual + PC física con AnyDesk). + +**Flujo de trabajo de las usuarias:** PC física → AnyDesk (escritorio remoto) → PC virtual → sistema DASUTEN. + +Este esquema permitió: +- Dar continuidad al servicio independientemente de la red interna de la Facultad. +- Brindar asistencia técnica 24/7 por parte de DTIC vía acceso remoto. + +Pero implicaba: +- Experiencia de trabajo **indirecta** para las usuarias (doble salto). +- Cuatro componentes simultáneos que debían estar operativos. +- Múltiples puntos de falla que dificultaban el soporte. + +### 2.3 Objetivo del proyecto + +**Migrar el sistema DASUTEN a una infraestructura independiente y simplificada**, eliminando la dependencia del Domain Controller (Active Directory), el esquema de escritorio remoto, y utilizando un esquema de red **Workgroup** directo, con el fin de: + +1. Reducir la complejidad operativa (de 4 componentes a 2). +2. Permitir trabajo directo (sin AnyDesk intermedio). +3. Minimizar los puntos de falla. +4. Garantizar la autonomía operativa de DASUTEN respecto de la infraestructura de la Facultad. +5. Facilitar la eventual gestión desde Rectorado (Buenos Aires) si fuera necesario. + +--- + +## 3. Infraestructura Implementada + +### 3.1 Arquitectura de red + +Se implementó una topología de **red plana simplificada**, donde todos los equipos obtienen direccionamiento IP directamente del router del ISP, eliminando subnetting privado y routing interno: + +``` +Internet + │ +Router ISP (192.168.1.1 — Gateway) + │ + ├── srv-dasu (Proxmox VE) → 192.168.1.13 + │ └── dasu-sql4 (VM 106) → 192.168.1.11 [SQL Server 2019] + │ + └── dasu-pc (PC Física) → DHCP ISP [Estación de trabajo] +``` + +### 3.2 Componentes del nuevo entorno + +| Componente | Descripción | Estado | +|:---|:---|:---:| +| **srv-dasu** | Servidor Proxmox VE 9.1 (Hipervisor) — CPU Intel, 15 GB RAM, 94 GB disco | ✅ Operativo | +| **dasu-sql4** (VM 106) | Windows Server 2022 — SQL Server 2019 Enterprise — 4 GB RAM, 2 vCPU, discos 60+120 GB | ✅ Operativo | +| **dasu-pc** | PC Física — Windows 10 Pro — AMD Ryzen 5, 8 GB RAM — Oficina DASUTEN | ✅ Operativo | + +### 3.3 Comparativa: Antes vs. Después + +| Aspecto | Enfoque Anterior (con DC + AnyDesk) | Enfoque Actual (Workgroup) | +|:---|:---|:---| +| **Componentes** | 4 (DC + SQL + PC virtual + PC física) | 2 (SQL + PC física) | +| **Forma de trabajo** | Indirecta (AnyDesk → PC virtual) | Directa (sistema en PC) | +| **Red** | Privada 10.0.100.x (gateway interno) | DHCP del ISP (red plana) | +| **Autenticación SQL** | Windows Integrated (Kerberos) | SQL Auth (mixta) | +| **Usuarios** | Active Directory | Usuarios locales Windows | +| **DNS** | AD DNS (10.0.100.10) | DNS del ISP (automático) | +| **Complejidad de red** | Alta (DC + DNS + dominio + routing) | Mínima (red plana ISP) | +| **Puntos de falla** | DC, SQL, red dominio, routing, AnyDesk | Solo SQL | +| **VMs necesarias** | 3 (DC + SQL + PC virtual) | 1 (solo SQL) | + +--- + +## 4. Fases Ejecutadas y Progreso + +### Resumen de progreso por fase + +| Fase | Descripción | Estado | Progreso | +|:---:|:---|:---:|:---:| +| 1 | Preparación del entorno (srv-dasu) | ✅ Completada | 100% | +| 2 | Creación de VM SQL Server de prueba | ✅ Completada | 100% | +| 3 | Creación de VM PC Cliente de prueba | ✅ Completada | 100% | +| 4 | VM definitiva dasu-sql4 | ✅ Completada | 100% | +| 5 | Migración de base de datos | ✅ Completada | 100% | +| 5b | Hardening y persistencia de servicios | ✅ Completada | 100% | +| 6 | Validación con PC cliente virtual | ✅ Completada | 100% | +| 7 | Despliegue en PC física (producción) | 🚧 En curso | 75% | +| 8 | Refresco final de base de datos | ✅ Completada | 100% | + +### 4.1 Fase 1-3: Preparación y pruebas de concepto (27-28 marzo) + +Se preparó el hipervisor Proxmox, se reconfiguró el bridge de red para usar DHCP directo del ISP, y se crearon VMs de prueba para validar la viabilidad del enfoque sin Domain Controller. + +**Hallazgo crítico:** Se detectó y resolvió que el bridge de red estaba configurado con la IP de una red privada anterior, lo cual habría impedido la conectividad de las nuevas VMs. + +### 4.2 Fase 4: Servidor SQL definitivo (9-10 abril) + +Se creó la VM definitiva `dasu-sql4` (VM 106) con una arquitectura optimizada: + +- **Discos separados:** 60 GB para SO + 120 GB exclusivo para datos SQL (buena práctica). +- **SQL Server 2019 Enterprise** instalado con autenticación mixta. +- **Gestión remota** asegurada vía OpenSSH Server (puerto 7022) y Tailscale VPN. + +### 4.3 Fase 5: Migración de Base de Datos (11 abril) + +Se ejecutó la migración completa de la base de datos de producción: + +1. **Exportación:** Backup comprimido (~1.33 GB) generado desde el servidor origen (`srvv-fenix`). +2. **Transferencia:** Archivo movido a través de la VPN institucional (Tailscale) en múltiples tramos seguros. +3. **Restauración:** Base restaurada exitosamente en 26 segundos (354 MB/s). +4. **Verificación:** `DBCC CHECKDB` ejecutado sin errores — integridad de datos confirmada al 100%. + +### 4.4 Fase 5b: Hardening (11 abril) + +Se validó que todos los servicios críticos (SSH, SQL Server) sobreviven reinicios del servidor sin intervención manual: + +- OpenSSH Server: arranque automático ✅ +- SQL Server: arranque automático ✅ +- IP de red: mantenida tras reinicio ✅ + +### 4.5 Fase 6: Validación funcional en entorno virtual (11 abril) + +Se restauró una VM cliente desde backup para simular el entorno real de la oficina DASUTEN: + +- Se desvinculó la PC del dominio anterior y se unió al Workgroup `DASUTEN`. +- Se reconfiguró el archivo de conexión del sistema (`Kermet.ini`) para apuntar al nuevo servidor SQL. +- **Resultado:** El sistema DASUTEN conectó exitosamente, actualizó estructuras y descargó novedades. + +**Conclusión técnica clave:** Se determinó mediante ingeniería inversa que el sistema DASUTEN (desarrollado en Visual FoxPro) **no tiene dependencia real del Active Directory** si se configura explícitamente la autenticación SQL en su archivo de configuración. + +### 4.6 Fase 7: Despliegue en PC física de producción (13-14 abril — COMPLETADA) + +Se desplegó el sistema en la PC física de la oficina DASUTEN (`dasu-pc`): + +- **Directorio del sistema** (`C:\SysDasuten`) transferido desde la VM de pruebas. +- **Configuración de conexión** apuntada al nuevo servidor `dasu-sql4`. +- **Acceso directo** creado en el escritorio de la usuaria (`aalmiron`). +- **Pruebas funcionales:** + - Inicio del sistema: ✅ OK + - Acceso a datos (ventana de bonos): ✅ OK + - **Impresión: ✅ RESUELTO** (2026-04-14) — Symlink `C:\Sistema` → `C:\SysDasuten\Sistema` permite encontrar plantillas Word/Excel. + +**Solución técnica:** El sistema DASUTEN (Visual FoxPro) hardcodea la ruta `C:\Sistema\Word\` para las plantillas. Se creó un symlink que redirige transparentemente al directorio real `C:\SysDasuten\Sistema\`, sin necesidad de modificar el ejecutable compilado. + +### 4.7 Fase 8: Pipeline de Backups (14 abril — COMPLETADO) + +Se implementó un **pipeline automatizado de drones atómicos** para el refresco de la base de datos: + +**Arquitectura del pipeline:** +``` +srvv-fenix → BACKUP TO X:\ (share srv-ns8) + ↓ +srv-ns8 → rclone upload → Google Drive + ↓ +dasu-sql4 → Invoke-WebRequest → RESTORE DATABASE → DBCC CHECKDB +``` + +**Drones implementados (6 drones atómicos):** +1. `dasuten_exportar_srvv-fenix.rb` — BACKUP DATABASE WITH COMPRESSION +2. `dasuten_transferir_srvv-fenix-srv-ns8.rb` — Copy share → /var/tmp +3. `dasuten_upload_srv-ns8-drive.rb` — rclone copy → Google Drive +4. `dasuten_download_drive-dasu-sql4.rb` — Invoke-WebRequest ← Google Drive +5. `dasuten_restaurar_dasu-sql4.rb` — RESTORE DATABASE WITH REPLACE +6. `dasuten_verificar-integridad_dasu-sql4.rb` — DBCC CHECKDB + +**Comunicación entre drones:** Cada dron escribe su output en `/tmp/dron_*_output.json`, que el siguiente dron lee para obtener contexto. + +**Resultado:** Backup de 1.3 GB transferido y restaurado en ~35-40 minutos total. Integridad verificada sin errores. + +### 4.8 Fase 8b: Pipeline Diferencial (14 abril — COMPLETADO) + +Se implementó un pipeline optimizado para refrescos diarios usando **backups diferenciales**: + +- **Tamaño:** ~0.4-10 MB vs 1.3 GB del completo (99% más pequeño) +- **Duración:** ~5-10 minutos vs 35-40 minutos del completo +- **Comando:** `./adn/tools/run bkps run dasuten_diferencial` + +**Integración con bkps.rb:** +- `dasuten_full` — Pipeline completo (semanal, lunes 08:00) +- `dasuten_diferencial` — Pipeline diferencial (diario, lun-vie 08:00) + +**Módulo común DasuExecutor:** Para eliminar código repetido, se creó `adn/tools/cli/drones/lib/dasu_executor.rb` que centraliza: +- Ejecución de PowerShell en dasu-sql4 vía SSH +- Lectura de JSON output desde dasu-sql4 +- Verificación de archivos en fenix vía xp_cmdshell + +**Beneficio:** -52% de líneas de código en los drones refactorizados. + +--- + +## 5. Estado Actual + +### 5.1 Funcionalidades operativas + +| Funcionalidad | Estado | +|:---|:---:| +| Acceso al sistema DASUTEN | ✅ Operativo | +| Consulta de datos (bonos, registros) | ✅ Operativo | +| Conexión a base de datos SQL Server | ✅ Operativo | +| Acceso remoto para soporte (Tailscale/SSH) | ✅ Operativo | +| Impresión desde el sistema | ✅ Resuelto (symlink) | +| Backups automatizados | ✅ Pipeline implementado | + +### 5.2 Solución de Impresión + +**Descripción:** El sistema DASUTEN (Visual FoxPro) genera documentos mediante OLE Automation con Word/Excel, usando plantillas en `C:\Sistema\Word\` y `C:\Sistema\Excel\`. Sin embargo, el directorio del sistema está en `C:\SysDasuten\Sistema\`. + +**Solución:** Symlink `C:\Sistema` → `C:\SysDasuten\Sistema\` + +```cmd +mklink /D C:\Sistema C:\SysDasuten\Sistema +``` + +**Impacto:** El ejecutable VFP encuentra las plantillas transparentemente sin necesidad de recompilar o modificar el binario. + +### 5.3 Pipeline de Backups + +**Arquitectura implementada:** + +| Tipo | Frecuencia | Tamaño | Duración | Comando | +|------|------------|--------|----------|---------| +| **Completo** | Semanal (lunes 08:00) | ~1.3 GB | ~35-40 min | `bkps run dasuten_full` | +| **Diferencial** | Diario (lun-vie 08:00) | ~0.4-10 MB | ~5-10 min | `bkps run dasuten_diferencial` | + +**Drones atómicos (6 pasos):** +1. Exportar (srvv-fenix) → Backup a X:\ +2. Transferir (srv-ns8) → Copy a /var/tmp +3. Upload (srv-ns8) → rclone a Google Drive +4. Download (dasu-sql4) → Invoke-WebRequest +5. Restaurar (dasu-sql4) → RESTORE DATABASE +6. Verificar (dasu-sql4) → DBCC CHECKDB + +--- + +## 6. Beneficios Obtenidos + +1. **Independencia operativa:** DASUTEN ya no depende de la infraestructura de red ni de los servidores de la Facultad. +2. **Simplificación:** Se pasó de 3 VMs + Domain Controller a solo 1 VM (SQL Server), reduciendo significativamente la complejidad. +3. **Reducción de puntos de falla:** De múltiples (DC, DNS institucional, routing complejo) a uno solo (SQL Server). +4. **Acceso remoto robusto:** Gestión técnica asegurada vía VPN (Tailscale) y SSH, sin necesidad de presencia física. +5. **Autonomía:** La infraestructura puede ser gestionada independientemente, facilitando una eventual transferencia a Rectorado. +6. **Preservación del entorno anterior:** Las VMs del enfoque con DC fueron apagadas y preservadas como respaldo, permitiendo un rollback si fuera necesario. + +--- + +## 7. Cronograma Resumen + +| Fecha | Hito | +|:---|:---| +| 27/03/2026 | Inicio — Preparación del entorno e inicio de pruebas de concepto | +| 28/03/2026 | VM SQL Server de prueba operativa | +| 09-10/04/2026 | Servidor SQL definitivo (dasu-sql4) desplegado y operativo | +| 11/04/2026 | Base de datos migrada, verificada y hardening completado | +| 11/04/2026 | Validación funcional exitosa en entorno virtual | +| 13/04/2026 | Despliegue en PC física de producción | +| 14/04/2026 | Impresión resuelta (symlink) + Pipeline de backups implementado | + +--- + +## 8. Próximos Pasos + +| Prioridad | Acción | Plazo estimado | +|:---:|:---|:---| +| ✅ | **Impresión resuelta** (symlink `C:\Sistema`) | Completado 14/04/2026 | +| ✅ | **Pipeline de backups implementado** | Completado 14/04/2026 | +| 🟡 Media | Reservar IPs fijas en router ISP (prevenir cambios por DHCP) | 1 semana | +| 🟢 Baja | Evaluar apagado definitivo de VMs legacy (DC, SQL antiguo) | Tras validación completa | +| 🟢 Baja | Ejecutar backups diferenciales diarios (lun-vie 08:00) | En operación | + +--- + +## 9. Conclusión + +La migración del sistema DASUTEN a la nueva infraestructura se encuentra **100% completada**, con el sistema totalmente operativo y todas las funcionalidades verificadas incluyendo impresión de documentos. + +El enfoque sin Domain Controller demostró ser completamente viable, logrando una **reducción significativa de la complejidad** y de los puntos de falla: +- De 4 componentes (DC + SQL + PC virtual + PC física) a 2 (SQL + PC física) +- De red privada compleja con routing a red plana DHCP del ISP +- De autenticación Kerberos a SQL Auth mixta + +Adicionalmente, se implementó un **pipeline automatizado de backups** con arquitectura de drones atómicos que permite: +- Refrescos semanales completos (~1.3 GB, 35-40 min) +- Refrescos diarios diferenciales (~0.4-10 MB, 5-10 min) +- Integración con el ecosistema ADN de herramientas (`bkps.rb`) + +El proyecto generó además herramientas reutilizables (DasuExecutor, drones atómicos, módulo de comunicación JSON) que quedan como activo de DTIC para futuros proyectos. + +--- + +# ANEXO TÉCNICO + +## A. Inventario de Nodos + +### A.1 Servidor Hipervisor: srv-dasu + +| Campo | Valor | +|:---|:---| +| **Rol** | Hipervisor Proxmox VE 9.1 | +| **IP LAN** | 192.168.1.13 (DHCP ISP) | +| **IP VPN** | 100.112.46.104 (Tailscale) | +| **Bridge** | vmbr0 sobre enp33s0 | +| **RAM** | 15 GB total / ~4 GB libre post-VMs | +| **Disco** | 94 GB (68% uso, thin provisioned) | +| **Acceso remoto** | Tailscale + SSH | + +### A.2 Servidor SQL: dasu-sql4 (VM 106) + +| Campo | Valor | +|:---|:---| +| **Rol** | SQL Server 2019 Enterprise | +| **SO** | Windows Server 2022 (Español) | +| **IP LAN** | 192.168.1.11 (DHCP ISP) | +| **IP VPN** | 100.107.15.82 (Tailscale — inestable) | +| **Workgroup** | DASUTEN | +| **RAM** | 4 GB | +| **vCPU** | 2 | +| **Disco 1 (sata0)** | 60 GB — Sistema Operativo | +| **Disco 2 (sata1)** | 120 GB — Datos SQL (GPT/NTFS "SQLData") | +| **Estructura SQL** | F:\DATA, F:\LOG, F:\BACKUP, F:\TEMPDB | +| **Autenticación** | Mixta (SQL Auth + Windows) | +| **Puerto SQL** | TCP 1433 | +| **SSH** | Puerto 7022 (OpenSSH Server, arranque automático) | +| **Servicios auto-start** | MSSQLSERVER, sshd | + +### A.3 PC Física Cliente: dasu-pc + +| Campo | Valor | +|:---|:---| +| **Rol** | Estación de trabajo DASUTEN | +| **Patrimonio** | 32120 | +| **Ubicación** | Oficina DASUTEN (externa a Facultad) | +| **SO** | Windows 10 Pro | +| **Workgroup** | DASUTEN | +| **IP VPN** | 100.119.233.11 (Tailscale) | +| **SSH** | UTNLR@100.119.233.11:7022 | +| **CPU** | AMD Ryzen 5 4600G @ 4.30GHz (6 núcleos) | +| **RAM** | 8 GB DDR4-3200 | +| **Placa Base** | Asus Prime A320M-K | +| **Usuaria principal** | Andrea Almirón (`aalmiron`) | +| **Directorio DASUTEN** | C:\SysDasuten | +| **Config conexión** | C:\SysDasuten\Sistema\Kermet.ini | + +### A.4 VM Cliente de Pruebas: dasu-pcv (VM 107) — Test-Bed + +| Campo | Valor | +|:---|:---| +| **Rol** | Entorno de pruebas / fallback temporal | +| **SO** | Windows 10 | +| **Workgroup** | DASUTEN | +| **SSH** | Puerto 7022 | +| **Estado** | Operativa (usada como fallback vía TeamViewer) | + +--- + +## B. Configuración del Sistema DASUTEN + +### B.1 Archivo de conexión: Kermet.ini + +Parámetros clave configurados para la operación sin Domain Controller: + +```ini +SERVER=dasu-sql4 +DATABASE=sysdasuten +UID=sa +PWD=[credencial almacenada en bóveda] +``` + +> **Nota técnica:** El campo `UID` debe estar explícitamente configurado con `sa` (u otra cuenta SQL Auth). Si se deja vacío, el sistema DASUTEN (Visual FoxPro) asume autenticación Windows integrada (SSPI/Kerberos), lo cual falla en entorno Workgroup sin Domain Controller. + +### B.2 Directorio del sistema + +``` +C:\SysDasuten\ +├── Sistema\ → Ejecutables VFP + Kermet.ini +├── Plantillas\ → Templates Word/Excel para impresión +└── [otros directorios de la aplicación] +``` + +--- + +## C. Base de Datos: sysdasuten + +| Campo | Valor | +|:---|:---| +| **Nombre** | sysdasuten | +| **Motor** | SQL Server 2019 Enterprise | +| **Tamaño backup comprimido** | ~1.33 GB | +| **Nivel de compatibilidad** | 100 | +| **Recovery model** | FULL | +| **Integridad (DBCC CHECKDB)** | ✅ Sin errores | +| **Tiempo de restauración** | 26 segundos (354 MB/s) | +| **Origen de datos** | srvv-fenix (servidor legacy de Facultad) | +| **Último refresco** | 13/04/2026 | + +### C.1 Ruta de transferencia del backup (LEGACY — reemplazado por pipeline) + +``` +srvv-fenix (Origen) + │ [BACKUP DATABASE ... WITH COMPRESSION] + │ → E:\BK_SQL\sysdasuten_compressed_ADN.bak (~1.33 GB) + ↓ +srv-ns8 (Tránsito) + │ [SMB/smbget vía dominio] + │ → /var/tmp/ + ↓ +srv-dasu (Tránsito) + │ [SCP vía Tailscale] + ↓ +dasu-sql4 (Destino) + │ [RESTORE DATABASE ... WITH REPLACE] + └ → F:\BACKUP\ → F:\DATA\ + F:\LOG\ +``` + +--- + +## G. Pipeline de Backups (NUEVO — 2026-04-14) + +### G.1 Arquitectura de Drones Atómicos + +El pipeline de backups está compuesto por **6 drones atómicos** que se ejecutan secuencialmente, comunicándose entre sí mediante archivos JSON. + +| Dron | Script | Nodo | Función | Output JSON | +|------|--------|------|---------|-------------| +| 1 | `dasuten_exportar_srvv-fenix.rb` | srvv-fenix | BACKUP DATABASE TO X:\ | `/tmp/dron_export_output.json` | +| 2 | `dasuten_transferir_srvv-fenix-srv-ns8.rb` | srv-ns8 | Copy X:\ → /var/tmp | `/tmp/dron_transfer_output.json` | +| 3 | `dasuten_upload_srv-ns8-drive.rb` | srv-ns8 | rclone → Google Drive | `/tmp/dron_upload_output.json` | +| 4 | `dasuten_download_drive-dasu-sql4.rb` | dasu-sql4 | Invoke-WebRequest ← Drive | `/tmp/dron_download_output.json` | +| 5 | `dasuten_restaurar_dasu-sql4.rb` | dasu-sql4 | RESTORE DATABASE | `/tmp/dron_restore_output.json` | +| 6 | `dasuten_verificar-integridad_dasu-sql4.rb` | dasu-sql4 | DBCC CHECKDB | `/tmp/dron_verify_output.json` | + +### G.2 Flujo Completo (Semanal) + +``` +srvv-fenix (SQL Server) + ↓ BACKUP DATABASE TO DISK = 'X:\' WITH COMPRESSION +X:\sysdasuten_FULL_YYYYMMDD_HHMMSS.bak (~1.3 GB) + ↓ Copy local (share → /var/tmp) +srv-ns8 (/var/tmp/) + ↓ rclone upload +Google Drive (drive_bkps-dasu) + ↓ HTTP Download (Invoke-WebRequest) +dasu-sql4 (F:\BACKUP\) + ↓ RESTORE DATABASE WITH REPLACE +sysdasuten ONLINE + ↓ DBCC CHECKDB +✅ VERIFICADO +``` + +**Duración total:** ~35-40 minutos + +### G.3 Flujo Diferencial (Diario) + +``` +srvv-fenix (SQL Server) + ↓ BACKUP DATABASE TO DISK = 'X:\' WITH DIFFERENTIAL +X:\sysdasuten_DIF_YYYYMMDD_HHMMSS.bak (~0.4-10 MB) + ↓ Copy local (share → /var/tmp) +srv-ns8 (/var/tmp/) + ↓ rclone upload +Google Drive (drive_bkps-dasu) + ↓ HTTP Download (Invoke-WebRequest) +dasu-sql4 (F:\BACKUP\) + ↓ RESTORE DATABASE WITH DIFFERENTIAL +sysdasuten ONLINE + ↓ DBCC CHECKDB +✅ VERIFICADO +``` + +**Duración total:** ~5-10 minutos + +### G.4 Comando de Ejecución + +```bash +# Pipeline completo (semanal - lunes 08:00) +./adn/tools/run bkps run dasuten_full + +# Pipeline diferencial (diario - lun-vie 08:00) +./adn/tools/run bkps run dasuten_diferencial +``` + +### G.5 Módulo Común: DasuExecutor + +Para eliminar código repetido, se creó el módulo `adn/tools/cli/drones/lib/dasu_executor.rb` que centraliza: + +| Función | Propósito | +|---------|-----------| +| `execute_ps_on_dasu(ps_script)` | Ejecuta PowerShell en dasu-sql4 vía SSH | +| `read_json_from_dasu(path)` | Lee y parsea JSON desde dasu-sql4 | +| `execute_ps_on_fenix(client, ps_script)` | Ejecuta PowerShell en fenix vía xp_cmdshell | +| `file_exists_on_fenix?(client, path)` | Verifica existencia de archivo en fenix | +| `get_file_info_on_fenix(client, path)` | Obtiene tamaño y existencia de archivo | + +**Beneficio:** -52% de líneas de código en los drones refactorizados. + +### G.6 Lecciones Aprendidas + +| Lección | Impacto | +|---------|---------| +| Google Drive confirmation page | Archivos >100MB requieren extraer parámetros `id`, `uuid`, `confirm` del HTML | +| dasu-sql4 sleep mode | VM entra en suspensión — acceso vía relay SSH desde srv-dasu | +| Base64 encoding | Scripts PowerShell se codifican en base64 para transporte SSH | +| Un solo destino (X:) | Eliminado paso intermedio E:\BK_SQL\sysdasuten\ — menos puntos de falla | +| Módulo común | 6 drones, 1 solo patrón de ejecución remota | + +--- + +## D. VMs Legacy Preservadas (Apagadas) + +| VM ID | Nombre | Rol anterior | Estado | +|:---:|:---|:---|:---:| +| 100 | dasu-srvv-dc | Domain Controller AD DS | 🛑 Apagada | +| 101 | dasu-srvv-sql | SQL Server (dominio) | 🛑 Apagada | +| 102 | dasu-pcv | PC cliente (dominio) | 🛑 Apagada | +| 103 | dasu-sql2 | SQL Server prueba v1 | 🛑 Descartada | +| 104 | dasu-pcv2 | PC prueba v1 | 🛑 Descartada | + +> Las VMs legacy (100-102) se mantienen apagadas como respaldo. Pueden reactivarse en caso de necesitar un rollback al enfoque con Domain Controller. + +--- + +## E. Accesos Remotos Configurados + +| Nodo | Método | Detalle | +|:---|:---|:---| +| srv-dasu | Tailscale SSH | 100.112.46.104 | +| dasu-sql4 | SSH (LAN) | 192.168.1.11:7022 | +| dasu-sql4 | Tailscale | 100.107.15.82 (inestable) | +| dasu-pc | Tailscale SSH | 100.119.233.11:7022 | +| dasu-pc | AnyDesk | Instalado (GUI) | +| dasu-pcv | TeamViewer | Activo (workaround temporal) | + +--- + +## F. Cuenta de Gestión VPN + +| Campo | Valor | +|:---|:---| +| **Proveedor** | Tailscale | +| **Cuenta** | pcdasu0@frlr.utn.edu.ar | +| **Nodos vinculados** | srv-dasu, dasu-sql4, dasu-pc, dasu-pcv | + +--- + +### Historial de versiones + +| Versión | Fecha | Cambios | +|:---:|:---:|:---| +| 0.1 | 13/04/2026 | Versión inicial (fusión de informe de avance + anexo técnico) | +| 0.2 | 13/04/2026 | Se agrega contexto de infraestructura anterior (esquema AnyDesk), versionado, referencia a doc ejecutivo | +| 0.3 | 14/04/2026 | Impresión resuelta + Pipeline de backups implementado + DasuExecutor | + +*Fin del informe técnico.*