OpBot vSphere PowerCLI Operations

Ich bin immer sehr interessiert an neuartigen Ansätzen zum Management und Reporting von VMware vSphere Umgebungen. Besonders herausgestochen ist da in letzter Zeit für mich der OpBot vSphere PowerCLI Operations Ansatz der Firma Opvizor. Sie nennen ihr ChatOps Produkt OpBot for vSphere.
Dabei wird der Team Messenger Dienst Slack in der ersten Version als Medium für API Calls gegen die VMware vSphere Umgebung verwendet. Die vSphere API Calls sind hierfür in ein sehr simples Befehlsschema abstrahiert um dem Benutzer die Bedienung so einfach wie möglich zu gestalten. Mit PowerCLI Core hat sich dann für dieses Produkt in der Version 2.0 eine ganz neue Welt an Möglichkeiten aufgetan. Nun kann neben den vSphere API Calls auch die VMware PowerCLI verwendet werden um die notwendigen Informationen zu erhalten.

Ich habe mich sehr gefreut, als Dennis Zimmer von Opvizor mich angesprochen hat, ob er nicht eine meiner PowerCLI Funktionen in dem Produkt verwenden kann. Aber dazu später mehr.

OpBot vSphere PowerCLI Operations in Aktion

Für erfahrene Nutzer von Slack oder von Messenger Diensten im Allgemeinen ist es eine Sehr intuitive Nutzung und der Einstieg fällt alles andere als schwer.

Einen ganz guten Einblick gibt dieses Video:

 

Wie funktioniert OpBot for vSphere

Der ChatBot, hier OpBot wird als virtuelle Appliance ausgeliefert. In der Appliance läuft ein abgespecktes Ubuntu Linux mit allen notwendigen Komponenten um die vSphere API und PowerCLI Core zu nutzen. Auf der anderen Seite verbindet sich die Appliance mit der Slack API um Befehle entgegen zu nehmen und zu beantworten.

Aufbau OpBot vSphere PowerCLI Operations

Aufbau OpBot vSphere PowerCLI Operations

Vorteile einer solchen Umsetzung:

  • Keine Einwahl notwendig
  • Nutzung auf allen Geräten
  • Sehr geringe Bandbreite notwendig
  • Aktionen in „Channels“ für alle Kollegen sichtbar

OpBot vSphere PowerCLI Operations in der Praxis

Meiner Vorliebe für PowerCLI geschuldet möchte ich hier nur auf die neue PowerShell (PowerCLI Core) Implementierung eingehen und ein paar der Usecases aufzeigen.

OpBot vSphere PowerCLI Operations - get-command

Alle ESXi Hosts auflisten

Auflistung aller ESXi Hosts im verbundenen vCenter, sortiert nach CPU Nutzung.

Note:

Ein wichtiger Hinweis für alle, die noch nicht mit PowerShell Core gearbeitet haben: Die Verwendung von Aliasen ist nicht zu empfehlen!

OpBot vSphere PowerCLI Operations - get-vmhost

Nicht eingeschaltete VMs auflisten

Auflistung aller VMs, welche nicht den Status „PoweredOn“ haben, also z.B. ausgeschaltet oder pausiert sind.

OpBot vSphere PowerCLI Operations - get-vm,

Snapshots älter als 14 Tage auflisten

Auflistung aller Snapshots, welche älter als 14 Tage sind. Eine Sehr übliche und sinnvolle Abfrage.

Get-VM | Get-Snapshot | Where-Object {$_.Created -lt (Get-Date).AddDays(-14)} | Select-Object VM, Name, Created, SizeMB

OpBot vSphere PowerCLI Operations - Get-Snapshot

Datastores mit geringer Restkapazität aufflisten

Auflistung der Datastores mit weniger als 100 GB freiem Speicher.

Get-Datastore | Select-Object Name, Type, @{N="CapacityGB";E={[math]::Round($_.CapacityGB,2)}}, @{N="FreeSpaceGB";E={[math]::Round($_.FreeSpaceGB,2)}}, PercentFree | Sort-Object PercentFree| Where-Object { $_.PercentFree -lt 20 }

OpBot vSphere PowerCLI Operations - Get-Datastore

Komplexe Skripte

Aber natürlich ist nicht nur der Aufruf simpler Commandlets möglich, auch komplexe Skripte können ausgeführt werden.

$View = @()
foreach ($myVM in Get-VM){
   $VMDKs = $myVM | get-HardDisk
   foreach ($VMDK in $VMDKs) {
	   if ($VMDK -ne $null){
		   [int]$CapacityGB = $VMDK.CapacityKB/1024/1024
		   $Report = [PSCustomObject] @{
				   Name = $myVM.name
				   PowerState = $myVM.PowerState
				   Datastore = $VMDK.FileName.Split(']')[0].TrimStart('[')
				   VMDK = $VMDK.FileName.Split(']')[1].TrimStart('[')
				   StorageFormat = $VMDK.StorageFormat
				   CapacityGB = $CapacityGB
			   }
			   $View += $Report
		   }  
	   }
   }
$View | Sort-Object VMname, PowerState, Datastore, VMDK, StorageFormat, CapacityGB

OpBot vSphere PowerCLI Operations - Complex Script

Eingebundene PowerCLI Funktionen

Die Verwendung von komplexen Skripten bringt mich dann auch zum Einsatz meiner Funktion „Recommend-Sizing“ (GitHub) in OpBot 2.0.
Ich gehe davon aus, dass der übliche Einsatz von OpBot for vSphere nicht die Ausführung komplexer Skripte sein wird, sondern wohl primär verwendet werden wird um schnell an relevante Informationen zu gelangen.

Hier ist die Einbindung meiner Funktion „Recommend-Sizing“ als „Cluster-Summary“ ein sehr gutes Beispiel, viele relevante Informationen über die Umgebung können somit schnell aufgerufen werden.

OpBot vSphere PowerCLI Operations - Cluster-Summary

Wunschliste für OpBot for vSphere

Ich vermisse mit der Einbindung von PowerShell Core eigentlich nicht mehr viel.

Community für weitere Funktionen

Es wäre schön, wenn noch mehr PowerCLI Funktionen in das Produkt Einzug halten würden, somit könnten dem Nutzer noch mehr Informationen schneller zugänglich gemachen werden. Speziell die Nutzung über das Smartphone würde dadurch enorm erleichtert. Eventuell wäre es auch denkbar den Nutzern zu ermöglich Ihre Installation selbst zu erweitern um Ihre eigenen PowerCLI Funktionen, angepasst an die spezifischen Bedürfnisse.

Automatisierte ChatBot Meldungen

Als Nutzer dieses Produktes würde ich mir wünschen, dass bestimme Ereignisse oder Situationen gemeldet würden (Neue Alarme, Datastore unter 20% Restkapazität), sozusagen eine Art Event Trigger.

Eine Tägliche Nachricht wie nach dem Beispiel von vCheck for vSphere wäre sicher auch sehr Hilfreich.

Letzteres ist laut Dennis Zimmer in Form eines Schedulers für Skripte bereits in der Testphase!

OpBot for vSphere selbst testen

Opvizor bietet die Möglichkeit das Produkt kostenlos zu testen. Einfach hier registrieren:

http://try.opvizor.com/opbot/

Leave a Reply