VMware vSphere: Auf allen Hosts des vCenters eine Softwarekomponente aktualisieren – mit PowerCLI

Heute Nacht steht die Aktualisierung der Firmware eines HP BladeSystem c7000-Bladechassis mit HP ProLiant BL460 gen9 und HP VC FlexFabric 10Gb/24-Modules an.

So weit, so unproblematisch. Ich wollte die lpfc- und elxnet-Vib’s vorher aktualisieren, damit nach dem Firmwareupgrade der ESX-Host gleich mit der optimalen Version starten kann.

Die Vib’s möchte ich nicht im VUM haben, also würde ich sie auf einen gemeinsamen Datastore schieben und per SSH und esxcli software vib update … aktualisieren.

Dummerweise habe ich SSH standardmässig auf allen produktiven Hosts deaktiviert. Nun müsste ich …

NEIN. Ich bin faul. Das muss einfacher gehen. Tut es:

Add-PSSnapin vmware.*
$credential = Get-Credential
Connect-VIServer -Server vcenter06 `
    -Credential $credential

Get-VMHost | ForEach-Object {
    $esxhost = $_
    $esxcli = $esxhost | Get-EsxCli
    $esxcli.software.vib.list() | Where-Object `
        {$_.Name -match '(elxnet$)|(lpfc$)'} | `
        ForEach-Object {"{0} {1} {2} {3}" -f `
        $esxhost.Name, $_.Name, $_.Version, `
        $_.InstallDate}
    $esxcli.software.vib.update($null, $false, `
        $false, $false, $false, $false, $false, `
        $null, '/path/to/elxnet.vib')
    $esxcli.software.vib.update($null, $false, `
        $false, $false, $false, $false, $false, `
        $null, '/path/to/elxnet.vib')
}

Wobei die Vib’s an einem gemeinsamen Speicherort liegen müssen.

Et viola, 60 Minuten putty und rumklicken ersetzt durch 15min PowerCLI + 45min auf den (Miss)Erfolg warten.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.