IPMI : Intelligent Platform Management Interface

L’IPMI, pour “Intelligent Platform Management Interface”, est une interface de gestion de matériel standardisée, fournie principalement sur les serveurs (Dell, IBM, HP, Intel, NEC, Supermicro, etc), indépendante du système d’exploitation, et destinée à contrôler certains composants hardware (sondes de températures, vitesses de rotation des ventilateurs, etc) et à manager la machine, localement ou à distance et quelque soit son état (éteinte ou allumée).

Parmi les fonctionnalités particulièrement prisées d’IPMI, nous comptons le « Serial Over Lan », ou « SOL », permettant d’accéder via un flux réseau, à l’affichage de la console du serveur (une sorte de redirection de la console sur le réseau).

Installation

Configuration du BIOS

Les commandes de bases de l’IPMI ne nécessitent pas de configuration particulière dans le BIOS des machines. Pour utiliser le mode « Serial Over LAN », il convient cependant de rediriger l’affichage vers le com approprié depuis le BIOS.

Sur un serveur DELL, la configuration s’effectue sous l’onglet ”Serial Communication” et devra ressembler aux paramètres de la capture d’écran ci-dessous :

Configuration de l'IPMI dans le BIOS d'un serveur DELL R510

Cette configuration est facilement adaptable à d’autres architectures.

Chargement des modules

L’utilisation d’IPMI nécessite, sous Linux, le chargement des modules « ipmi_si » (l’interface) et « ipmi_devintf » (accès au « device »).

# modprobe ipmi_si
# modprobe ipmi_devintf

Afin que ces modules soient chargés au démarrage de la machine, ajoutez les au fichier « /etc/modules » (ou « /etc/modules.autoload.d/kernel-X.Y » sous Gentoo Linux) :

# grep ipmi /etc/modules
ipmi_si
ipmi_devintf

Le module « ipmi_msghandler » sera automatiquement chargé. Ce module permet d’accéder aux messages d’entrée/sortie de l’interface IPMI.

Installation des utilitaires

Pour interagir avec l’IPMI, installez le paquet « ipmitool » via le gestionnaire de paquets de votre distribution :

# aptitude install ipmitool
...

utilisez « yum » sous Red Hat like, « emerge » sous Gentoo Linux, etc…

Commandes « ipmitool »

Une commande IPMI est structurée ainsi :

$ ipmitool [PARAMETRES CONNEXION] [COMMANDE]

où les paramètres de connexions définissent le mode de communication avec la/les machines (via le réseau ou localement).

Pour accéder à l’IPMI local d’une machine, nous utiliserons une commande du type :

$ ipmitool -I open [COMMANDE]

Sans précision des paramètres de connexion, la commande est exécutée en local, ainsi la commande précédente équivaut à :

$ ipmitool [COMMANDE]

Tandis que pour l’exploitation d’IPMI à distance, la commande ci-dessous sera utilisée.

$ ipmitool -I lanplus -H [IP CIBLE] -U [USERNAME] -a [COMMANDE]

Configuration réseau

Pour accéder à l’IPMI d’une machine via le réseau, il est nécessaire de :

  • définir ses paramètres réseau,
  • créer un utilisateur.

Configuration des paramètres réseau de la machine

Les paramètres réseaux de la machines sont affichés par la commande suivante :

$ ipmitool lan print 1
Set in Progress         : Set Complete
Auth Type Support       : NONE MD2 MD5 PASSWORD
Auth Type Enable        : Callback : MD2 MD5
                        : User     : MD2 MD5
                        : Operator : MD2 MD5
                        : Admin    : MD2 MD5
                        : OEM      :
IP Address Source       : Static Address
IP Address              : 0.0.0.0
Subnet Mask             : 0.0.0.0
MAC Address             : 00:XX:XX:XX:XX:XX
SNMP Community String   : public
IP Header               : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP      : 0.0.0.0
Default Gateway MAC     : 00:00:00:00:00:00
Backup Gateway IP       : 0.0.0.0
Backup Gateway MAC      : 00:00:00:00:00:00
802.1q VLAN ID          : Disabled
802.1q VLAN Priority    : 0
RMCP+ Cipher Suites     : 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
Cipher Suite Priv Max   : aaaaaaaaaaaaaaa
                        :     X=Cipher Suite Unused
                        :     c=CALLBACK
                        :     u=USER
                        :     o=OPERATOR
                        :     a=ADMIN
                        :     O=OEM

Déclaration de l’adresse IP

L’adresse IP peut être renseignée par différentes sources :

  • none : pas d’ip, IPMI ne sera pas utilisable via le réseau,
  • static : l’ip est fixée depuis le système,
  • dhcp : l’ip est obtenue par dhcp,
  • bios : l’ip est fixée dans le bios de la carte mère.

Dans notre cas les ip sont fixée depuis le système (paramètre « static ») :

$ ipmitool lan set 1 ipsrc static
$ ipmitool lan set 1 ipaddr X.X.X.X
Setting LAN IP Address to X.X.X.X
$ ipmitool lan set 1 netmask X.X.X.X
Setting LAN Subnet Mask to X.X.X.X
$ ipmitool lan set 1 defgw ipaddr X.X.X.X
...

Note : L’adresse IP allouée à l’interface IPMI doit être différente de celle de la machine. Voyez l’IPMI comme une machine dans la machine, cela sous entend donc une IP pour la machine, une autre pour l’IPMI. Lors d’une utilisation via le réseau, vous appellerez donc l’adresse IP IPMI.

Création d’un utilisateur

Il existe 2 statuts d’administrateurs :

  • 3 : Operator qui peut manager le serveur mais ne peut créer d’utilisateurs.
  • 4 : Administrator qui dispose de tous les droits. Ce status est nécessaire pour les accès console.

On liste les utilisateurs du canal 1 par la commande :

$ ipmitool user list 1
ID Name Callin Link Auth IPMI Msg Channel Priv Limit

La création d’un utilisateur passe par :

  • la détermination d’un id libre par la commande de listage des utilisateurs ci dessus,
  • le renseignement du nom de l’utilisateur associé à un ID libre,
  • la création du mot de passe de l’utilisateur,
  • l’affectation des privilèges.

Soit la série de commandes suivante :

$ ipmitool user list 1
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
$ ipmitool user set name 2 admin
$ ipmitool user set password 2 toto1234
$ ipmitool user priv 2 4 1 # l’utilisateur d’ID 2 a les privilèges 4 sur le canal 1
$ ipmitool user list 1
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
2 admin true false true ADMINISTRATOR

Activer / autoriser les connexions

La dernière partie de la configuration réseau d’IPMI consiste à autoriser les accès pour les utilisateurs :

$ ipmitool lan set 1 user
$ ipmitool lan set 1 access on

Commandes usuelles

Les commandes IPMI peuvent être exécutées localement ou à distance.

Lecture des informations des capteurs

« sdr » donne les informations remontées par tous les capteurs de la machine.

$ ipmitool sdr
[...]
FAN 1 RPM        | 6975 RPM          | ok
FAN 2 RPM        | 7275 RPM          | ok
FAN 3 RPM        | 6900 RPM          | ok
FAN 4 RPM        | 6900 RPM          | ok
[...]

État du châssis

Lecture des informations provenant du châssis de la machine via la commande « chassis »

$ ipmitool chassis
Chassis Commands:  status, power, identify, policy, restart_cause, poh, bootdev, bootparam, selftest
$ ipmitool chassis status
System Power         : on
Power Overload       : false
Power Interlock      : inactive
Main Power Fault     : false
Power Control Fault  : false
Power Restore Policy : always-off
...

Qui devient, pour la lecture des informations d’un serveur distant :

$ ipmitool -I lanplus -H X.X.X.X -U admin -a chassis status

Arrêt, démarrage et redémarrage de la machine

La machine peut être contrôlée depuis sont état ”éteint” jusqu’à son ”hard reset” par IPMI.

Une machine éteinte sera démarrée via IPMI par la commande :

$ ipmitool -I lanplus -H [IP CIBLE] -U [USERNAME] -a chassis power on

Cela correspond à un appuis sur le bouton « on » de la machine.

De même, une machine allumée peut être éteinte proprement par IPMI par la commande :

$ ipmitool chassis power soft
 
Broadcast message from root (ttyS1) (Thu Aug 20 15:28:24 2009):

Ou éteinte brutalement (comme si le bouton « power off » était maintenu appuyé un certain temps…) :

$ ipmitool -I lanplus -H X.X.X.X -U admin -a chassis power off

Enfin, le ”hard reset” ou redémarrage forcé est obtenu par la commande :

$ ipmitool -I lanplus -H X.X.X.X -U admin -a chassis power reset

qui redémarre brusquement la machine.

Prise en main a distance par la console

Il est possible de prendre le contrôle d’une machine à distance par le ”Serial Over LAN” (sol).

La configuration du BIOS présentée ci dessus vous donnera accès à la phase d’initialisation de la machine (chargement du BIOS jusqu’à GRUB).

Le paramétrage du noyau ci dessous assurera l’affichage des données issues du chargement du kernel (de GRUB jusqu’au chargement de l’initrd).

Enfin les paramètres systèmes (de l’inittab) présentés vous donnerons l’accès à la console système (du chargement de l’initrd jusqu’à la fenêtre de login).

Si l’un de ces affichage ne fonctionne pas, vous pouvez localiser le secteur mal configuré (ex : pas d’accès au shell de login = problème dans l’inittab, etc).

Paramétrage du kernel

GRUB (GRUB Legacy)

Dans le fichier ”/boot/grub/menu.lst”, ajouter une redirection de la console vers le COM approprié (ici com2 ttyS1) ainsi que les paramètres du port (vitesse de 115200 baud).

title Gentoo Linux (kernel 2.6.28.4-vs2.3.0.36.7)
root (hd0,0)
kernel /kernel-2.6.28.4-vs2.3.0.36.7 root=/dev/sda2 udev vga=794\
        console=tty0 console=ttyS1,115200n8

GRUB2

Sous Debian et ses dérivées, modifiez les lignes suivantes du fichier « /etc/default/grub » :

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS1,115200n8 quiet"
GRUB_TERMINAL=console

Et exécutez la commande :

$ update-grub2

Paramétrage du système

Activer la redirection vers la console et adaptez la vitesse de communication dans le fichier ”/etc/inittab”.

s1:12345:respawn:/sbin/agetty 115200 ttyS1 vt100

Se connecter au système

Depuis une machine disposant du paquet ipmitool, lancez la commande suivante :

$ ipmitool -I lanplus -H X.X.X.X -U admin -a sol activate
Password:
[SOL Session operational. Use ~? for help]
 
srv login:

Pour sortir de la console, il vous suffira de saisir la séquence : « ~. »

Remerciements : Merci à Christophe, Allan et Sergio pour avoir testé et fait évoluer cette doc.

4 réflexions au sujet de « IPMI : Intelligent Platform Management Interface »

  1. Par contre, sur mes autres serveurs qui ont de l’ipmi 2, j’ai jamais eu besoin de modifier grub. juste ipmitool et roule (enfin le bios aussi bien sur) 🙂
    (et accessoirement, c’est un peu chatif, -à mon humble et personnel avis- de configurer grub2 qui gère tout automatiquement, alors qu’avec grub1, edition du menu.lst et c’était plié 🙂 )
    faudrait que j’essaye ça sur le R200 pour voir si ça change quelque chose, car tournant sous lenny, donc grub1 facilement modifiable.
    bref, à méditer… 😉

  2. yep, j’ai tout configuré comme dab’ : bios, puis ipmitool pour l’adresse ip, netmask, gateway, access on, user et password
    ainsi que l’inittab pour avoir un getty écoutant sur ttyS1
    d’habitude la vitesse est sur 57600 ou 115200 et si la vitesse n’est pas la bonne, ça donne un truc incompréhensible, donc ça se règle vite 🙂

    mais sur le R200, c’est de l’ipmi 1.5
    donc pas de probleme pour faire un power cycle, avoir l’état du chassis, les temperataures, tensions, ventilos, toussa… mais pas moyen d’activer le SOL.
    ipmitool rale car indique que lanplus doit être utilisé avec du 2.0 seulement.
    et avec les parametres tsol ou isol, rien.

    d’apres ce que je peux trouver sur les sites de dell, faut utiliser un soft propre à dell « SOL proxy », mais c’est pas franchement clair.
    j’avais essayé une fois d’installer leur suite d’outils osa*machin-truc, mais à part avoir accès à un clickodrome particulièrement gourmand en ressource (en gros ce que t’as en accedant en http à l’idrac) et des pertes de réseau aléatoires, pas de sol. donc exit 😀

  3. salut
    j’utilise aussi l’ipmi sur mes serveurs.
    le SOL, c’est que du bonheur 🙂
    par contre, j’ai un dell R200 (sous lenny) ou il y a de l’IPMI 1.5, j’ai jamais réussi à faire marcher le sol dessus 🙁
    normalement, lanplus est reservé pour le 2.0
    avec le 1.5 faut apparemment pas mal bricoler, en fonction de ce que le constructeur a implémenté… avec les fonctions tsol/isol de ipmitool, pas moyen 🙁
    une solution ?
    merci 🙂

    1. Salut Dju, j’ai pas de R200… 🙁 mais ça bloque où au juste ? t’as le BIOS ou rien de chez rien ? Tu redirige vers quel COM et à quelle vitesse ? (j’imagine que t’as testé tous ça, mais bon…)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *