- Introduction du système de templates avec séparation templates/storage - Scripts de génération automatisée pour toutes les configurations - Résolution multi-passes des variables imbriquées - API simplifiée qui lit uniquement storage/ (plus de traitement de variables) - Documentation complète du nouveau système - Support des services externes (BOOTSTRAP, LECOFFRE_BACK_MINI) - Protection des templates sources et isolation des environnements
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 "$@"
|