v0.4.0 — Multi-cloud completo
v0.4.0 — Multi-cloud completo
Marco do roadmap. O Bagre agora conecta AWS + Azure + GCP simultaneamente — single pane of glass para IPs em qualquer combinação de cloud + on-prem, com detecção automática de IPs públicos ociosos em todos os três providers.
✨ Destaques
☁️ Cloud sync Azure (#20)
Service Principal (App Registration + client secret) com OAuth2 client_credentials. Sincroniza:
- VNets e subnets (com região, tags, address prefixes)
- Network Interfaces (private IPs com referência à subnet, VM attachment)
- Public IPs — incluindo unassociated, que entram automaticamente no relatório FinOps
REST puro contra management.azure.com — sem @azure/* SDK (50MB+ de dep evitados).
☁️ Cloud sync GCP (#21)
Service Account JSON key com JWT RS256 manual + OAuth2 JWT bearer (RFC 7523). Sincroniza:
- Subnetworks via aggregated endpoint (todas regions num call só)
- Instances → NICs: private IPs + ephemeral public IPs (
accessConfigs.natIP) - Reserved Addresses: static INTERNAL/EXTERNAL — os EXTERNAL com
users:[]viram FinOps gold (equivalente Elastic IPs unassociated no GCP)
REST puro contra compute.googleapis.com — sem @google-cloud/* SDK.
🎯 O que veio de graça pra Azure e GCP
Como toda a base do v0.2.0 foi desenhada provider-agnostic, ao habilitar Azure e GCP estes recursos passaram a funcionar sem nenhuma mudança adicional:
- FinOps idle public IPs — relatório unificado com custo USD/mês desperdiçado entre os 3 providers
- Catálogos com abas dinâmicas — uma aba por CloudAccount conectada, em todos os providers
- Pool sintético de Public IPs — captura Elastic IPs (AWS) / Public IPs (Azure) / Static EXTERNAL Addresses (GCP)
- Audit log das operações
- Hero card com 3 estados (sem dados / zero ociosos / N ociosos pra revisar)
🚀 Como atualizar
git pull
docker compose build api web
docker compose up -dSem mudança de schema, sem novas env vars obrigatórias.
🔧 Configuração nova
Pra conectar Azure: precisa criar App Registration + client secret + atribuir role Reader na subscription. UI tem instruções inline.
Pra conectar GCP: precisa criar Service Account + role roles/compute.networkViewer + baixar JSON key. UI tem instruções inline + link pra doc.
📊 Comparativo dos providers
| Característica | AWS | Azure | GCP |
|---|---|---|---|
| Auth | Access Key OR Assume Role | Service Principal | Service Account JSON |
| API base | EC2 SDK | REST direto | REST direto |
| Scope | Account ID | Subscription ID | Project ID |
| Regions | iterado | aggregated | aggregated |
| Custo estimado idle/h | $0.005 | $0.005 | $0.010 |
🛣️ Próximo
- #26 SNMP discovery + topology graph (sugestão do Raul)
- #27 Validation plugin system (sugestão do Jesse)
- #15 Terraform Provider
- #16 Kubernetes Operator + CRDs
- #10 IPv6 first-class
📦 Código: https://github.com/fabgcruz/bagre — MIT