Plano de Execução
Plano de Execucao Unificado
Consolida os roadmaps de IaC, GPU e Dados em um fluxo executavel. Baseado no inventario Proxmox (mapeamento SSH 2026-04-12).
Estado atual
2 clusters Proxmox independentes (PVE 8.4, Debian 12) Franca (clusterlabri07): 8 nodes online, 172 cores, 592 GB RAM SP (clusterippri): 6 nodes online, 136 cores, 720 GB RAM
6 GPUs: Franca: 3x RTX A5500 (72 GB VRAM) — driver NAO instalado SP: 3x RTX A5000 (72 GB VRAM) — driver OK
Storage: LINSTOR: 4 nodes Franca, ~13 TiB NVMe (12.6 TiB livre) ZFS: ambos os sites SP nao tem LINSTOR
K3s: roda bare metal nos hosts Proxmox 21 e 31 (Franca)ArgoCD: GitOps para apps + rotas Traefik (multi-cluster)Apps: Airflow, Authentik, InvenioRDM, OJS, Superset, SeaweedFS, MongoDB, PrometheusSprints
Sprint 0 — Upgrade PVE 9 + Debian 13
Objetivo: todo o cluster em Proxmox 9 / Debian 13 antes de qualquer outra mudanca.
Por que primeiro: drivers NVIDIA mais recentes, kernel 6.12+, base limpa para o que vem depois. Evita retrabalho de configurar algo no Debian 12 e ter que refazer no 13.
Procedimento: upgrade in-place, node a node, em 4 ondas (detalhes em proxmox-inventario.md).
| Onda | Nodes | Risco | Tempo estimado |
|---|---|---|---|
| 1 | labri-33, labri-32, labri-25 (vazios) | Minimo | 1-2 dias |
| 2 | ippri-33, ippri-31, ippri-34, ippri-32 (GPU SP) | Baixo-Medio | 2-3 dias |
| 3 | labri-31, labri-27, labri-21, labri-22 (criticos Franca) | Alto | 3-5 dias |
| 4 | ippri-12, ippri-11 (SP restante) | Alto | 2-3 dias |
Validacao por node: checklist em proxmox-inventario.md (PVE version, VMs, LINSTOR, rede, GPU, storage).
Decisao: validar LINSTOR v1.33.2 no Debian 13 no node labri-33 (vazio) antes de tocar nos satellites com dados.
Referencia: iac.md Fase 1
Sprint 1 — Mapeamento e Codificacao (paralelo com Sprint 0)
Objetivo: codificar a infra existente. Nada novo e criado — tudo e import/descricao do que ja roda.
Pode comecar enquanto o Sprint 0 avanca nos nodes vazios.
Trilha A — Pulumi (provisioning)
| Tarefa | Escopo |
|---|---|
| Decidir state backend | Local vs S3 (SeaweedFS) vs Pulumi Cloud |
| Importar VMs existentes | VyOS, debian-proxy, vm-cpps-02, vm-cpps-13, VM 108, DataLuta, pfsense |
| Mapear storage pools | LINSTOR (pools, resources, replication), ZFS (pools, datasets) |
| Mapear rede virtual | vmbr0/1/2, VLANs 192/193/194/197, bridges, subnets |
| Mapear templates | debian13 (VMID 104) |
| Resultado | pulumi import de tudo, state file funcional |
Trilha B — Ansible (configuracao)
| Tarefa | Escopo |
|---|---|
| Validar playbooks existentes | --check em VyOS, Traefik |
| Criar role Proxmox host | Pacotes base, NVIDIA driver, NTP, SSH hardening |
| Criar role LINSTOR | Controller, satellite, pools, resource groups |
| Criar role K3s | Bootstrap server/agent, flannel config, LINSTOR CSI |
| Inventario completo | Atualizar inventory/hosts.yaml com todos os 15 nodes |
| Resultado | make configure recria qualquer node a partir do repo |
Trilha C — Documentacao
| Tarefa | Escopo |
|---|---|
| Documentar LINSTOR | Topologia, pools, replication policy, rede 10.10.10.0/24 |
| Documentar VLANs | Investigar e registrar VLANs 193, 194, 197 |
| Atualizar roadmaps | GPUs A5500/A5000, K3s bare metal, LINSTOR, topologia real |
Decisoes:
- Pulumi state backend
- LINSTOR: manter config atual ou reestruturar?
- Nodes offline (24, 13, 14): trazer online ou decommissionar?
Referencia: iac.md Fase 1
Sprint 2 — Seguranca
Objetivo: resolver risco critico de credenciais e proteger a infra antes de expandi-la.
Pode rodar em paralelo com Sprint 1.
| Tarefa | Detalhe |
|---|---|
| SOPS/age | Encriptar values no Git. ArgoCD decripta no deploy |
| Rotacionar credenciais | Novas senhas para authentik, airflow, dashboard, ojs, superset |
git filter-repo | Limpar historico Git |
| Remover gitleaks allowlist | Paths temporarios no .gitleaks.toml |
| CrowdSec + bouncer Traefik | WAF/IPS na entrada |
| Falco | Runtime security K8s |
| Trivy CronJob | Vulnerability scan periodico |
Referencia: iac.md Fase 1
Sprint 3 — GPU no K3s
Objetivo: GPU funcional no cluster. Depende de Sprint 0 (PVE 9) nos nodes GPU.
Franca (nodes 31, 32, 33):
| Tarefa | Detalhe |
|---|---|
| Instalar driver NVIDIA | apt install nvidia-driver (Debian 13 facilita) |
| nvidia-ctk (container toolkit) | Runtime GPU para containerd/K3s |
| Expandir K3s | Nodes 32 e 33 fazem join como agent (31 ja tem K3s) |
| DRA driver | Dynamic Resource Allocation para GPU |
| KAI Scheduler | GPU sharing + topology-aware scheduling |
| DCGM Exporter | Metricas GPU → OpenObserve/Prometheus |
| Namespace ai-services | PriorityClasses, HF cache PVC (LINSTOR) |
SP (nodes 31, 33, 34):
| Tarefa | Detalhe |
|---|---|
| Liberar pve-ippri-34 | Migrar VM desktop (30c/121G) para outro node |
| K3s SP | Bootstrap cluster separado nos 3 nodes GPU |
| GPU no K3s SP | Driver ja instalado — so nvidia-ctk + DRA |
Validacao: nvidia-smi dentro de pod, GPU schedulavel, DCGM exportando metricas.
Referencia: gpu-platform.md Fases 0-1
Sprint 4 — Primeiros servicos IA + Dados
Objetivo: pesquisadores comecam a usar. Depende de Sprint 3 (GPU).
Trilha GPU (depende de Sprint 3):
| Tarefa | Detalhe |
|---|---|
| vLLM + Open WebUI | Chat local com modelos open-source |
| TensorZero gateway | Auth, routing, A/B test, rate limiting |
| Langfuse | Observabilidade LLM |
| LLM Guard | Content filtering, PII detection |
Trilha Dados (parcialmente independente — pode comecar antes):
| Tarefa | Detalhe |
|---|---|
| Scrapy + Playwright | Crawlers (diarios oficiais, noticias, governo) |
| Docling + Tika | PDF parsing + OCR |
| Apache Hudi | Lakehouse bronze/silver/gold sobre SeaweedFS |
| InvenioRDM + OpenSearch | Repositorio com busca full-text |
Trilha AIOps (depende de Sprint 3):
| Tarefa | Detalhe |
|---|---|
| k8sGPT | CronJob diagnostico K3s |
| HolmesGPT | Investigacao automatica de alertas |
| Chaterm | Terminal IA para operador |
Referencia: gpu-platform.md Fases 2-3, data-platform.md Fases 1-3
Sprint 5 — Multi-site (Franca ↔ SP)
Objetivo: federar os dois clusters. Depende de Sprint 3 (K3s em ambos os sites).
| Tarefa | Detalhe |
|---|---|
| VyOS WireGuard | Tunel site-to-site (rede UNESP/ANSP) |
| CIDRs | Planejar pod/service sem colisao entre sites |
| Cilium | Substituir Flannel nos dois clusters (prerequisito Cluster Mesh) |
| Cilium Cluster Mesh | Service discovery cross-cluster |
| Karmada | Control plane multi-cluster (placement, failover) |
| MultiKueue | GPU batch cross-site |
| DNS failover | Healthcheck + 2 IPs publicos |
| SeaweedFS replicacao | Async cross-site |
| LINSTOR em SP | Instalar nos nodes GPU (NVMe disponivel) |
Decisoes:
- Argo CD: centralizado (Karmada) ou 1 por site?
- SeaweedFS: near-sync ou async?
- DNS failover: Cloudflare ou self-hosted?
Referencia: iac.md Fases 6a-6b
Sprint 6 — Busca semantica + IAM
Objetivo: busca por significado + identidade centralizada. Depende de Sprint 4 (GPU services).
| Tarefa | Detalhe |
|---|---|
| Embeddings BGE-M3 | Vetorizacao semantica |
| Qdrant | Vector database para RAG |
| Whisper | Speech-to-text |
| SGLang | Alternativa vLLM (RadixAttention) |
| Trino | Query federada sobre Hudi + PostgreSQL + MongoDB |
| FreeIPA | Diretorio central (LDAP + Kerberos) |
| Octelium ZTNA | Acesso remoto zero trust |
Referencia: gpu-platform.md Fase 4, data-platform.md Fase 4, iac.md Fase 4-5
Sprint 7 — Batch AI + CAQDAS + Workspace
Objetivo: pesquisadores autonomos. Depende de Sprint 6.
| Tarefa | Detalhe |
|---|---|
| Kueue | Job queuing para batch |
| Unsloth + MLflow | Fine-tuning |
| Promptfoo + DVC | Eval de modelos + dataset versioning |
| OpenCost + Kyverno | Custo + policies |
| QualCoder + Label Studio + CATMA | CAQDAS com IA |
| JuiceFS /home | Home compartilhado sobre SeaweedFS |
| VDI Webtop | Desktop web para pesquisadores |
Referencia: gpu-platform.md Fases 5-6, data-platform.md Fase 5, iac.md Fase 5
Sprint 8 — DX avancada + IA autonoma
Objetivo: plataforma completa. Depende de Sprint 7.
| Tarefa | Detalhe |
|---|---|
| Backstage | Service catalog |
| Tabby | Code assist (Copilot-like) |
| DSPy | Pipelines IA declarativos |
| Neo4j + NER + LightRAG | Knowledge graph |
| LLM Knowledge Base + Hermes Agent | Pesquisa autonoma |
| kagent | Acoes corretivas autonomas K8s |
| JupyterHub/Marimo | Notebooks com GPU/SQL/Qdrant |
| Datashare + Zotero | Exploracao documental + bibliogragia |
| dflash + PolarQuant + TurboQuant | Otimizacao de inference |
Referencia: gpu-platform.md Fases 7-9, data-platform.md Fases 6-8
Diagrama de dependencias
Sprint 0 (PVE 9) │ ├──► Sprint 1 (Codificar infra) ──────────────────┐ │ (paralelo com Sprint 0) │ │ ▼ ├──► Sprint 2 (Seguranca) ──────────────────► Sprint 3 (GPU no K3s) │ (paralelo com Sprint 1) │ │ ├──► Sprint 4 (IA + Dados) │ │ │ │ │ ▼ └──► Sprint 5 (Multi-site) ◄──────────────────────┘ Sprint 6 (Busca + IAM) (depende de K3s nos 2 sites) │ │ ▼ └──────────────────────────────────► Sprint 7 (Batch + CAQDAS) │ ▼ Sprint 8 (DX + IA autonoma)O que roda em paralelo:
- Sprint 0 (PVE 9) + Sprint 1 (codificar) + Sprint 2 (seguranca) — 3 frentes simultaneas
- Sprint 4 trilha Dados (crawlers, Hudi) nao depende de GPU — pode antecipar
- Sprint 5 (multi-site) pode comecar assim que Sprint 3 terminar, sem esperar Sprint 4
Recursos por sprint
| Sprint | Nodes afetados | Downtime esperado |
|---|---|---|
| 0 | Todos (13 online) | Sim, por node (reboot apos upgrade) |
| 1 | Nenhum (so codificacao) | Nao |
| 2 | vm-cpps-02 (rotacao credenciais) | Minimo (restart de pods) |
| 3 | labri-31/32/33 (Franca), ippri-31/33/34 (SP) | Nao (join K3s sem downtime) |
| 4 | K3s cluster | Nao (deploy via ArgoCD) |
| 5 | Todos (rede cross-site) | Sim (troca CNI Flannel→Cilium) |
| 6-8 | K3s cluster | Nao (deploy via ArgoCD) |
Referencia cruzada com roadmaps
| Sprint | iac.md | gpu-platform.md | data-platform.md |
|---|---|---|---|
| 0 | Fase 1 (parcial) | — | — |
| 1 | Fase 1 (importar, codificar) | — | — |
| 2 | Fase 1 (seguranca) | — | — |
| 3 | — | Fases 0-1 | — |
| 4 | — | Fases 2-3 | Fases 1-3 |
| 5 | Fases 6a-6b | — | — |
| 6 | Fases 4-5 | Fase 4 | Fase 4 |
| 7 | Fase 5 | Fases 5-6 | Fase 5 |
| 8 | Fase 7 | Fases 7-9 | Fases 6-8 |