Files
dtic-DIIAA/docs/ambito/dtic-DASUTEN/A04_dtic-DASUTEN.md
T
Ricardo MonlaandClaude Opus 4.6 faa5d7ad9a [Documentación] Caso de estudio DC descartado — Lecciones aprendidas integradas
- docs/ambito/dtic-DASUTEN/_hist/P2601.legacy_lecciones_aprendidas.md (NUEVO)
  Documento completo sobre el enfoque con Domain Controller (23/02-27/03/26)
  Incluye: arquitectura descartada, causas del fracaso, timeline, lecciones

- docs/ambito/dtic-DASUTEN/A04.P005_DASUTEN-sin-DC.md
  Agregada sección "Contexto Histórico" con referencia al caso de estudio

- docs/ambito/dtic-DASUTEN/A04_dtic-DASUTEN.md
  Agregada sección completa sobre el enfoque DC descartado

- docs/contexto/IA.md
  Agregada sección "Caso de Estudio: Enfoque con Domain Controller"
  Incluye tabla de recursos, señales de alerta y lecciones para futuros proyectos

**Principio aplicado:** "La arquitectura más simple que funciona es mejor que
la arquitectura 'correcta' que apenas se sostiene."

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 19:56:02 -03:00

243 lines
12 KiB
Markdown

# A04 - Ámbito dtic-DASUTEN
> Manifiesto de Ámbito | Referencia: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md)
## Identificación
| Campo | Valor |
| :--- | :--- |
| **Código** | A04 |
| **Nombre** | Infraestructura y Sistema DASUTEN |
| **Estado** | ✅ Completado y Validado (2026-04-15) |
| **Inicio** | 23/02/2026 |
| **Fin Estimado** | Por definir (operación continua) |
## Objetivo
El ámbito **dtic-DASUTEN** engloba todas las operaciones relacionadas con la infraestructura, migración y mantenimiento del sistema de gestión administrativa de DASUTEN (Departamento de Acción Social Universitaria Tecnológica Nacional).
**DASUTEN** es la obra social de empleados, docentes y alumnos de la Universidad Tecnológica Nacional, con oficina en la Facultad Regional La Rioja pero bajo dependencia de la **sede central en el Rectorado (Buenos Aires)**.
Este ámbito cubre:
1. **Infraestructura virtualizada** — Hipervisor Proxmox VE (`srv-dasu`) con VMs Windows (SQL Server, PC cliente).
2. **Migración de sistema** — Traslado del sistema de gestión desde servidores de la Facultad a infraestructura independiente.
3. **Operación en modo Workgroup** — Desde 2026-03-27, se adoptó enfoque sin Domain Controller (P2601.09), reduciendo complejidad de red.
4. **Independencia operativa** — Facilitar la gestión desde Rectorado si fuera necesario.
5. **Pipeline de backups automatizado** — Desde 2026-04-15, sistema de backups FULL/diferenciales vía Google Drive con validación de integridad (DBCC CHECKDB).
6. **Zona horaria configurada**`dasu-sql4` en UTC-3 (Argentina Standard Time) para correcta visualización de datos en el sistema desktop.
## 📜 Contexto Histórico — Lecciones Aprendidas (Enfoque con DC Descartado)
> **Documento completo:** [`_hist/P2601.legacy_lecciones_aprendidas.md`](_hist/P2601.legacy_lecciones_aprendidas.md)
**Período:** 23/02/2026 — 27/03/2026 (enfoque con Domain Controller)
**Estado:** 🛑 Descartado por recursos insuficientes
**Enfoque actual:** Workgroup sin DC (P2601.09) — ✅ Operativo desde 15/04/2026
### Arquitectura Original (Descartada)
```
srv-dasu (Proxmox VE)
└── vmbr1 (NAT 10.0.100.x)
├── VM 100: dc-dasuten — Domain Controller AD DS + DNS
├── VM 101: sql-dasuten — SQL Server 2019 Core
└── VM 102: pcv-dasu0 — Windows 10 LTSC
```
### Causas del Fracaso
| Recurso | Disponible | Requerido (3 VMs) | Déficit |
|:---|:---|:---|:---|
| **RAM** | 15 GB | ~20 GB | -5 GB |
| **vCPU** | 6 núcleos | 8+ | -2 vCPU |
| **Disco** | 94 GB thin | ~180 GB | -86 GB |
### Señales de Alerta (Ignoradas)
- Backups fallan por espacio insuficiente (26/02/26)
- VMs lentas desde el inicio
- Caídas intermitentes del Domain Controller
- Complejidad de red creciente (NAT + tunneling + subnet router)
### Decisión de Pivot (27/03/2026)
Se adoptó el enfoque **Workgroup sin DC**, reduciendo:
- **De 3 VMs a 2 VMs** (SQL + PCV)
- **Red NAT a red plana** (DHCP del ISP)
- **Windows Auth a SQL Auth** (sin dependencia de Kerberos)
### Lección Clave
> *"La arquitectura más simple que funciona es mejor que la arquitectura 'correcta' que apenas se sostiene."*
**Recomendación para futuros proyectos:** Validar recursos disponibles ANTES de comprometerse con una arquitectura compleja. Ver checklist en el documento de lecciones aprendidas.
## Herramientas
| Herramienta | Uso |
| :--- | :--- |
| **Proxmox VE 9.1** | Virtualización y gestión de VMs (vmbr0, vzdump) |
| **Windows Server 2022** | SO para SQL Server (dasu-sql4) — UTC-3 Argentina |
| **Windows 10 LTSC** | VM de pruebas y cliente (dasu-pcv) |
| **SQL Server 2019** | Motor de base de datos relacional (autenticación mixta) |
| **OpenSSH** | Administración remota nativa de VMs Windows (puerto 7022) |
| **VZDump** | Resguardos offline de VMs (stop mode, zstd) |
| **Tailscale** | VPN de acceso remoto (subnet router, cuenta `pcdasu0@frlr.utn.edu.ar`) |
| **ADN CLI `dasuten`** | `./adn/tools/run dasuten <subcomando>` — herramientas específicas del ámbito |
| **ADN CLI `dron`** | `./adn/tools/run dron` — vigía de tareas largas con auto-bitácora |
| **ADN CLI `bkps`** | `./adn/tools/run bkps run dasuten_full/diferencial` — pipeline de backups |
## Nodos Involucrados
### Núcleo DASUTEN (Exclusivos del Ámbito)
| Nodo | IP / VMID | Rol en el Ámbito |
| :--- | :--- | :--- |
| **srv-dasu** | `192.168.1.13` (DHCP ISP) / Tailscale `100.112.46.104` | Hipervisor Proxmox VE (Libre de red académica) |
| **dasu-sql4** (VM 106) | `192.168.1.11` (DHCP ISP) / Tailscale `100.107.15.82` | SQL Server 2019 — Motor de base de datos (UTC-3 Argentina) |
| **dasu-pcv** (VM 107) | `192.168.1.15` (DHCP ISP) | VM de pruebas / Cliente de referencia (Workgroup) |
| **dasu-pc** | `192.168.1.20` (DHCP ISP) | PC física cliente en oficina DASUTEN (usuaria: Andrea Almirón) |
### Nodos de Soporte
| Nodo | IP | Rol en el Ámbito |
| :--- | :--- | :--- |
| **srv-ns8** | `10.0.10.8` | Gestión central, GIT, Dashboard P2601 |
### VMs Preservadas (Apagadas — Enfoque Anterior con DC)
| Nodo | VMID | Estado | Nota |
| :--- | :--- | :--- | :--- |
| **dasu-srvv-dc** | 100 | 🛑 Apagada | Controlador de Dominio AD DS (P2601.06-08) |
| **dasu-srvv-sql** | 101 | 🛑 Apagada | SQL Server en dominio (P2601.06-08) |
| **dasu-pcv** | 102 | 🛑 Apagada | VM de pruebas en dominio (P2601.07.01) |
| **dasu-sql2** | 103 | 🛑 Apagada | SQL Server 2022 Core — reemplazado por dasu-sql4 |
| **dasu-pcv2** | 104 | 🛑 Apagada | VM de pruebas — reemplazada por dasu-pcv (107) |
## Topología de Red (Modo Workgroup — P2601.09)
```
┌─────────────────────────────────────────────────────────────────┐
│ ROUTER ISP (Gateway: 192.168.1.1) │
│ Subred: 192.168.1.0/24 │
└─────────────────────┬───────────────────────────────────────────┘
┌────────────┴─────────────────────────────────┐
│ │
↓ ↓
┌─────────────────┐ ┌─────────────────────────┐
│ dasu-pc │ │ srv-dasu (Proxmox) │
│ 192.168.1.20 │ │ 192.168.1.13 │
│ (PC Física) │ │ │
└─────────────────┘ │ vmbr0: 192.168.1.1/24 │
│ ├── VM 106: .11 (SQL) │
│ └── VM 107: .15 (PCV) │
└─────────────────────────┘
```
**Características:**
- Red plana del ISP — todas las máquinas en la misma subred `192.168.1.0/24`
- Sin Domain Controller — autenticación SQL mixta (SQL Auth, no Windows Integrated)
- Tailscale para acceso remoto — cuenta `pcdasu0@frlr.utn.edu.ar`
- Gateway: `192.168.1.1` (router ISP)
## Tareas Configuradas
| ID | Descripción | Tipo |
| :--- | :--- | :--- |
| `backup_sql2` | Backup vzdump de dasu-sql2 (VM 103) | proxmox |
| `backup_pcv2` | Backup vzdump de dasu-pcv2 (VM 104) | proxmox |
| `db_migrar` | Migrar base de datos DASUTEN desde backup .bak | sqlcmd |
| `tailscale_up` | Activar/verificar Tailscale en nodos | tailscale |
## Comandos Compuestos
| ID | Descripción | Tareas |
| :--- | :--- | :--- |
| `full_backup` | Backup completo de VMs DASUTEN | backup_sql2 → backup_pcv2 |
| `db_restore` | Restaurar DB DASUTEN en dasu-sql2 | db_migrar |
## Flujo de Trabajo Típico
```
1. Registrar evento en bitácora (inicio de jornada DASUTEN)
2. Ejecutar: ./adn/tools/run dasuten <subcomando>
3. Monitorear progreso (dron para tareas largas)
4. Cerrar evento en bitácora con hora de fin
```
### Subcomandos ADN disponibles
```bash
./adn/tools/run dasuten help # Ayuda
./adn/tools/run dasuten db:migrar # Migrar/base de datos DASUTEN
./adn/tools/run dasuten backup <vm> # Backup individual de VM
./adn/tools/run dasuten status # Estado del ámbito
./adn/tools/run dron lanzar --evento AUTO --nota "X" -- ./adn/tools/run dasuten <cmd>
```
## Planes Asociados
| Código | Nombre | Estado |
| :--- | :--- | :--- |
| [A04.P001](A04.P001_Red-SrvDasu.md) | Reconfiguración de Red srv-dasu | ✅ |
| [A04.P002](A04.P002_Integracion-DASU-PC.md) | Integración dasu-pc a Dominio | ⏸️ (Pausado — enfoque cambiado) |
| [A04.P003](A04.P003_AD-Join.md) | Unión de pc-dasu0 al Dominio | ⏸️ (Pausado — enfoque cambiado) |
| [A04.P004](A04.P004_Unificacion-Redes-ISP.md) | Unificación de Redes: Subred ISP | ⏸️ (Pausado — enfoque cambiado) |
| [A04.P005](A04.P005_DASUTEN-sin-DC.md) | DASUTEN sin Domain Controller | ✅ Completado y Validado |
| [A04.P006](A04.P006_Backups-DASUTEN.md) | Backups y Refresco de Base de Datos | ✅ Completado y Validado |
## 🛸 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 |
**Evento AUTO:** Crea evento de bitácora automáticamente y lo cierra al finalizar. El `tarea_id` del dron se incluye en la descripción del evento con formato `🛸 dron_HHMMSS_PID: <nota>`.
**Ejemplo:**
```bash
./adn/tools/run dron lanzar --evento AUTO --nota "Backup dasu-sql2" -- ./adn/tools/run dasuten backup sql2
```
## Dashboard P2601
- **URL**: `https://ns8.frlr.utn.edu.ar/P2601/`
- **Tipo**: Aplicación web estática (HTML/JS/CSS) servida por Nginx.
- **Métricas**: Timeline de hitos, barras de progreso, desglose Físico/Remoto por hito.
- **Actualización**: Las métricas se alimentan de las etiquetas parseadas de las bitácoras.
## 🔄 Armonía Integral
**Última actualización:** 2026-04-15 (migración completada + validación usuaria + pipeline de backups)
| Documento | Estado | Notas |
| :--- | :--- | :--- |
| `docs/contexto/IA.md` | ✅ Actualizado | Lecciones DASUTEN agregadas (backups, zona horaria) |
| `A04_dtic-DASUTEN.md` | ✅ Actualizado | Estado: COMPLETADO Y VALIDADO |
| `A04.P001_Red-SrvDasu.md` | ✅ Actualizado | Encabezado estandarizado |
| `A04.P002_Integracion-DASU-PC.md` | ✅ Actualizado | Estado: PAUSADO (enfoque cambiado) |
| `A04.P003_AD-Join.md` | ✅ Actualizado | Estado: PAUSADO (enfoque cambiado) |
| `A04.P004_Unificacion-Redes-ISP.md` | ✅ Actualizado | Estado: PAUSADO (parcialmente implementado) |
| `A04.P005_DASUTEN-sin-DC.md` | ✅ Actualizado | Versión 6.0 — COMPLETADO Y VALIDADO |
| `A04.P006_Backups-DASUTEN.md` | ✅ Actualizado | Versión 1.3 — Pipeline FULL validado + migración TZ |
| `_hist_P2601_dasuten.md` | ✅ Archivado | Manifiesto legacy preservado |
---
## Referencias
- **CLI ADN**: `./adn/tools/run dasuten help`
- **Código fuente**: [`adn/tools/cli/dasuten.rb`](../../../adn/tools/cli/dasuten.rb) (por crear)
- **ADN Ontología**: [`adn/01_ontologia.md`](../../../adn/01_ontologia.md)
- **Bitácoras**: `./adn/tools/run db evento:listar --ambito dtic-DASUTEN`
- **Legacy (archivado)**: [`_hist_P2601_dasuten.md`](_hist_P2601_dasuten.md) — manifiesto anterior del proyecto
- **Lecciones aprendidas (DC descartado)**: [`_hist/P2601.legacy_lecciones_aprendidas.md`](_hist/P2601.legacy_lecciones_aprendidas.md) — caso de estudio completo