
Séparation des scripts de génération et amélioration de l'architecture - Séparé generate_grafana_dashboards.sh en 3 scripts distincts : * generate_grafana_dashboards.sh (dashboards uniquement) * generate_promtail_config.sh (configuration Promtail) * generate_logrotate_configs.sh (configurations Logrotate) - Supprimé generate_docker_compose.sh et generate_docker_variables.sh - Centralisé la génération des variables dans generate_variables.sh - Mis à jour generate.sh pour une architecture en 5 étapes - Corrigé les chemins de sortie et les références de variables - Ajouté la gestion d'erreurs pour les fichiers .env problématiques - Généré toutes les configurations Nginx, Grafana, Promtail et Logrotate - Amélioré la modularité et la maintenabilité du code
103 lines
2.8 KiB
Bash
Executable File
103 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Script de génération des configurations Logrotate
|
||
# Génère les configurations logrotate pour tous les services
|
||
|
||
set -euo pipefail
|
||
|
||
# Couleurs pour les messages
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Fonctions d'affichage
|
||
print_error() { echo -e "${RED}❌ ERREUR${NC}: $1"; }
|
||
print_success() { echo -e "${GREEN}✅ SUCCÈS${NC}: $1"; }
|
||
print_info() { echo -e "${BLUE}ℹ️ INFO${NC}: $1"; }
|
||
print_warning() { echo -e "${YELLOW}⚠️ ATTENTION${NC}: $1"; }
|
||
|
||
# Charger les variables d'environnement
|
||
load_env_files() {
|
||
local env_files=(".env.secrets" ".env")
|
||
|
||
for env_file in "${env_files[@]}"; do
|
||
if [ -f "$env_file" ]; then
|
||
echo "📄 Chargement de $env_file..."
|
||
# shellcheck source=/dev/null
|
||
source "$env_file"
|
||
else
|
||
print_warning "Fichier $env_file non trouvé"
|
||
fi
|
||
done
|
||
}
|
||
|
||
# Fonction pour générer les fichiers de configuration logrotate
|
||
generate_logrotate_configs() {
|
||
echo "🔧 Génération des configurations logrotate"
|
||
|
||
# Créer le répertoire si nécessaire
|
||
mkdir -p "logrotade"
|
||
|
||
# Générer les configurations pour chaque service
|
||
for SERVICE_VAR in "${SERVICES[@]}"; do
|
||
local CONFIG_FILE="logrotade/${SERVICE_VAR,,}.conf"
|
||
|
||
echo "📄 Génération de $CONFIG_FILE"
|
||
|
||
cat > "$CONFIG_FILE" << EOF
|
||
\$${SERVICE_VAR}_LOGS_DIR/*.log {
|
||
daily
|
||
missingok
|
||
rotate 7
|
||
compress
|
||
delaycompress
|
||
notifempty
|
||
create 644 root root
|
||
postrotate
|
||
# Redémarrer le service si nécessaire
|
||
docker restart \$${SERVICE_VAR}_DOCKER_NAME 2>/dev/null || true
|
||
endscript
|
||
}
|
||
EOF
|
||
done
|
||
|
||
echo "✅ Configurations logrotate générées pour ${#SERVICES[@]} services"
|
||
}
|
||
|
||
# Fonction principale
|
||
main() {
|
||
echo "🚀 GÉNÉRATION DES CONFIGURATIONS LOGROTATE"
|
||
echo "=========================================="
|
||
|
||
# Charger les variables d'environnement
|
||
load_env_files
|
||
|
||
# Supprimer les fichiers de sortie existants (remplacer complètement)
|
||
rm -f "logrotade"/*.conf 2>/dev/null || true
|
||
|
||
# Créer le répertoire si nécessaire
|
||
mkdir -p "logrotade"
|
||
|
||
# Vérifier que SERVICES est défini
|
||
if [ -z "${SERVICES[*]:-}" ]; then
|
||
print_error "Variable SERVICES non définie dans .env"
|
||
exit 1
|
||
fi
|
||
|
||
echo "📋 Génération des configurations logrotate pour ${#SERVICES[@]} services..."
|
||
|
||
# Générer les configurations logrotate
|
||
generate_logrotate_configs
|
||
|
||
echo ""
|
||
echo "✅ GÉNÉRATION TERMINÉE !"
|
||
echo "📁 Configurations générées dans: logrotade/"
|
||
echo "🔧 Configurations logrotate pour ${#SERVICES[@]} services"
|
||
echo "📊 Services traités: ${#SERVICES[@]}"
|
||
}
|
||
|
||
# Exécuter le script principal
|
||
main "$@"
|