Ajout version LXC et restructuration complète du projet
🚀 NOUVELLES FONCTIONNALITÉS : - Version LXC complète pour Proxmox avec installation automatisée - Script d'installation LXC avec interface colorée et vérifications - Service systemd avec configuration sécurisée - Script de désinstallation avec sauvegarde de config 📁 RESTRUCTURATION : - Séparation Docker/LXC dans des dossiers dédiés - Documentation spécialisée pour chaque version - Guide d'installation unifié (INSTALL.md) - README principal avec comparaison des versions 🐳 AMÉLIORATIONS DOCKER : - docker-compose.yml optimisé avec healthcheck - Documentation Docker détaillée - Configuration par variables d'environnement clarifiée 📦 FONCTIONNALITÉS LXC : - Installation en une commande - Intégration systemd native - Gestion des permissions et sécurité - Logs intégrés avec journalctl - Configuration via fichier d'environnement 🔧 OUTILS INCLUS : - Scripts d'installation/désinstallation - Healthchecks pour les deux versions - Documentation de dépannage - Comparatif des deux approches 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
125
lxc/install-lxc.sh
Executable file
125
lxc/install-lxc.sh
Executable file
@@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script d'installation du contrôleur de ventilateurs Dell iDRAC pour LXC/Proxmox
|
||||
# Usage: ./install-lxc.sh
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Couleurs pour l'affichage
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
INSTALL_DIR="/opt/idrac-fan-controller"
|
||||
SERVICE_NAME="idrac-fan-controller"
|
||||
CONFIG_FILE="$INSTALL_DIR/config/environment"
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
echo -e "${BLUE}=== Installation du contrôleur de ventilateurs Dell iDRAC ===${NC}"
|
||||
echo
|
||||
|
||||
# Vérifier les privilèges root
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo -e "${RED}Erreur: Ce script doit être exécuté en tant que root${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Vérifier si on est dans un container LXC
|
||||
if ! systemd-detect-virt --container >/dev/null 2>&1; then
|
||||
echo -e "${YELLOW}Attention: Ce script est conçu pour un container LXC Proxmox${NC}"
|
||||
read -p "Continuer quand même ? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}1. Mise à jour du système...${NC}"
|
||||
apt-get update -qq
|
||||
|
||||
echo -e "${BLUE}2. Installation des dépendances...${NC}"
|
||||
apt-get install -y ipmitool
|
||||
|
||||
echo -e "${BLUE}3. Vérification de l'accès IPMI...${NC}"
|
||||
if [ ! -e "/dev/ipmi0" ] && [ ! -e "/dev/ipmi/0" ] && [ ! -e "/dev/ipmidev/0" ]; then
|
||||
echo -e "${YELLOW}Attention: Aucun périphérique IPMI détecté${NC}"
|
||||
echo -e "${YELLOW}Assurez-vous que le container LXC est configuré avec l'accès au hardware IPMI${NC}"
|
||||
echo -e "${YELLOW}Configuration Proxmox requise:${NC}"
|
||||
echo -e "${YELLOW} - Container privilégié (privilege: 1)${NC}"
|
||||
echo -e "${YELLOW} - Accès au périphérique IPMI configuré${NC}"
|
||||
echo
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}4. Création de la structure de répertoires...${NC}"
|
||||
mkdir -p "$INSTALL_DIR/config"
|
||||
mkdir -p "/var/log/$SERVICE_NAME"
|
||||
|
||||
echo -e "${BLUE}5. Copie des fichiers de l'application...${NC}"
|
||||
cp "$SCRIPT_DIR/../Dell_iDRAC_fan_controller.sh" "$INSTALL_DIR/"
|
||||
cp "$SCRIPT_DIR/../functions.sh" "$INSTALL_DIR/"
|
||||
cp "$SCRIPT_DIR/../healthcheck.sh" "$INSTALL_DIR/"
|
||||
cp "$SCRIPT_DIR/idrac-fan-controller.service" "/etc/systemd/system/"
|
||||
|
||||
# Rendre les scripts exécutables
|
||||
chmod +x "$INSTALL_DIR"/*.sh
|
||||
|
||||
echo -e "${BLUE}6. Configuration des variables d'environnement...${NC}"
|
||||
if [ ! -f "$CONFIG_FILE" ]; then
|
||||
cat > "$CONFIG_FILE" << 'EOF'
|
||||
# Configuration du contrôleur de ventilateurs Dell iDRAC
|
||||
# Modifiez ces valeurs selon votre environnement
|
||||
|
||||
# Connexion iDRAC
|
||||
IDRAC_HOST=local
|
||||
IDRAC_USERNAME=root
|
||||
IDRAC_PASSWORD=calvin
|
||||
|
||||
# Contrôle dynamique des ventilateurs
|
||||
CPU_TEMPERATURE_1=30
|
||||
CPU_TEMPERATURE_2=40
|
||||
CPU_TEMPERATURE_3=50
|
||||
CPU_TEMPERATURE_4=60
|
||||
FAN_SPEED_1=10
|
||||
FAN_SPEED_2=30
|
||||
FAN_SPEED_3=60
|
||||
FAN_SPEED_4=80
|
||||
|
||||
# Seuil de sécurité
|
||||
CPU_TEMPERATURE_THRESHOLD=70
|
||||
|
||||
# Autres paramètres
|
||||
CHECK_INTERVAL=60
|
||||
DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE=false
|
||||
EOF
|
||||
echo -e "${GREEN}Fichier de configuration créé: $CONFIG_FILE${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}Fichier de configuration existant conservé: $CONFIG_FILE${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${BLUE}7. Configuration du service systemd...${NC}"
|
||||
systemctl daemon-reload
|
||||
systemctl enable "$SERVICE_NAME"
|
||||
|
||||
echo -e "${GREEN}=== Installation terminée avec succès ! ===${NC}"
|
||||
echo
|
||||
echo -e "${BLUE}Prochaines étapes:${NC}"
|
||||
echo "1. Éditez la configuration: nano $CONFIG_FILE"
|
||||
echo "2. Démarrez le service: systemctl start $SERVICE_NAME"
|
||||
echo "3. Vérifiez le statut: systemctl status $SERVICE_NAME"
|
||||
echo "4. Consultez les logs: journalctl -u $SERVICE_NAME -f"
|
||||
echo
|
||||
echo -e "${BLUE}Commandes utiles:${NC}"
|
||||
echo "• Démarrer: systemctl start $SERVICE_NAME"
|
||||
echo "• Arrêter: systemctl stop $SERVICE_NAME"
|
||||
echo "• Redémarrer: systemctl restart $SERVICE_NAME"
|
||||
echo "• Statut: systemctl status $SERVICE_NAME"
|
||||
echo "• Logs: journalctl -u $SERVICE_NAME -f"
|
||||
echo "• Test: $INSTALL_DIR/healthcheck.sh"
|
||||
echo
|
||||
echo -e "${YELLOW}N'oubliez pas de configurer votre container LXC Proxmox avec:${NC}"
|
||||
echo "• pct set <VMID> -privilege 1"
|
||||
echo "• pct set <VMID> -features nesting=1"
|
||||
echo "• Configuration de l'accès IPMI selon votre setup"
|
||||
Reference in New Issue
Block a user