status:alpha
version:v0.0.1
devstation docs

Blueprints

A DSL declarativa em YAML para instalar e operar serviços nas suas VMs.

Um blueprint é uma definição declarativa em YAML para instalar e operar um service via SSH. A station registra services a partir de blueprints e os executa nas VMs.

Onde os blueprints ficam

Cada blueprint é uma pasta com um blueprint.yaml como entrypoint:

docker/
├── blueprint.yaml        # obrigatório
└── scripts/              # sidecars shell opcionais
    └── install.sh

O catálogo mescla duas origens: blueprints oficiais, que vêm no binário, e blueprints locais, em ~/.devstation/blueprints. Um blueprint local com o mesmo nome de um oficial sobrescreve o oficial, permitindo adaptar qualquer entrada do catálogo. A tela de blueprints marca cada item como local ou official.

Registre um blueprint local

devstation blueprint register ./meu-blueprint          # uma pasta…
devstation blueprint register ./meu-blueprint/blueprint.yaml   # …ou o arquivo
devstation blueprint register ./docker --force         # sobrescrever um nome existente

O comando valida o blueprint com o parser real e copia a pasta para o catálogo local. Na próxima tela de registro de service, ele já aparece.

Tipos

  • Standalone — declara seus próprios roles[], cada um rodando nas suas VMs (ex.: docker, k3s).
  • Hosted — declara host: { blueprint, role } e roda sobre outro service (ex.: argocd sobre k3s.server).

Exemplo

Um blueprint standalone mínimo:

name: docker
description: Container runtime (Docker CE)
version: 1.0.0
compatibility:
  os: [ubuntu-22-04, ubuntu-24-04, debian-12, debian-13]

roles:
  - name: main
    install:
      - name: install
        description: Install Docker CE
        script: scripts/install.sh
        verify:
          run: command -v docker >/dev/null 2>&1
    uninstall:
      - name: remove
        description: Remove Docker CE
        run: sudo apt-get remove -y docker-ce

Os steps rodam via SSH; cada verify os mantém idempotentes. Steps podem publish valores (secrets ou facts) para roles seguintes ou services hosted, e um bloco uninstall desfaz o serviço na ordem inversa. O templating resolve ${inputs.X}, ${secrets.X}, valores de peers e arquivos embutidos (${file:...}) por host em tempo de execução.

Como criar

A referência completa da DSL — todos os campos, todo o templating e verify / publish / rollback / uninstall — é mantida no repositório: docs/blueprint-dsl.md.

O repositório também traz uma skill de agente blueprint-dsl (.agents/skills/blueprint-dsl/), para que um assistente de IA crie blueprints com domínio completo da DSL.