Remote control voor servers
- July 26, 2019
- 0
Via een ingebouwde baseboard management controller of bmc beheer je vanop afstand beeldscherm, muis en toetsenbord van een server. Zo pas je BIOS-instellingen aan of reset je de server als het OS niet meer reageert. Meestal doe je dat via de web interface, maar dankzij IPMI kan dat ook via de commandline.
Elke fabrikant heeft zijn eigen hard- en software voor bmc-functionaliteit, bijvoorbeeld HP iLO, Dell iDRAC of IBM IMM. De precieze features verschillen uiteraard, maar een aantal basisfuncties vind je in elke bmc terug. Denk maar aan een remote console openen (beeldscherm/toetsenbord/muis overnemen vanuit je browser), de server herstarten of temperatuurgegevens en stroomverbruik van verschillende componenten uitlezen. Onderliggend gebruiken al die systemen dezelfde standaard, namelijk Intelligent Platform Management Interface of IPMI. Voor sommige taken is een web interface toch nog wat omslachtig. Even een vastgelopen server resetten? Dan moet je je browser openen, inloggen, naar de juiste pagina navigeren, op de reset-knop klikken en dat nog eens bevestigen. Gelukkig bestaat er ook een commandline tool om IPMI-commando’s te versturen: ipmitool.
Ipmitool
De basissyntax van ipmitool is erg eenvoudig:
$ ipmitool -I lanplus -H <ip-adres> -U <gebruiker> -P <wachtwoord> <commando>
De drie noodzakelijke gegevens zijn dus het ip-adres, de gebruiker en het wachtwoord van de bmc. Als je de -P-optie niet meegeeft, vraagt ipmitool je bij elk commando om het wachtwoord in te voeren. Dat is minder handig, maar wel veiliger dan -P te gebruiken. Met die optie verschijnt het wachtwoord immers in leesbare tekst in de commandogeschiedenis van je shell of in de output van ps. Een veilig én gebruiksvriendelijk alternatief is om het wachtwoord in een bestand op te slaan dat alleen jijzelf kan lezen. Vervolgens geef je met de optie -f <bestand> aan waar ipmitool het wachtwoord kan vinden.
Commando’s
Voer nu eerst ipmitool uit zónder extra commando om de verbinding met de bmc te testen. Krijg je de foutmelding “No commands provided” te zien met een lijst van beschikbare commando’s? Dan zijn de logingegevens correct en kan je aan de slag! We sommen hier kort enkele van de meest gangbare commando’s op:
– chassis status: toont of de server ingeschakeld is of niet en of er fouten zijn met de stroomvoorzienining, koeling of schijven.
– power status: toont of de server ingeschakeld is of niet.
– power on / off / cycle / reset: schakelt de server in / uit / uit en weer in / voert een hard reset uit (nuttig als het OS vasthangt).
– sol activate: opent de seriële console van de server. Dat is erg handig om aan te loggen op je server als je door een foutieve firewall- of netwerkconfiguratie jezelf hebt buitengesloten. Via Serial-Over-LAN geraak je alsnog in het systeem om het probleem op te lossen. Gebruik de toetsencombinatie ~. om de sessie af te sluiten. Mogelijk moet je nog op enter drukken na het openen van de sessie om een login-prompt te zien. De seriële console moet ook geactiveerd zijn in het OS om deze functie te kunnen gebruiken. Voor FreeNAS vind je dat bijvoorbeeld terug onder “Systeem” > “Geavanceerd” > “Seriële console gebruiken”.
Je ziet dat commando’s steeds een subcommando verwachten, zoals “chassis status”. De beschikbare subcommando’s vraag je op via de help-functie, bijvoorbeeld “chassis help”. Er is ook een help-functie voor specifieke subcommando’s, bijvoorbeeld “chassis bootparam help”.