Questa settimana ho tirato fuori la soluzione ad un problema che spesso affronto…e che mi fa sempre perdere parecchio tempo.

Si tratta dello Shutdown su Server VMWARE (ESX o ESXi), non mi addentrerò su quale UPS, in quanto è assolutamente indifferente, ciò che spiego sono le operazioni da eseguire per permettere lo Shutdown tanto dei Guest quanto del server VMWARE stesso.

Il tutto può essere fatto sia da una macchina virtuale all’interno dello stesso server VMWARE, sia da una macchina esterna, unica cosa fondamentale è la ricezione del segnare di Shutdown da parte della macchina che dovrà lanciare i comandi di Shutdown, questo può avvenire sia per collegamento diretto con l’UPS (seriale / USB /Network), sia per segnale ricevuto da macchina collegata all’UPS.

la cosa che appare strana, è che lo shutdown possa essere eseguito anche da una macchina all’interno del VMWARE stesso, in realtà è estremamente semplice, in quanto il comando di Shutdown avviene eseguendo uno script nello stesso server, ed una volta lanciato la procedura continua anche se la macchina che l’ha eseguita si spegne, quindi, di fatto il guest può eseguire il comando di shutdown che farà spegnere anche se stesso.

Ma vediamo come avviene tutto questo,

è necessario creare il file di script all’interno del Server virtuale (provato con VMWARE ESXi 4.1) è fondamentale crearlo all’interno di uno dei Datastore, in altri percorso della macchina verrebbe cancellato al riavvio stesso del server.
altro aspetto fondamentale è abilitare il server all’accesso remoto in SSH, con la versione 4.1 si fà direttamente dalla pagina di configurazione di Vmware, con le precedenti versioni esisteva una procedura.

Fatto questo create un file, (Shutdown.sh ad esempio) e inserite quanto riporto

=================

DATE=`date +%m.%d.%G.%H%M`
PATH=$PATH:/bin:/usr/bin:/usr/sbin
date
# Effettuerà lo Shutdown di tutte le macchine VMWARE che trova, impostare i secondo di Shutdown tra una macchina e l’altra modificando la linea dove è impostato lo Sleep, qui 20 secondi
for i in `vim-cmd vmsvc/getallvms | sed ’1d’ | awk ‘{print $1}’`
do
vim-cmd vmsvc/power.shutdown $i
sleep 20
done
# Alla fine del loop di shutdown, effettuare lo spegnimento del server stesso, impostando lo sleep sotto, essere certi che lo stesso avvenga dopo che tutte le machine sono spente!, altrimenti si spegnerà a shutdown non terminato, qui 360 secondi
sleep 360
poweroff
==============================
Scipt estremamente semplice, ma fate molta attenzione che il comando di Shutdown avvenga DOPO che tutti i Guest siano stati spenti.
se ben configurato dopo che il server si è spento, si spegnerà anche L’UPS.
E’ poi necessario configurare il server stesso (solitamente da Bios) per far si che in caso di arrivo di tensione, lo stesso si accenda, in questo modo le macchine torneranno attive senza necessità di intervento umano.
Per eseguire il comando sopra è necessario lanciarlo da un Client (che ripeto può essere anche un Guest all’interno del VMWARE) e per farlo bisogna scaricare Plink che fa parte dei Tools di Putty, questo semplice tool, permette di eseguire un comando all’interno di una macchina linux che ha l’SSH aperto, sarà quindi necessario eseguire il comando tramite uno script lanciato dall’UPS con all’interno la seguente stringa

“C:XXXXXXXXXXXXXXXXXXXXplink.exe” 192.168.0.XXX -l root -pw xxxxxxxxx /vmfs/volumes/4be44cf6-27200d83-9788-xxxxxxxxxxx/shutdown.sh
ecco due aspetti che piaceranno poco (anche a me) è necessario che la password di Root, o comunque la password di un’utenza che abbia diritti di SSH/accesso allo store/diritti di shutdown, sia esposta in chiaro nello script.

è anche vero che è possibile nascondere il comando di shutdown da occhi indiscreti proteggendolo sotto directory abilitate da utenze con diritti elevati.

se ben calibrato il tutto (è necessario fare le relative prove per essere certi che l’eventuale UPS abbia sufficiente autonomia per tenere su le macchine fino a loro shutdown, ma questo forse era inutile dirlo), il server eseguirà lo shutdown appena tutte le macchine virtuale si saranno spente.

Con quanto sopra vi evitate, complesse procedure di integrazione software UPS all’interno di Vmware stesso, ed il comando non richiede neanche grandi competenze tecniche, è tutto scritto sopra quindi è estremamente semplice

In caso di problemi chiedete pure sarò disponibile a eventuali chiarimenti

Buon Shutdown a tutti!