Deploy
SkillCloud & infraOrquestrar release e deploy em servidor com SEMVER, Docker Swarm e Ansible. Use para publicação completa ou preparação desse fluxo.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Deploy skill
What this skill tells your AI
The instructions your AI receives, as published by promovaweb/specsfy in specialists/specsfy-specialist-deploy/SKILL.md and read by ahel’s review.
Quando usar
- Acionar quando a pessoa pedir release ou deploy de uma aplicação em servidor.
- Acionar para preparar um servidor que receberá stacks Docker Swarm via Ansible.
- Acionar quando a pessoa pedir para cadastrar, adicionar, substituir ou conferir um servidor do ambiente.
- Não executar push, provisionamento ou mudança remota sem alvo e autorização explícitos.
Fluxo
-
Confirmar a raiz do sistema do usuário e acionar
$specsfy-specialist-versioningpara ler ou prepararSEMVER. -
Inspecionar
Dockerfile, Compose, stack eansible/existentes. Comparar PHP, extensões, dependências, assets, entrypoint, usuário interno, portas, healthcheck e comando do Octane com a aplicação atual. Preservar trechos personalizados e apresentar o diff antes de substituir um arquivo sem marcações gerenciadas. -
Executar o gerador somente na primeira preparação, quando todos os destinos estiverem ausentes:
node scripts/scaffold.mjs --project <raiz> --image <registry>/<aplicacao>O padrão inclui Cloudflare Tunnel na stack. Se a pessoa pedir outro proxy, gerar sem
cloudflaredcom--proxy externale configurar a alternativa solicitada em etapa própria. -
Acionar
$specsfy-specialist-debian-serverpara levantar as máquinas uma por rodada. Registrar hostname, endereço, porta SSH, usuário de conexão e papelmanagerouworkeremansible/inventory.yml, preservando os hosts já cadastrados. Quando chegar uma máquina nova, adicionar somente esse host. -
Testar todos os hosts declarados antes de qualquer alteração remota. A skill executa o utilitário, mas também mostra a forma curta para uso no Herdr:
./deploy check-hosts -
Localizar apenas chaves públicas
~/.ssh/*.pubna máquina controladora e adicioná-las aoauthorized_keysdo usuáriodeploy. Nunca ler, copiar ou transmitir uma chave privada. Manter acessos remotos já cadastrados. -
Perguntar quais senhas, tokens, chaves e keys a aplicação consome e registrar os nomes em
ansible/vault-fields.txt. Não pedir os valores na conversa. O utilitário solicita cada valor com entrada oculta e grava o YAML criptografado:./deploy secretsA repetição mantém os campos existentes e pergunta somente os ausentes.
No padrão Cloudflare Tunnel, incluir
vault_cloudflare_tunnel_token. O serviço lê o token pelo arquivo/run/secrets/cloudflare_tunnel_token. -
Gerar a referência da imagem com
docker-tag. Recusar qualquer tag Docker diferente do valor presente emSEMVER. -
Acionar
$specsfy-specialist-debian-servere$specsfy-specialist-dockerpara definir o estado do host e do Docker Engine. -
Acionar
$specsfy-specialist-ansiblepara criar ou revisar roles idempotentes que criam o usuáriodeploy, instalam Docker Engine, configuram daemon, firewall, permissões e diretórios da aplicação. -
Acionar
$specsfy-specialist-docker-swarmpara definir managers, workers, redes e stacks. O playbook executadocker swarm initsomente quando o manager ainda não participa de um swarm e usa tokens protegidos para joins. -
Validar Ansible em syntax check, lint, check mode e duas execuções num alvo descartável. Validar a stack com
docker stack config. -
Com autorização para o alvo informado, aplicar o playbook, publicar a imagem versionada e executar
docker stack deploypelo manager. -
Conferir réplicas, healthchecks, logs, versão e digest. Guardar o comando de rollback para a versão anterior.
Padrões
SEMVERna raiz do sistema do usuário governa imagem, manifesto, tag Git e release.- Gerar
compose.yamlpara desenvolvimento estack.yamlpara produção. Toda produção usa a stack pelo Docker Swarm; não use Compose como runtime de produção. - Em Laravel, exigir
laravel/octanee Open Swoole. A imagem instalaopenswoole; Compose e stack executam Octane com--server=swoole. - Sugerir Cloudflare Tunnel como entrada pública padrão. Executar
cloudflaredcomo serviço da stack, ligado à mesma rede overlay da aplicação e sem porta pública no serviço Laravel. O hostname do túnel aponta parahttp://app:8000. - Trocar o padrão somente quando a pessoa pedir outro proxy. Nesse caso, não
gerar o serviço
cloudflarednem o secret do token. - Ansible configura o servidor e o estado do Swarm. Não deixe uma sequência manual de comandos SSH como procedimento principal.
- Criar o usuário de serviço
deploy, adicionar somente esse usuário ao grupodockere atribuir a ele os diretórios da aplicação. O grupo concede acesso administrativo amplo ao host e não deve incluir contas sem essa função. - Manter
ansible/inventory.ymlcomo mapa dos servidores conhecidos. Uma inclusão preserva os hosts atuais, testa a nova conexão e só então configura o node e seu papel no Swarm. - Mostrar
./deploy check-hosts,./deploy secrets,./deploy sync-keysou./deploy runquando a pessoa precisar copiar uma ação para outro painel do Herdr. A skill executa esses utilitários sem exigir memorização. - Em nova chamada, ler novamente a aplicação e reconciliar apenas o que mudou. O gerador serve ao primeiro bootstrap e não deve sobrescrever arquivos existentes para simular atualização.
- Use módulos idempotentes e
community.docker; comandos necessários para iniciar ou integrar o swarm precisam de condições baseadas no estado atual. - Mantenha managers em número ímpar e restrinja as portas do Swarm aos nodes autorizados.
- Publique uma imagem uma vez e promova o mesmo digest entre ambientes.
- Senhas, tokens e chaves entram em um Ansible Vault criado por prompt seguro.
O Ansible transforma os valores descriptografados em Docker Secrets com
no_log: true; a stack guarda apenas nomes e mounts externos.
Antipadrões
- Usar
latestou outra tag que não reproduzaSEMVER. - Executar
docker swarm initem toda rodada do playbook. - Expor token de join em log, variável aberta ou arquivo commitado.
- Guardar senha, token ou chave no
stack.yaml, em variável aberta ou na imagem. - Passar o token do Cloudflare Tunnel por argumento, variável aberta ou arquivo versionado.
- Conceder
sudoirrestrito ao usuáriodeploysem necessidade confirmada. - Fazer build no servidor ou recompilar uma imagem para cada ambiente.
- Considerar o deploy concluído apenas porque o comando retornou código zero.
Validação
- Executar
current,docker-tageverify-docker-tagpela skill de versionamento. - Confirmar que
deployexiste, pertence ao grupodocker, acessa o daemon e é owner dos diretórios da aplicação. - Confirmar Docker Engine ativo, manager alcançável e swarm em estado
active. - Executar o playbook duas vezes; a segunda rodada deve terminar sem mudanças.
- Comparar a imagem de cada serviço com
SEMVERe com o digest publicado. - Observar a convergência e ensaiar rollback em ambiente compatível.
Skills relacionadas
$specsfy-specialist-versioninggoverna a versão do sistema do usuário.$specsfy-specialist-debian-serverdefine o estado base do host.$specsfy-specialist-dockerprepara e publica a imagem.$specsfy-specialist-ansibleautomatiza o servidor e o cluster.$specsfy-specialist-docker-swarmgoverna serviços, rollout e rollback.$specsfy-specialist-delivery-engineeringgoverna pipeline e promoção entre ambientes quando esses componentes fizerem parte da entrega.
Leia references/standards.md antes de criar ou alterar o playbook de provisionamento e deploy.
Signals
- GitHub stars
- 79
- Forks
- 37
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
specsfy-specialist-deploy- Source
- github.com/promovaweb/specsfy