In Umgebungen mit zahlreichen ESXi-Hosts lassen sich Hosts mit Skripts schneller und fehlerfreier verwalten als über den vSphere Client.
vSphereumfasst mehrere Skriptsprachen für die ESXi-Hostverwaltung. VMware PowerCLI ist eine Windows PowerShell-Schnittstelle zur vSphere-API und enthält PowerShell-cmdlets für die Verwaltung von vSphere-Komponenten. ESXCLI enthält eine Reihe von Befehlen für die Verwaltung von ESXi-Hosts und virtuellen Maschinen. Unter https://developer.vmware.com finden Sie Referenzinformationen und Programmiertipps. Die vSphere-Administratordokumentation behandelt die Verwendung des vSphere Client für die Verwaltung.
Sie können auch eine der Skriptschnittstellen zum vSphere Automation SDK, wie beispielsweise vSphere Automation SDK for Python, verwenden.
Prozedur
- Erstellen Sie eine benutzerdefinierte Rolle mit eingeschränkten Berechtigungen.
Sie können z. B. eine Rolle erstellen, die eine Reihe von Berechtigungen für die Hostverwaltung, aber keine Berechtigungen für die Verwaltung von virtuellen Maschinen, Speicher oder Netzwerken besitzt. Wenn das Skript, das Sie verwenden möchten, nur Informationen extrahiert, können Sie eine Rolle mit Lesezugriff für den Host erstellen.
- Erstellen Sie über den vSphere Client ein Dienstkonto und weisen Sie ihm die benutzerdefinierte Rolle zu.
Sie können mehrere benutzerdefinierte Rollen mit unterschiedlichen Zugriffsebenen erstellen, wenn der Zugriff auf bestimmte Hosts stark eingeschränkt werden soll.
- Schreiben Sie Skripts zum Prüfen oder Ändern von Parametern und führen Sie sie aus.
Sie können z. B. die interaktive Shell-Zeitüberschreitung eines Hosts wie folgt prüfen oder festlegen:
Sprache |
Befehle |
ESXCLI |
esxcli <conn_options> system settings advanced get /UserVars/ESXiShellTimeOut esxcli --formatter=csv --format-param=fields="Path,Int Value"
system settings advanced list | grep /UserVars/ESXiShellTimeOut |
PowerCLI |
#List UserVars.ESXiShellInteractiveTimeOut for each host
Get-VMHost | Select Name,
@{N="UserVars.ESXiShellInteractiveTimeOut";E={$_
| Get-AdvancedSetting -Name UserVars.ESXiShellInteractiveTimeOut
| Select -ExpandProperty Value}}
# Set UserVars.ESXiShellTimeOut to 900 on all hosts
Get-VMHost
| Foreach { Get-AdvancedSetting -Entity $_ -Name UserVars.ESXiShellInteractiveTimeOut | Set-AdvancedSetting -Value 900 }
|
- Erstellen Sie in großen Umgebungen Rollen mit unterschiedlichen Zugriffsrechten und gruppieren Sie Hosts gemäßen den Aufgaben, die Sie ausführen möchten, in Ordnern. Anschließend können Sie Skripts für unterschiedliche Ordner mithilfe verschiedener Dienstkonten ausführen.
- Stellen Sie sicher, dass die Änderungen nach der Ausführung des Befehls vorgenommen wurden.