Case: biblioteca Ansible para estações, servidores e deploys Rails/Node
Case: biblioteca Ansible para estações, servidores e deploys Rails/Node
Contexto
Havia dezenas de apps e engines Rails/Node para vários clientes. Onboarding dev era demorado, servidores tinham configurações divergentes e deploys exigiam checklists manuais. Precisávamos padronizar tudo com um único conjunto de playbooks/roles.
O que a biblioteca entrega
- Workstation pronta: zsh/oh-my-zsh, dotfiles, pastas de projetos e clones por cliente/engine, hosts preconfigurados.
- Servidores consistentes: roles para nginx/puma/sidekiq/redis/postgres/mysql, certificados, users/keys, ajustes de permissões e serviços.
- Deploys Rails/Node: bundle/yarn, migrations, assets, crontab (whenever), restart de clusters puma, healthcheck via socket, notificações (Teams) de erro/sucesso.
- Automação adicional: scripts auxiliares (
install.sh,roundhousekick.sh), inventories por ambiente e tarefas para limpar logs/tmp, sincronizar configs e gerenciar upgrades.
Arquitetura (simplificada)
flowchart LR
Inv[Inventories/vars] --> PlayDev[Playbooks workstation]
Inv --> PlayOps[Playbooks servidores]
Inv --> PlayDeploy[Playbooks deploy]
PlayDev --> RolesDev[roles/development/*<br/>zsh, dotfiles, clones]
PlayOps --> RolesOps[roles/nginx-puma, redis-server,<br/>postgresql/mysql, ssl, ssh-keys]
PlayDeploy --> RolesDeploy[roles/deploy, fastdeploy,<br/>puma, sidekiq, services]
RolesDeploy --> HC[Healthcheck + retries + notify]
Operação e rastreabilidade
- Healthchecks pós-restart (via socket/puma), retries e notificações Teams para falhas/sucesso de deploy.
- Roles focadas: workstation, app servers, DB/cache, deploy. Inventários/vars por cliente/ambiente.
- Scripts rápidos (
roundhousekick.sh,install.sh) para rodar playbooks sem decorar comandos.
Impacto (anonimizado)
- Onboarding dev caiu para poucas horas: estação vem com shell, dotfiles e repositórios clonados.
- Deploys mais previsíveis: validações de saúde e notificações reduzem reprocesso e incidentes pós-release.
- Configuração de servidores mais homogênea (nginx/puma/sidekiq/redis/DB) mesmo com múltiplos clientes e apps.
O que você pode reutilizar
- Separar roles por domínio (workstation, app server, deploy) e manter inventories por cliente/ambiente.
- Healthcheck + retries após restart de serviços antes de notificar sucesso.
- Scripts wrapper para reduzir fricção de quem executa playbooks.
Esta postagem está licenciada sob
CC BY 4.0
pelo autor.