4NK_vault/storage/dev/generate_logrotate_configs.sh
4NK Dev 4834c40503 ci: docker_tag=dev-test
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
2025-10-03 17:13:19 +00:00

103 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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