Files
iDRAC_fan_controller/proxmox/idrac-fan-controller.sh
Benoit ae017a2833 🚀 Ajout version Proxmox autonome et mise à jour URLs repository
 NOUVELLE VERSION PROXMOX AUTONOME :
- Script d'installation totalement autonome pour Proxmox VE
- Création automatique du container LXC Ubuntu 22.04
- Configuration hardware et IPMI automatisée
- Interface utilisateur avec ASCII art et couleurs
- Compatible avec le pattern community-scripts

🛠️ FONCTIONNALITÉS AVANCÉES :
- Outils d'administration intégrés (idrac-setup, idrac-status, etc.)
- Scripts helpers avec interface colorée
- Healthcheck et monitoring automatiques
- Configuration par défaut optimisée pour Dell
- Gestion des erreurs et diagnostics

📱 INTERFACE UTILISATEUR :
- Menu de configuration avancée
- Rapport d'installation détaillé
- Instructions post-installation contextuelles
- Scripts d'aide intégrés au container

🔗 MISE À JOUR REPOSITORY :
- Toutes les URLs mises à jour avec git.benoitsz.com
- Documentation cohérente sur toutes les versions
- Liens Gitea pour issues et support

📚 DOCUMENTATION COMPLÈTE :
- README-PROXMOX.md avec guide détaillé
- Comparaison des 3 versions (Docker, LXC, Proxmox)
- Instructions d'installation ultra-rapide
- Guide de dépannage spécialisé

 INSTALLATION EN 1 COMMANDE :
bash -c "$(wget -qLO - https://git.benoitsz.com/benoit/iDRAC_fan_controller/raw/branch/main/proxmox/idrac-fan-controller.sh)"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 11:04:36 +02:00

243 lines
7.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Proxmox VE LXC Container Creation Script for Dell iDRAC Fan Controller
# Compatible with Proxmox community-scripts pattern
# Usage: bash -c "$(wget -qLO - https://git.benoitsz.com/benoit/iDRAC_fan_controller/raw/branch/main/proxmox/idrac-fan-controller.sh)"
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Application Information
APP="Dell-iDRAC-Fan-Controller"
var_tags="dell;idrac;fan;cooling;server"
var_cpu="1"
var_ram="512"
var_disk="4"
var_os="ubuntu"
var_version="22.04"
var_unprivileged="0" # Privileged container required for IPMI access
# Function to display header with ASCII art
function header_info {
clear
cat <<"EOF"
____ ____ ___ ______ ______
/ _/ ____/ __ \ / | / ____/ / ____/___ _____
/ / / __ / /_/ / / /| | / / / /_ / __ `/ __ \
_/ / / /_/ / _, _/ / ___ |/ /___ / __/ / /_/ / / / /
/___/ \__,_/_/ |_| /_/ |_|\____/ /_/ \__,_/_/ /_/
____ __ ____
/ __ \____ ____/ /__________ / / /__ _____
/ / / / __ \/ __ / / ___/ __ \/ / / _ \/ ___/
/ /_/ / /_/ / /_/ / / / / /_/ / / / __/ /
\____/\____/\__,_/_/_/ \____/_/_/\___/_/
EOF
echo -e "\n ${APP} - Container LXC pour Proxmox VE"
echo -e " Contrôle dynamique des ventilateurs Dell via iDRAC\n"
}
# Override default variables function
function default_settings() {
clear
header_info
echo -e "${BL}Utilisation des paramètres par défaut pour ${APP}.${CL}"
echo -e "${DGN}Container Type: ${BGN}Privileged${CL}"
echo -e "${DGN}CPU: ${BGN}$var_cpu${CL}"
echo -e "${DGN}RAM: ${BGN}$var_ram MB${CL}"
echo -e "${DGN}Stockage: ${BGN}$var_disk GB${CL}"
echo -e "${DGN}OS: ${BGN}Ubuntu $var_version${CL}"
echo -e "${BL}Création du container...${CL}"
}
# Application installation function
function install_application() {
header_info
echo "Installation de Dell iDRAC Fan Controller dans le container..."
# Update container and install dependencies
$STD apt-get update
$STD apt-get upgrade -y
$STD apt-get install -y \
curl \
wget \
ipmitool \
systemd \
nano \
htop \
ca-certificates
# Create application directory
mkdir -p /opt/idrac-fan-controller/{config,logs}
# Download application files
cd /tmp
wget -O idrac-controller.tar.gz "https://git.benoitsz.com/benoit/iDRAC_fan_controller/archive/main.tar.gz" 2>/dev/null || {
echo "Erreur: Impossible de télécharger les fichiers depuis le repository"
exit 1
}
tar -xzf idrac-controller.tar.gz
cd iDRAC_fan_controller
# Install application files
cp Dell_iDRAC_fan_controller.sh /opt/idrac-fan-controller/
cp functions.sh /opt/idrac-fan-controller/
cp healthcheck.sh /opt/idrac-fan-controller/
cp lxc/idrac-fan-controller.service /etc/systemd/system/
# Make scripts executable
chmod +x /opt/idrac-fan-controller/*.sh
# Create default configuration
cat > /opt/idrac-fan-controller/config/environment << 'EOL'
# Configuration Dell iDRAC Fan Controller
# Modifiez ces valeurs selon votre environnement
# Connexion iDRAC
IDRAC_HOST=local
IDRAC_USERNAME=root
IDRAC_PASSWORD=calvin
# Seuils de température (°C)
CPU_TEMPERATURE_1=30
CPU_TEMPERATURE_2=40
CPU_TEMPERATURE_3=50
CPU_TEMPERATURE_4=60
# Vitesses des ventilateurs (%)
FAN_SPEED_1=10
FAN_SPEED_2=30
FAN_SPEED_3=60
FAN_SPEED_4=80
# Seuil de sécurité
CPU_TEMPERATURE_THRESHOLD=70
# Intervalles et options
CHECK_INTERVAL=60
DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE=false
EOL
# Enable and configure systemd service
systemctl daemon-reload
systemctl enable idrac-fan-controller.service
# Create helper scripts
wget -O /tmp/container-helpers.sh "https://git.benoitsz.com/benoit/iDRAC_fan_controller/raw/branch/main/proxmox/container-helpers.sh" 2>/dev/null
if [ -f /tmp/container-helpers.sh ]; then
source /tmp/container-helpers.sh
create_idrac_setup
create_idrac_status
create_idrac_logs
create_idrac_config
rm /tmp/container-helpers.sh
else
# Fallback basic setup script
cat > /usr/local/bin/idrac-setup << 'EOL'
#!/bin/bash
echo "=== Dell iDRAC Fan Controller Setup ==="
echo "1. Configuration: nano /opt/idrac-fan-controller/config/environment"
echo "2. Démarrage: systemctl start idrac-fan-controller"
echo "3. Statut: systemctl status idrac-fan-controller"
echo "4. Logs: journalctl -u idrac-fan-controller -f"
echo "5. Test: /opt/idrac-fan-controller/healthcheck.sh"
EOL
chmod +x /usr/local/bin/idrac-setup
fi
# Cleanup
cd /
rm -rf /tmp/idrac-controller.tar.gz /tmp/iDRAC_fan_controller
# Set container description
pct set $CTID -description "Dell iDRAC Fan Controller
Contrôleur dynamique des ventilateurs Dell via iDRAC avec 4 seuils configurables.
Configuration: /opt/idrac-fan-controller/config/environment
Logs: journalctl -u idrac-fan-controller -f
Setup: idrac-setup
⚠️ Container PRIVILÉGIÉ requis pour accès IPMI"
}
# Post-installation setup
function post_installation() {
header_info
echo -e "${GN}Installation de ${APP} terminée avec succès!${CL}"
echo
echo -e "${BL}Configuration du container:${CL}"
echo -e "Container ID: ${GN}$CTID${CL}"
echo -e "Hostname: ${GN}$NSAPP${CL}"
echo -e "Type: ${YW}Privileged${CL} ${DGN}(requis pour IPMI)${CL}"
echo -e "OS: ${GN}Ubuntu $var_version${CL}"
echo
echo -e "${BL}Prochaines étapes:${CL}"
echo -e "${DGN}1. Connectez-vous au container:${CL} pct enter $CTID"
echo -e "${DGN}2. Lancez la configuration:${CL} idrac-setup"
echo -e "${DGN}3. Éditez la config:${CL} nano /opt/idrac-fan-controller/config/environment"
echo -e "${DGN}4. Démarrez le service:${CL} systemctl start idrac-fan-controller"
echo
echo -e "${YW}⚠️ Important: Configurez l'accès IPMI dans Proxmox:${CL}"
echo -e "${DGN} - Pour iDRAC local: ajoutez l'accès aux périphériques IPMI${CL}"
echo -e "${DGN} - Pour iDRAC distant: configurez l'IP dans environment${CL}"
echo
}
# Variables and setup
variables
color
catch_errors
# Application installation
function start() {
if command -v pveversion >/dev/null 2>&1; then
if ! (whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC Container" --yesno "Créer un nouveau container LXC ${APP}?" 10 58); then
clear
exit
fi
install_script
else
echo -e "${RD}Ce script doit être exécuté depuis un node Proxmox VE.${CL}"
exit 1
fi
}
# Main application function
function update_script() {
header_info
echo -e "\\n ⚡ Mise à jour de ${APP} Container\\n"
NODE=$(hostname)
pct list | tail -n +2 | cut -f1 -d' ' | while read container; do
OSTYPE=$(pct config $container | grep "^ostype:" | cut -d' ' -f2)
if [ "$OSTYPE" = "ubuntu" ]; then
echo -e "${BL}[Info]${GN} Mise à jour du container $container ${CL} \\n"
pct exec $container -- bash -c "
apt update && apt upgrade -y &&
systemctl restart idrac-fan-controller 2>/dev/null ||
echo 'Service non trouvé dans ce container'
"
echo -e "${BL}[Info]${GN} ✅ Container $container mis à jour ${CL} \\n"
fi
done
}
# Build the container
start
build_container
description
# Install application
echo -e " ${CHECKMARK} ${GN}Container LXC créé avec succès${CL}"
echo -e " ${CHECKMARK} ${GN}Installation de ${APP}...${CL}"
# Execute installation in container
pct exec $CTID -- bash -c "$(declare -f install_application); install_application" || {
echo -e " ${CROSS} ${RD}Erreur lors de l'installation${CL}"
exit 1
}
# Post-installation
post_installation