Extensão VS Code para converter diagramas de deployment em artefatos IaC e
automatizar deploys por ambiente.
Objetivo
Fornecer um fluxo simples para ir de arquitetura visual → código IaC → deploy
controlado (dev/staging/prod), com suporte atual a Azure (Bicep), AWS (CDK) e
Terraform.
Benefícios
- Acelera criação de infraestrutura a partir de diagramas.
- Garante padrões e defaults seguros.
- Facilita revisão humana antes do deploy com preview e diff.
- Suporta fluxos de CI/CD e publicação da extensão.
Estado atual
- Parsers PlantUML e Structurizr DSL com extração para o modelo intermediário
mi/v1.
- Geradores Bicep, AWS CDK e Terraform para os modelos suportados no projeto.
- Fluxo de deploy e destroy por ambiente, com preview e validação.
- Preview em webview com edição do artefato gerado.
- Fixtures reais em
examples/ e testes automatizados cobrindo o fluxo principal.
Pré-requisitos para deploy
- Azure CLI (
az) para deploy Azure.
- AWS CLI e CDK local para deploy AWS.
- Terraform local para deploy Terraform.
Para apenas gerar e revisar IaC, a extensão pode ser usada sem executar deploy.
Instalação da extensão
Quando publicada no Marketplace, instale pelo VS Code:
- Abra a aba Extensions.
- Pesquise por
IaC Multi-Platform.
- Clique em Install.
Depois de instalar, abra um workspace com arquivos .puml, .structurizr, .dsl,
.mi.yaml ou .mi.json e use o menu de contexto ou a Command Palette.
Uso no VS Code
Gerar IaC
Command Palette (Cmd+Shift+P) → IaC: Generate IaC
A extensão:
- lê o diagrama ou MI
- valida o modelo intermediário
- gera Bicep, AWS CDK ou Terraform
- salva o artefato no workspace
- abre o preview para revisão
Preview de arquivo gerado
Clique com botão direito em um arquivo .bicep, .tf ou .ts gerado e selecione:
IaC Multi-Platform → IaC: Preview This File
Deploy
Command Palette (Cmd+Shift+P) → IaC: Deploy to Dev
Destroy
Command Palette (Cmd+Shift+P) → IaC: Destroy Infrastructure
O destroy exige confirmação explícita antes de remover recursos.
Fluxo de uso
1. Criar diagrama PlantUML
Crie um arquivo diagram.puml no seu workspace:
@startuml
project: web-app
environment: dev
cloud Azure
@enduml
2. Gerar IaC
Palette → IaC: Generate IaC
- Extrai PlantUML → Modelo Intermediário v1
- Valida schema
- Gera template Bicep ou AWS CDK, conforme o provider detectado
- Salva o arquivo gerado no workspace
3. Deploy
Palette → IaC: Deploy to Dev
- Preview da execução
- Executa
az deployment group create para Azure
- Para AWS, usa o fluxo CDK correspondente
- Logs em tempo real
4. Destroy
Palette → IaC: Destroy Infrastructure
- Requer confirmação explícita
- Executa cleanup para o provider atual
Arquitetura
Camadas
- Parser (
src/parsers/): PlantUML / Structurizr / MI YAML / MI JSON → JSON
- Modelo (
src/types/, validação em src/core/): Intermediário versionado
- Generator (
src/generators/): MI → Bicep/CDK/Terraform
- Deploy (
src/deploy/): Executar az, AWS CDK ou Terraform
Ver templates/mi-schema.json para documentação completa.
{
"schema": "mi/v1",
"project": "web-app",
"environment": "dev",
"resources": [
{
"type": "ResourceGroup",
"name": "rg-default",
"provider": "az",
"properties": { "location": "eastus" }
}
]
}
CLI
Para instalar a CLI globalmente pelo npm:
npm install -g iac-multi-plataforma
Depois disso, use em qualquer pasta:
iac-multi-plataforma generate --input .\diagrama.puml --platform auto --emit-mi
Exemplos rápidos com a CLI instalada:
iac-multi-plataforma generate --input ./diagram.puml --platform auto --output-dir ./generated --emit-mi
iac-multi-plataforma preview --input ./diagram.puml --platform azure
iac-multi-plataforma deploy --input ./diagram.puml --platform azure --subscription <subscription-id>
iac-multi-plataforma destroy --input ./diagram.puml --platform azure --subscription <subscription-id>
Licença
MIT
Contato
Abra issues no repositório ou use GitHub Discussions para perguntas e suporte.