Referência CLI

Documentação completa dos comandos do deployally.

Instalação

curl -fsSL https://get.deployally.com/init.sh | sudo bash

Canal de release candidate:

curl -fsSL https://get.deployally.com/init.sh | sudo bash -s -- --rc

Download direto do binário:

# x86_64
curl -Lo deployally https://get.deployally.com/x86_64/deployally
chmod +x deployally
sudo mv deployally /usr/local/bin/

# aarch64
curl -Lo deployally https://get.deployally.com/aarch64/deployally
chmod +x deployally
sudo mv deployally /usr/local/bin/

Estrutura de Comandos

deployally [comando-global]
deployally <subcomando> [opções]

Comandos globais (--version, self-update) e os comandos de catálogo e deploy (deploy, validate, template new, templates, apikey) ficam todos no nível raiz.

Comandos Globais

`--version` / `-V`

Exibe a versão do CLI.

deployally --version

`--help` / `-h`

Exibe ajuda.

deployally --help
deployally deploy --help

`self-update`

Atualiza o CLI para a versão mais recente do CDN.

deployally self-update
Flag Descrição
--rc Usa canal de release candidate em vez de stable
--force Força reinstalação mesmo na última versão

O comando baixa o binário, valida (-V), substitui e restaura backup se falhar.


Comandos de Catálogo e Deploy

Tabela rápida:

Comando Descrição
validate Valida um template do catálogo ou local
template new Gera scaffold de template a partir de um archetype
deploy Faz deploy de uma instance
undeploy Remove uma instance (inverso do deploy)
templates Lista, localiza e identifica templates (list, locate, check, identify)
apikey Gerencia API keys (list, create, show, rotate, revoke)

`validate`

Valida a estrutura, referências da Reflang e contratos de archetype de um template.

Sintaxe

deployally validate --species <SPECIES> [opções]

Opções

Opção Tipo Default Descrição
--species string Obrigatório. Species do template (ex: memos)
--templates-dir path Diretório com templates locais; se omitido busca no catálogo remoto
--json bool false Saída em JSON estruturado

Exit Codes

Código Significado
0 Válido, sem warnings
1 Válido com warnings
2 Erros de validação

Exemplos

# Validar template do catálogo
deployally validate --species memos

# Validar template local antes de publicar
deployally validate --species meu-app --templates-dir ./templates

# Saída JSON (uso programático)
deployally validate --species memos --json

O que é validado

  • Schema do template (campos obrigatórios por archetype)
  • Cada referência ${input.X}, ${secrets.X}, etc. tem origem declarada
  • Funções da Reflang têm aridade correta
  • Healthcheck declarado se archetype exigir (multi_component_saas)
  • Rotas HTTP referenciam componentes existentes
  • Predicates do ContractIR satisfazem o archetype

`template new`

Gera um scaffold YAML para um novo template, pronto para edição.

Sintaxe

deployally template new --archetype <A> --species <S> [opções]

Opções

Opção Tipo Default Descrição
--archetype enum Obrigatório. application, asset, static, worker, multi_component_saas, network_appliance
--species string Obrigatório. Slug do template (ex: meu-app)
--out path stdout Arquivo de saída
--port int 8080 Porta interna do container
--data-path path Path para volume de dados (assets)
--version string 0.1.0 Versão inicial do template
--family string derivado Family taxonômica
--repo url URL do repositório upstream (referência)
--image string Image reference (ex: repo/app:1.0)
--listen-port int Porta no host para bind direto (sem proxy)
--provision-action string Action exposta como per-instance dispatcher

Exemplos

# Application simples
deployally template new \
  --archetype application \
  --species memos-clone \
  --image neosmemo/memos:0.20 \
  --port 5230 \
  --out memos-clone.yaml

# Asset com dispatcher para criação de databases
deployally template new \
  --archetype asset \
  --species meu-db \
  --image meu-org/db:latest \
  --port 5432 \
  --data-path /var/lib/db \
  --provision-action create-database \
  --out meu-db.yaml

# Multi-component SaaS
deployally template new \
  --archetype multi_component_saas \
  --species meu-saas \
  --out meu-saas.yaml

`deploy`

Faz deploy de uma instance do template.

Sintaxe

deployally deploy --species <S> --instance-uid <UID> [opções]

Opções

Opção Tipo Default Descrição
--species string Obrigatório. Species do template
--instance-uid string Obrigatório. Identificador único da instance (ex: memos-001)
--apply bool false Aplica o deploy de verdade; sem isso é dry-run implícito
--dry-run bool false Mostra o que seria feito, sem executar
--profile string Profile do template (minimal, production, etc.)
--input KEY=VALUE repetível Define um input do template
--variant string default Variant de imagem (ex: mysql-8.4, mysql-5.7)
--provision-missing-assets bool false Auto-provisiona assets declarados em needs se não estiverem rodando
--offline bool false Força fluxo local-only (sem fetch do registry)
--templates-dir path Usa templates desse diretório em vez do catálogo remoto
--source enum local local ou remote

Exemplos

# Deploy básico
deployally deploy --species memos \
  --instance-uid memos-001 \
  --input WEB_HOSTNAME=memos.exemplo.com \
  --apply

# Dry-run pra ver o que seria feito
deployally deploy --species memos \
  --instance-uid memos-001 \
  --input WEB_HOSTNAME=memos.exemplo.com \
  --dry-run

# Com profile de produção
deployally deploy --species mysql \
  --instance-uid mysql-prod \
  --profile production \
  --apply

# Variant específico (MySQL 5.7 em vez de 8.4)
deployally deploy --species mysql \
  --instance-uid mysql-legacy \
  --variant mysql-5.7 \
  --apply

# Auto-provisão de banco para WordPress
deployally deploy --species wordpress \
  --instance-uid blog-001 \
  --input WEB_HOSTNAME=blog.exemplo.com \
  --input ADMIN_EMAIL=admin@exemplo.com \
  --provision-missing-assets \
  --apply

# Deploy de template local
deployally deploy --species meu-app \
  --instance-uid meu-app-001 \
  --templates-dir ./templates \
  --source local \
  --apply

# Modo offline (não fala com registry)
deployally deploy --species memos \
  --instance-uid memos-001 \
  --offline \
  --apply

Pipeline de Execução

  1. Fetch: busca o template (local → cache → registry, exceto se --offline)
  2. Build context: aplica defaults dos inputs declarados; merge com --input
  3. Wizard: pede o que falta (compactado por prefixo); pula em --input exaustivos
  4. Reflang resolve: substitui ${...} em todas as seções
  5. Validate: ContractIR + predicates do archetype
  6. Archetype defaults merge: aplica networks, labels CCS, restart policy
  7. Preflight: DNS, port conflicts, network existence
  8. Auto-provision (se --provision-missing-assets): sobe assets faltantes em cascata
  9. Apply: cria volumes, networks, containers (Docker SDK)
  10. Wait healthy: poll do healthcheck declarado com retry

`undeploy`

Remove uma instance criada por deploy — é a operação inversa. Dry-run é o default: sem --apply, o comando só imprime o plano de remoção, sem tocar em nada.

Sintaxe

deployally undeploy --instance-uid <UID> [opções]

Opções

Opção Tipo Default Descrição
--instance-uid string Obrigatório. Identificador da instance a remover
--dry-run bool false Mostra o plano de remoção sem executar (comportamento default; a flag só explicita a intenção)
--apply bool false Remove os containers da instance (label ccs.systems/uid) e o registro local (manifests/<uid>/). Preserva dados em /data, volumes legados e secrets
--purge-data bool false Usado com --apply. Remove também a árvore /data da instance (config staging, dados e o dynamic/ do traefik ≥3.0.5), volumes nomeados legados {uid}-* e o diretório de secrets. Honra lifecycle.on_uninstall.preserve do template. Exige confirmar digitando o instance_uid, ou --yes
--yes bool false Pula a confirmação interativa do purge; obrigatório com -o json|yaml
--force bool false Prossegue com evidência degradada (record corrompido, ou template irresolvível no purge) — ignora preserve
-o, --output enum human json ou yaml — saída máquina (Envelope v2.0)

Exemplos

# Preview (dry-run — não toca em nada)
deployally undeploy --instance-uid memos-001

# Remove containers + registro, preservando dados (redeploy volta com tudo)
deployally undeploy --instance-uid memos-001 --apply

# Remoção total (irreversível) — exige digitar o instance_uid ou --yes
deployally undeploy --instance-uid memos-001 --apply --purge-data --yes

# Saída máquina para integração (CCS)
deployally undeploy --instance-uid memos-001 --apply --purge-data --yes -o json

O que nunca é removido

  • Volumes kind: bind (paths de sistema)
  • A rede public
  • Assets compartilhados ou bancos de tenant (declarados em deps[])
  • Containers que não têm a label ccs.systems/uid da instance

Undeploy é local

Uma instance removida localmente ainda pode estar registrada no servidor: rodar deploy de novo com o mesmo --instance-uid reprovisiona tudo (mesmos secrets, mesmos volumes). Para desativação definitiva, desregistre a instance no servidor.


Arquivo de Configuração

Localização padrão: /opt/deployally/config.yaml

api:
  url: https://sys.deployally.com
  api_key: da_xxx

defaults:
  source: remote
  profile: development

logging:
  level: info

Variáveis de Ambiente

Variável Descrição
DEPLOYALLY_API_URL URL da API
DEPLOYALLY_API_KEY Chave da API
DEPLOYALLY_CONFIG Path do config alternativo
RUST_LOG Nível de log (debug, info, warn, error)

Exit Codes Globais

Código Significado
0 Sucesso
1 Sucesso com warnings
2 Erro de validação ou input
3 Erro de I/O (Docker, rede)
4 Erro de autenticação
5 Recurso não encontrado

Próximos Passos

By Borlot.com.br on 05/06/2026