Quick & Dirty XenServer patchen via Powershell

Quick & Dirty XenServer patchen via Powershell

Wenn man mehr als eine Hand voll XenServer als Standalone-Server, nicht im Pool gemanged, verwalten und patchen darf, hat man bestimmt so seine „Freude“ mit der GUI gesteuerten Updatefunktion im XenCenter.
Dies dauert meiner Meinung nach viel zu lang, da hierbei alle Patche nacheinander „Server-für-Server“ sukzessive durchgeführt werden.
Hierbei kommt es zu einer beträchtlichen Downtime der einzelnen VMs, welche für mich so nicht zumutbar erscheint.
Alternativ dazu kann man im XenCenter dieses Prozedere für jeden Server einzeln durchklicken, was allerdings recht schnell unübersichlich wird!

Anbei stelle ich ein kleines PowerShell-Script vor, welches pro Server eine Schleife durchläuft bis alle offenen Patche installiert sind.

Auch hier wird nur jedes Update der Reihe nach abgearbeitet. Allerdings kann man hierbei, übersichtlicher als in der GUI, für jeden Server einen eigenen Updateprozess starten.

Genug erzählt, hier ist das Script.
Alles was man benötigt ist ein installiertes XenCenter um das CommandlineTool xe.exe verfügbar zu haben und eine installierte Version der Powershell. Das Laden von speziellen Modulen ist nicht notwendig.

$server = read-host „Servername“
$password = read-host „root-Password“

# Pfad zu den installierenden Updates!
# In diesem Ordner sollten NUR neu einzuspielende Updates liegen!!!
$pfad = „
\FileserverShared_Folderxs_updates

#
#Start Script
#

write-host „$server wird gepatched; die VMs werden heruntergefahren“ -foregroundcolor „green“
write-host „=======================================================“
xe.exe -s $server -u root -pw $password vm-shutdown –multiple

foreach ($update in Get-ChildItem $pfad)
{
write-host „$update wird vorbereitet“ -foregroundcolor „green“
xe.exe -s $server -u root -pw $password host-disable
xe.exe -s $server -u root -pw $password host-reboot
write-host „Server wird rebootet“ -foregroundcolor „green“
start-sleep -s 180
write-host „$update wird hochgeladen“ -foregroundcolor „green“
xe.exe -s $server -u root -pw $password patch-upload file-name=$pfad$update | out-file $server“_uuid.txt“
$uuid_patch = get-content .$server“_uuid.txt“
write-host „$update wird installiert“ -foregroundcolor „green“
xe.exe -s $server -u root -pw $password patch-pool-apply uuid=$uuid_patch
write-host „$server erfolgreich mit $update gepatched“ -foregroundcolor „green“
write-host „=======================================================“
}
write-host „$server wurde gepatched; letzter reboot“ -foregroundcolor „yellow“
xe.exe -s $server -u root -pw $password host-disable
xe.exe -s $server -u root -pw $password host-reboot
start-sleep -s 180
xe.exe -s $server -u root -pw $password host-enable
Remove-Item .$server“_uuid.txt“
start-sleep -s 120
write-host „Die VMs werden wieder gestartet“ -foregroundcolor „green“
xe.exe -s $server -u root -pw $password vm-start –multiple

Script kann alternativ auch hier heruntergeladen werden:
https://docs.google.com/open?id=0B0kzgx7xeDmjWkFOa21JNXR0Tkk

Viel Spass beim ausprobieren!

Kommentar verfassen

%d Bloggern gefällt das: