WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:divers:coin_geek:ipmi

Gérer/Superviser un serveur avec l'IPMI

L'IPMI qu'est ce que c'est ?

L'IPMI ou Intelligent Platform Management Interface est un ensemble de spécifications permettant de gérer et de superviser un système (souvent à distance) indépendamment de l'OS ou du firmware (BIOS/UEFI) de ce dernier. En gros cela permet de garder un accès sur une machine même si son OS ou son firmware est planté et cela même si elle est éteinte. Les seul prérequis pour utiliser l'IPMI sont les suivant:

  • La machine doit être alimentée (pas forcément allumée).
  • La machine doit être connectée à un réseau.
  • Le BMC doit être activé et configuré pour se connecter à ce réseau.

BMC ?

BMC ou Baseboard Management Controler est un microcontrôleur présent sur une grande majorité des serveurs de marque Dell, Tyan, HP, etc… Ce microcontrôleur est relié à différents capteurs sur la machine, et comporte une interface série RS-232 et d'un IPMB ou Intelligent Platform Management Bus permettant de traiter les requêtes IPMI notamment par le réseau. Ça commence à devenir plus clair ? On utilise l'IPMI pour communiquer sur le réseau avec le BMC qui peut soit nous renvoyer l'état des capteurs (supervision) soit nous donner une connexion en série à la machine (gestion).

L'intérêt de l'IPMI

Certains diront: “Pour gérer les machines on a déjà le SSH et pour le monitoring on a Zabbix”.

  • Le SSH dépend de l'OS. Donc OS pas démarré/planté, conf réseau foireuse, iptable -P INPUT DROP ⇒ Pas de SSH !
  • Zabbix aussi dépend de l'OS.

Le but n'est pas de remplacer le serveur SSH ou l'agent Zabbix, mais de compléter les possibilités de gestion et de supervision à distance.

Donc vous l'aurez compris, utiliser l'IPMI avec le BMC nous permet de gérer et de superviser la machine quelque soit son état.

Un autre avantage est qu'on n'a plus besoin de rester des heures en salle serveur pour configurer une machine et ainsi éviter que ce genre de perle se reproduise:

  • Août 2016

Un lendemain de panne de climatisation critique en salle serveur, Florian a passé la clim en mode ventilation en voulant désactiver le mode “flap” parce celle-ci lui soufflait dans la nuque.

Tuto: utiliser l'IPMI via le BMC

Dans cette partie nous allons voir comment utiliser l'IPMI grâce à un exemple réalisé sur un serveur HP Proliant DL180 Gen 6. La procédure est quasiment identique sur les serveurs d'autres marques, la seul différence est la manière d’accéder à la configuration du BMC.

Configuration de l'IPMI

Pour les serveurs HP Proliant Gen6 la configuration du BMC se fait via le menu de configuration du BIOS de la machine (Touche F10).

Pour les serveurs Dell PowerEdge Gen9 (1950, 2950, etc.) la configuration du BMC se fait en entrant la combinaison Ctrl+E au démarrage.

Exemple

Pour configurer l'IPMI sur un serveur HP il faut dans un premier temps aller dans le menu de configuration du BIOS. Puis dans AdvancedIPMI ConfigurationSet LAN configuration.

Cf.: le GIF ci-dessous (cliquez sur l'image pour avoir une version plus lisible):

Une fois qu'on a atteint le menu de configuration de l'IPMI, il suffit juste de lui indiquer la configuration du réseau (statique ou DHCP), les autres paramètres peuvent être laissé avec leur valeur par défaut.

Le BMC ne gère pas nécessairement le dot1.q. C'était le cas sur un dell poweredge 2950 et un hp proliant180G6, les ports doivent être en access dans le vlan nécessaire et non en trunk.

Ici j'ai choisi une configuration avec IP statique: Je configure donc le BMC avec :

  • Adresse IP = 192.168.150.254
  • Masque de sous réseau = 255.255.255.0
  • Passerelle par défaut = 192.168.150.2

J'ai également choisi de désactiver le telnet.

Le paramètre BMC NIC Allocation = Shared permet au BMC d'utiliser un port réseau physique pour l'IPMI en sans bloquer son utilisation normale (Deux interfaces virtuelles sont crées sur une interface physique: une pour le BMC et une pour le CPU).

Une fois que tout cela est configuré on peut faire F10 pour quitter le menu de configuration du BIOS et sauvegarder les changements.

Testons

Les outils

Maintenant que nous avons configuré le BMC on va tester si tout marche. Il faut d'abord installer ipmitool sur la machine qui va se connecter sur le serveur. Il existe d'autres outils pour faire des requêtes IPMI, l'avantage avec IPMItool c'est qui est disponible dans les dépôts Debian/Ubuntu/Arch. Il y a IPMIutil qui est disponible en version binaire pour Linux/Unix et les sous-OS (Windows).

Notez qu'il est possible d'installer IPMItool ou IPMIutil directement sur le serveur pour une utilisation en local sans passer par le réseau.

Première requête IPMI

Mettez vous sur le même réseau que le BMC. Et exécutez la commande:

$ ipmitool -U 'nom_utilisateur' -I lanplus -H 'ip_ou_hostname' chassis status

En suivant notre exemple:

$ ipmitool -U 'admin' -I lanplus -H '192.168.150.254' chassis status

Saisissez ensuite le mot de passe correspondant au nom d'utilisateur utilisé.

Par défaut sur les serveurs HP les identifiants sont:

  • login: admin
  • mdp: admin

Sur les serveurs DELL:

  • login: root
  • mdp: calvin #WHAAAAAT ?

Il est évident qui si on souhaite vraiment utiliser l'IPMI il faudra changer ces identifiants.

On doit recevoir quelque chose comme ça:

System Power         : on
Power Overload       : false
Power Interlock      : inactive
Main Power Fault     : false
Power Control Fault  : false
Power Restore Policy : previous
Last Power Event     : 
Chassis Intrusion    : inactive
Front-Panel Lockout  : inactive
Drive Fault          : false
Cooling/Fan Fault    : false
Sleep Button Disable : allowed
Diag Button Disable  : allowed
Reset Button Disable : allowed
Power Button Disable : allowed
Sleep Button Disabled: false
Diag Button Disabled : false
Reset Button Disabled: false
Power Button Disabled: false

Si ce n'est pas le cas c'est qu'il y a un problème de configuration quelque part.

Gestion du serveur

Maintenant qu'on à configuré le BMC et que ce dernier accepte les requêtes IPMI il est temps d'apprendre à faire quelques requêtes utiles afin de gérer le serveur.

On commence par ouvrir un shell IPMI sur le serveur:

$ ipmitool -U 'admin' -I lanplus -H 192.168.150.254  shell

On obtient alors un prompt qui nous permet d'envoyer des requêtes IPMI au serveur

Allumer et éteindre la machine

La commande suivante nous permet de déterminer si la machine est allumée ou non:

ipmitool> chassis power status

Allumer la machine:

ipmitool> chassis power on

Éteindre la machine:

ipmitool> chassis power off

Redémarrer la machine:

ipmitool> chassis power reset

Changer l'ordre de boot

Booter sur le disque principal:

ipmitool> chassis bootdev disk

Booter sur le PXE:

ipmitool> chassis bootdev pxe

Booter sur le menu de configuration du BIOS:

ipmitool> chassis bootdev bios

Reconfigurer le réseau sur le BMC

Attention ! Vous risquez de vous couper les pattes.

Afficher la conf réseau:

ipmitool> lan print

Modifier la conf réseau: La commande suivante permet de voir les différentes commandes pouvant être utilisée pour la configuration réseau:

ipmitool> lan set 

Par exemple:

ipmitool> lan set ipaddr 192.168.150.123

Permet de changer l'IP assignée au BMC.

Gestion des utilisateurs

Lister les comptes utilisateurs:

ipmitool> user list

Ce qui nous donne des “user id”.

Ensuite, pour changer par exemple le mot de passe de l'utilisateur avec l'id 3 on fait

ipmitool> user set password 3

Serial On Lan

Le SOL ou Serial On Lan permet comme son nom l'indique de rediriger un port série sur le réseau. Vous le savez peut-être déjà mais il est possible de demander au firmware d'une machine d'être redirigée vers un port série. Avec le SOL il est donc possible d'accéder au menu de configuration du BIOS/UEFI de la machine et de ses cartes d’extension (carte SAS/RAID, carte réseau) grâce à une connexion série sur le réseau.

La connexion série doit être configurée à plusieurs endroits différents: Firmware/Bootloader/OS. Lorsque cela est fait il est donc possible d'avoir un accès au menu de configuration du BIOS, au menu GRUB (ou Syslinux) et d'obtenir un TTY sur l'OS et tout ça à distance.

Configuration du BIOS

Les BIOS/UEFI changent d'une machine à l'autre, il n'y a donc pas de méthode unique pour activer la redirection série. Il faut généralement chercher une option qui ressemble à Console Redirection, COM Port Redirection, Serial Console, BIOS Redirection, etc. et s'assurer que cette option est activée.

Sur le serveur HP utilisé en exemple ici, il n'y a pas eu de modification à faire, la redirection se faisait automatiquement lorsque l'IPMI était activé.

Sur les serveurs DELL de 9ème génération il faut activer la redirection du BIOS sur le port COM2 (c'est celui qui est relié au BMC), le port COM1 est celui qui se trouve à l'arrière de la machine.

Confiuration du Bootloader et du Kernel
  • Pour activer la redirection console avec GRUB 2 il faut ouvrir le fichier “/etc/default/grub

Et modifier les variables suivantes avec les bonnes valeurs:

GRUB_TERMINAL_INPUT="console serial"
GRUB_TERMINAL_OUTPUT="console serial"
GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1" 
  • Pour activer la redirection console au niveau du noyau Linux il faut lui passer les paramètres suivant:
 console=ttyS0,9600 console=tty0 

Lorsqu'on utilise GRUB2 on peut modifier /etc/default/grub de la façon suivante:

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,9600 console=tty0"

Ensuite on fait un

# update-grub2

OU

# grub-mkconfig -o /boot/grub/grub.cfg
Activer un TTY sur le port série (méthode crade et rapide)
  • Installer fgetty
 # apt-get install fgetty 
  • Démarrer le TTY au démarrage en modifiant “/etc/rc.local

Il faut ajouter la ligne suivante avant le “exit 0”

fgetty /dev/ttyS0 &

TODO: Méthode propre et rapide.

Ça y on peut enfin retourner à notre shell IPMI et lancer

ipmitool> sol deactivate
ipmitool> sol activate

NB: On fait un “sol deactivate” afin de fermer une éventuelle session SOL qui serait restée ouverte ailleurs

Et rebooter le serveur afin de voir si toutes les redirections vers le port série fonctionnent correctement.

Monitoring du serveur

Le BMC permet aussi de superviser certains composant du serveur: les alimentations, la température à différents endroits, la ventilation. Il est également possible de voir le SEL ou System Event Log.

Les commandes utiles:

Lister les entrée dans le SEL:

ipmitool> sel list

Afficher l'état des différents capteurs:

ipmitool> sensor

RTFM

$ man ipmitool 
ipmitool> help 
ipmitool> une_commande help 
ipmitool> une_commande un_argument help 

PDF de DELL sur le BMC Un autre PDF de DELL Encore un autre

Limites du BMC

Le BMC connait quelques limites:

  • Il est possible de faire uniquement du Serial On Lan: on ne fait passer alors que des informations en mode texte
  • L'utilisation du SOL nous force à modifier l'OS pour avoir un accès à celui-ci (notez qu'il existe une version de Debian installable via port série sur le PXE)
  • En général le BMC est très basique, pas de iKVM, pas de lecteur virtuel.

iKVM ? Lecteur virtuel ?

En fait il existe des sortes de “Super BMC” capables de fournir les mêmes fonctionnalité qu'un BMC classique mais qui en plus permettent de faire du iKVM (Keyboard, Vidéo, Mouse) et de l'émulation de CDROM. Le iKVM permet d'avoir une véritable sortie vidéo sur le réseau et l'émulation de CDROM permet par exemple d'installer un OS sur un serveur à partir d'un ISO qui se trouve sur votre PC. Tout ça dans une belle interface Web ou un client (en Java ou en .NET).

Ces “Super BMC” sont souvent connu sous le nom de (i)DRAC pour DELL, iLO pour HP, RSA pour IBM, etc. Ces cartes sont optionnelles sur les serveurs et utilisent des technos propriétaires. Actuellement on a quelques serveurs DELL avec des cartes iDRAC: les 2 NAS et 3 nœuds de prod sur 4 sont pourvus de cette carte (et peut être l'IDS et le parefeu, mais j'ai la flemme d'aller voir).

wiki/divers/coin_geek/ipmi.txt · Dernière modification: 2020/06/27 18:16 (modification externe)