Estrutura recomendada para a página “Desenvolvimento” da Scully:
1. Estrutura do Projeto
scully/
├── scully.sh # CLI principal
├── modules/ # Módulos de automação
│ ├── ping.sh
│ ├── file.sh
│ └── ...
├── inventories/ # Inventários por ambiente
│ ├── inventory-dev
│ ├── inventory-hom
│ └── inventory-prd
├── utils/ # Scripts auxiliares (ex: logs, parse)
├── scully.spec # Build RPM
└── README.md
2. Filosofia do projeto
100% Shell Script puro
Compatível com distribuições legadas
Sem dependência de Python, Ruby, Perl, etc.
Estrutura modular, limpa e reutilizável
Foco em agilidade, portabilidade e clareza
3. 🛠 Como contribuir com módulos
cd modules/
cp template.sh firewall.sh
chmod +x firewall.sh
Cada módulo deve seguir este padrão:
$1: host
$2...: parâmetros
Validação de argumentos
Saída clara com echo (✅ | ❌)
4. Como testar localmente
scully -i inventories/inventory-dev all -m ping
scully 192.168.0.10 -m service nginx restart
5. Diretrizes de estilo para módulos
Nomes simples (file.sh, cron.sh, shell.sh)
Documentar no topo do script:
# file.sh - Cria arquivo ou diretório com permissões
Validar argumentos
Evitar eval sempre que possível
Suporte a debug com set -x opcional via flag
6. 🧾 Roadmap (exemplo)
Versão Status Recursos previstos
1.9.3 ✅ Lançado Módulos essenciais, inventário, shell CLI
1.10.0 🔄 Em dev Suporte a logs por host e paralelismo
1.12.0 ⏳ Planejado Integração com Zabbix e auditoria de execução
7. 🛡️ Testes manuais sugeridos
Teste Resultado esperado
scully all -m ping Hosts respondem com sucesso
scully grupo1 -m file /tmp/x Cria arquivo remoto
scully host -m shell "uptime" Executa comando via SSH
8. 📤 Publicação e Distribuição
Versões empacotadas como .tar.gz
Planejamento futuro de publicação via yum repo
Pode ser usada via Git ou instalada via script