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.:argocdsobrek3s.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.