build 65d0a3ad | content blog-content@c8490fa · 338 posts | profiles 20 · corpus 228 | 0 skipped |
Scripting · 2019-03-05

VMs anhand eines Tags in Resource Pools verschieben

Ein Script, das die Zuweisung von VMs in Resource Pools anhand von Tags automatisiert. Und dafür sorgt, dass alle VMs überhaupt ein Tag haben.

2019-03-05Datum
Dario DörflingerAutor
3Min. Lesezeit
534words
no translation reviewed
Themen capabilities · idf weight Automation automation 1.80
Hersteller vendors · idf weight VMware vmware 0.89

Dieser Beitrag ist von 2019. Er bleibt online, weil er nach wie vor nachgefragt wird, beschreibt aber einen Produktstand von damals.

Noch einmal Resource Pools

Als ich kürzlich einem Kunden beim Upgrade auf vSphere 6.7 geholfen habe, bin ich wieder über einen falsch eingesetzten Resource Pool gestolpert. Nach dem Upgrade haben wir besprochen, wie sich Resource Pools sinnvoll nutzen lassen und wie viel von diesem neuen Ablauf sich automatisieren lässt, damit er auch eingehalten wird.

Über Resource Pools habe ich hier geschrieben und auch ein Script bereitgestellt, das die Share-Werte pro Pool anhand eines definierten Faktors berechnet. Der Pool «High» bekommt zum Beispiel den Faktor 8, der Pool «Low» den Faktor 1. Damit bekommen die VMs im Pool «High» bei Contention achtmal mehr Ressourcen als die im Pool «Low».

Nach vielen Gesprächen mit Kunden über Resource Pools zeigt sich: Genau dieses Verhalten haben sie erwartet, als sie ihre Resource Pools eingerichtet haben.

Ich empfehle meinen Kunden, Tags so oft wie möglich zu verwenden. Tags sind ein hervorragendes Werkzeug, um Betriebsaufgaben zu automatisieren. Meine Empfehlung ist eine Tag-Kategorie namens «ResourcePool» mit der Kardinalität «Single», also nur ein Tag aus dieser Kategorie pro Objekt, und die sich nur auf virtuelle Maschinen anwenden lässt.

PowerCLI hilft

In PowerCLI ist das ein Einzeiler:

New-TagCategory -Name "ResourcePool" -Cardinality "Single" -Description "Category for resource pool assignment" -Confirm:$false

Um Tags für die neue Kategorie zu erstellen, reicht ebenfalls ein Einzeiler:

New-Tag -Name "NameOfYourTag" -Category "ResourcePool" -Description "Tag for VMs to move into corresponding Resource pool" -Confirm:$false

Jetzt haben wir eine Tag-Kategorie und eine Reihe von Tags. Welche VM welches Tag bekommt, entscheidet das Betriebsteam des Kunden.

Und dann? Wir müssen sicherstellen, dass die Tags für die Zuweisung zum Resource Pool auch verwendet werden. Und wir wollen, dass eine VM beim Ändern ihres Tags in den richtigen Pool wandert.

Statt das ganze Script hier hineinzukopieren, verlinke ich mein GitHub Repository.

Das Script heisst Move-VMsIntoResoucePoolsBasedOnTag.ps1.

Das Script

Es nimmt zwei Parameter. Der erste ist «vCenter» und erklärt sich von selbst. Der zweite ist «defaultTag» und ist optional. Damit bekommen alle VMs, die noch kein «ResourcePool»-Tag haben, ein Tag mit diesem Namen. So sind alle VMs getaggt, bevor sie in Resource Pools verschoben werden.

Die TagCategory ist standardmässig «ResourcePool». Das lässt sich natürlich ändern, über die Variable auf Zeile 63.

Das Script hängt vom Modul PSLogging ab, das ich auch in früheren Scripts verwendet habe. Dank ihm schreibt das Script ein Log mit sehr nützlichen Informationen, was die Fehlersuche einfach macht.

Und wenn du das Script planen willst, und das empfehle ich, musst du zwei Zeilen anpassen, genauer gesagt zwei auskommentieren und zwei einkommentieren. Das steht auf den Zeilen 75 bis 80. Du brauchst dafür ein VI-CredentialStoreItem, und den nötigen Befehl findest du in der Synopsis des Scripts.

Die Informationen zum Script holst du dir mit «get-help»:

get-help ./Move-VMsIntoResourcePoolBasedOnTag.ps1

Ich habe versucht, jeden Fehler abzufangen, der mir eingefallen ist. Das Script legt Tags, die Kategorie und die passenden Resource Pools an, falls sie nicht existieren. Wenn du doch einen Fehler findest, sag mir Bescheid oder schick einen Pull Request oder ein Issue auf meinem GitHub. Das würde mich freuen.

Übrigens ist dieses Script als Ergänzung zu meinem früheren Script zur Optimierung von Resource Pools gedacht. Das Script liegt auf meinem GitHub, der Blogpost dazu steht hier.

Passt ausserdem