✨ 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>
243 lines
7.9 KiB
Bash
Executable File
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 |