#!/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 "$@"