Aggiornare ESXi tramite PowerCLI

vmware-logo

Tempo fa scrissi un po' in cui spiegavo come aggiornare un host ESXi tramite SSH, ora vediamo come ottenere il medesimo risultato passando però per VMware PowerCLI. Il che si traduce nell'utilizzo di powershell e di alcune cmdlets ad-hoc per VMware.

Nel mio caso specifico ho utilizzato i seguenti comandi per aggiornare un host ESXi dalla versione 5.1 alla 5.1 Update 1.

La prime operazioni da portare a termine sono l'installazione di PowerCLI sul PC che utilizzeremo per l'aggiornamento e lo scaricamento della patch dell'hypervisor. Tutte le patch possono essere scaricate da questo portale. Una volta scaricata l'ultima patch la dobbiamo "buttare", così come l'abbiamo scaricata, senza scompattare l'archivio nel datastore dell'host ESXi. Per fare questo personalmente utilizzo vSphere web client, ma questa operazione può essere fatta anche con il vecchio client, oppure tramite SCP. All'interno del datastore vado a creare una cartella patches che conterrà tutti gli eventuali patch in formato .zip o .vib.

Ora apriamo la VMware PowerCLI e diamo la seguente cmdlet per collegarci all'host, o ad VMware vCentral Server. ((Con le parentesi angolari vado ad indicare dei segnaposto che devono essere rimpiazzati con valori corretti prima di dare il comando.))

Connect-VIServer -Server <nome/indirizzo-host> -User <admin> -Password <password>

Molto probabilmente compariranno degli avvisi relativi ai certificati di sicurezza.

Possiamo dare il seguente comando per vedere la versione attuale di ESXi:

get-VMhost | Select Name, ConnectionState, Version, Build

Per eseguire l'aggiornamento dobbiamo mettere l'host ESXi nello stato di manutenzione. Possiamo fare questo tramite la cmdlet:

Set-VMHost -VMhost <nome/indirizzo-host> -State “Maintenance”

Per effettuare l'effettivo aggiornamento dell'host diamo questi comandi:

$esxi = Get-EsxCli -VMHost $vmhost
$esxi.software.vib.install("/vmfs/volumes/datastore01/<path-to-zip-file>", $false, $true, $true, $false, $false)

Nel mio caso è comparto il seguente messaggio:

Message : The update completed successfully, but the system needs to be rebooted for the changes to be effective.
RebootRequired : true

VIBsInstalled : {VMware_bootbank_esx-base_5.1.0-1.16.1157734, VMware_bootbank_esx-xserver_5.1.0-0.11.1063671, VMware_bootbank_ipmi-ipmi-si-drv_39.1-4vmw.510.1.12.1065491, VMware_bootbank_misc-drivers_5.1.0-1.16.1157734...}

VIBsRemoved : {VMware_bootbank_esx-base_5.1.0-0.5.838463, VMware_bootbank_esx-xserver_5.1.0-0.0.799733, VMware_bootbank_ipmi-ipmi-si-drv_39.1-4vmw.510.0.0.799733, VMware_bootbank_misc-drivers_5.1.0-0.0.799733...}

VIBsSkipped : {VMware_bootbank_ata-pata-amd_0.3.10-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-atiixp_0.4.6-4vmw.510.0.0.799733, VMware_bootbank_ata-pata-cmd64x_0.2.5-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-hpt3x2n_0.3.4-3vmw.510.0.0.799733...}

L'operazione di aggiornamento nella maggior parte dei casi necessita di un reboot dell'host.

Restart-VMHost-VMHost $vmhost -Confirm:$false

Infine, a reboot completato, diamo il seguente comando per uscire dalla modalità di manutenzione:

Set-VMHost -VMhost <nome/indirizzo-host> -State “Connected”

Questa metodologia di update torna molto utile nel caso avessimo a disposizione più host, e tramite un "semplice" script in PowerShell potremmo aggiornare man mano tutti gli host. 😉