Automação Avançada
Automação de Deploy
🚀 Pipeline CI/CD
#!/bin/bash
# pipeline.sh
set -e
# Configurações
source .env
VERSION=$(git describe --tags)
# Etapas do pipeline
run_tests() {
echo "Executando testes..."
make test
}
build_app() {
echo "Construindo aplicação..."
docker build -t app:${VERSION} .
}
deploy() {
echo "Realizando deploy..."
kubectl apply -f k8s/
}
main() {
run_tests
build_app
deploy
}
main "$@"
📊 Monitoramento
#!/bin/bash
# monitor.sh
THRESHOLD=90
check_resources() {
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1)
mem_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
disk_usage=$(df -h / | awk 'NR==2 {print $5}' | cut -d% -f1)
if [ "$cpu_usage" -gt "$THRESHOLD" ] ||
[ "${mem_usage%.*}" -gt "$THRESHOLD" ] ||
[ "$disk_usage" -gt "$THRESHOLD" ]; then
send_alert
fi
}
send_alert() {
curl -X POST "${WEBHOOK_URL}" \
-H "Content-Type: application/json" \
-d "{\"text\":\"Alerta: Uso de recursos alto!\"}"
}
Automação de Tarefas
⏰ Agendamento
#!/bin/bash
# scheduler.sh
BACKUP_DIR="/backups"
LOG_FILE="/var/log/backup.log"
backup_database() {
timestamp=$(date +%Y%m%d_%H%M%S)
pg_dump -U postgres db_name > "${BACKUP_DIR}/backup_${timestamp}.sql"
# Manter apenas últimos 7 backups
find "${BACKUP_DIR}" -name "backup_*.sql" -mtime +7 -delete
}
rotate_logs() {
find /var/log -name "*.log" -size +100M | while read log; do
gzip -9 "${log}"
done
}
🔄 Sincronização
#!/bin/bash
# sync.sh
DIRS=("config" "data" "logs")
REMOTE="user@server:/path"
for dir in "${DIRS[@]}"; do
rsync -avz --delete "${dir}/" "${REMOTE}/${dir}/"
done
Automação de Desenvolvimento
🛠️ Setup de Ambiente
#!/bin/bash
# setup_dev.sh
setup_env() {
# Instalar dependências
if command -v apt-get &> /dev/null; then
sudo apt-get update
sudo apt-get install -y docker docker-compose git
elif command -v brew &> /dev/null; then
brew install docker docker-compose git
fi
# Configurar git
git config --global user.name "${GIT_NAME}"
git config --global user.email "${GIT_EMAIL}"
}
📦 Gestão de Dependências
#!/bin/bash
# deps_check.sh
check_deps() {
local deps=("docker" "git" "kubectl" "helm")
for dep in "${deps[@]}"; do
if ! command -v "$dep" &> /dev/null; then
echo "Erro: $dep não encontrado"
exit 1
fi
done
}
Boas Práticas
✅ Recomendações
Use controle de versão
Implemente logging adequado
Trate erros apropriadamente
Documente suas automações
Faça backup antes de alterações
⚠️ Pontos de Atenção
Teste em ambiente seguro
Valide inputs
Monitore execuções
Implemente rollback
Mantenha logs de auditoria
AUTOMATION MASTER
[🤖🤖🤖🤖🤖] 100%
STATUS: AUTOMAÇÃO DOMINADA
PRÓXIMO: ORQUESTRAÇÃO
14 abril 2025