VMware Aria Automation Orchestrator im Praxiseinsatz (3)

Lesezeit
3 Minuten
Bis jetzt gelesen

VMware Aria Automation Orchestrator im Praxiseinsatz (3)

20.11.2023 - 07:01
Veröffentlicht in:

In Sachen Automatisierung ist Wiederverwendbarkeit das Ziel – etwa Skripte an verschiedenen Stellen erneut einzusetzen. Zu diesem Zweck stellt VMware Aria Automation Orchestrator (vormals vRealize Orchestrator) sogenannte Actions bereit. Der Fokus in unserem Workshop liegt dabei auf typischen Szenarien, wie sie in der Praxis immer wieder vorkommen. Dies umfasst etwa das Ausführen von Skripten in virtuellen Maschinen, das Registrieren einer VM im DNS, die Integration ins Active Directory oder das Automatisieren von anderen VMware-Produkten. Im dritten Teil der Workshopserie schildern wir Ausführen von Workflows mittels REST-API und widmen uns dem Verwalten von DNS-Einträgen.

Ausführen von Workflows mittels REST-API
Nach dem Erzeugen eigener Workflows stellt sich früher oder später die Frage, wie sich die erstellten Workflows am einfachsten starten lassen. Neben dem manuellen Starten über die GUI erlaubt es Orchestrator, Workflow-Runs auch über die eingebaute REST-API zu beginnen.

Sie können sich die REST-API genauer anschauen, wenn Sie auf das Swagger-UI von Orchestrator wechseln. Bei Swagger handelt es sich um ein Tool, um existierende REST-Schnittstellen dokumentieren und ausprobieren zu können. Wichtig ist, dass Aufrufe authentifiziert sein müssen. Die Authentifizierung kann in Orchestrator über LDAP, vCenter-Single-Sign-on oder OAuth erfolgen. Bei REST-Aufrufen ist jedoch die Basic Authentication am einfachsten. Dies lässt sich umsetzen, indem Sie in jedem Aufruf im HTTP-Request ein Authorization Header anfügen. Dabei müssen Sie den Benutzernamen und das Passwort mittels Base64 encodieren.

Um einen Workflow auszuführen, benötigen Sie die Workflow-ID. Die Liste der Workflows und ihrer IDs finden Sie ebenfalls über die GUI von Swagger heraus. Dazu scrollen Sie herunter, bis Sie das Element "workflow-controller" gefunden haben.

Klicken Sie nun auf "List Operations" und wählen Sie dann das erste Element aus ("Get all workflows"). Belassen Sie dann alle Input-Variablen so, wie sie sind, und klicken Sie abschließend auf "Try it out".

Nun müssen Sie noch einmal Ihre Credentials hinterlegen. Um die Aufrufe auch leicht über das Terminal absetzen zu können, zeigt Swagger zu jedem den curl-Befehl:

curl -X GET --header 'Accept: text/html' 'https://vra8.vdi. sclabs.net:443/vco/api/org/{id}/ workflows?maxResult=2147483647& queryCount=false'

Andere nützliche REST-Aufrufe lauten

  • Get all executions
  • Start workflow execution
  • Delete workflow run
  • Get workflow execution
  • Answer user interaction
  • Get workflow run logs
  • Get workflow execution state

Der interessanteste ist aber derjenige, um einen Workflow-Run anzutriggern. Dies geschieht mit einem POST auf folgenden Endpunkt:

/api/workflows/{workflowID}/executions

Auch hier zeigt Swagger wiederum auf, wie der Aufruf erfolgen muss und wie Sie die benötigten Parameter codieren müssen.

Verwalten von DNS-Einträgen
Das Konfigurieren von DNS-Einträgen bei Windows-Systemen läuft bei einem AD-Domänen-Join automatisch ab. Schwieriger ist es bei Linux-Maschinen, aber auch hier bietet Orchestrator Unterstützung an. Allerdings sind hier wiederum Vorarbeiten notwendig. In diesem Fall müssen Sie einen Windows-Server als PowerShell-Host konfigurieren. Wechseln Sie dazu auf eine Windows-Maschine und konfigurieren Sie WinRM. Bei WinRM handelt es sich um ein SOAP-basierendes Protokoll, mit dessen Hilfe sich PowerShell-Remote-Kommandos empfangen und ausführen lassen:

winrm set winrm/config/service/auth @{Basic="true"}

Für Entwicklungszwecke ist es darüber hinaus einfacher, wenn Sie die Verschlüsselung deaktivieren, denn die verschlüsselte Kommunikation erfordert den Einsatz von Zertifikaten:

winrm set winrm/config/service @{AllowUnencrypted="true"}

Nachdem Sie WinRM konfiguriert haben, öffnen Sie eine PowerShell-Session und tippen folgenden Befehl ein:

set-executionpolicy bypass

Auch hier gilt wiederum, dass Sie dies nur in einer Entwicklungsumgebung machen sollten. Für Produktionsumgebungen ist also mit Mehraufwand zu rechnen. Nun gehen Sie zurück zum Aria Automation Orchestrator und fahren mit dem Konfigurieren des PowerShell-Plug-ins fort:

  1. Wechseln Sie links unter "Workflows" in den Ordner "Library / PowerShell / Configuration".
  2. Führen Sie den Workflow "Add a Power -Shell host" aus.
  3. Als Nächstes vergeben Sie einen Namen für den PowerShell-Host.
  4. Für die Verbindung benötigen Sie den DNS-Namen oder die IP-Adresse des PowerShell-Hosts.
  5. Als Port wählen Sie im Fall von unverschlüsseltem Netzwerkverkehr 5985 aus.
  6. Als "PowerShell remote host type" belassen Sie es bei "WinRM".
  7. Basierend auf der Umgebung nutzen Sie HTTP oder HTTPs als Transportprotokoll.
  8. Nun müssen Sie noch die Authentifizierungsart auswählen. In unserem Fall bleiben Sie bei "Basic".
  9. Als Session Mode belassen Sie es bei "Shared Session" und tragen Ihre Credentials ein.

Sobald Sie den Workflow erfolgreich ausführen konnte, ist der PowerShell-Host einsatzbereit. In den meisten Umgebungen gelingt die Konfiguration problemlos. Es kann aber je nach Umgebung auch zu Problemen kommen – je nachdem welche Sicherheitsregeln im lokalen Netzwerk implementiert sind.

Nun lohnt sich eine Betrachtung, welche PowerShell-Cmdlets Microsoft für die Verwaltung von DNS-Einträgen bereitstellt. Die bekanntesten sind hierbei:

  • Add-DnsServerResourceRecordA, um A- und PTR-Records hinzuzufügen.
  • Add-DnsServerResourceRecordCName für CNAME-Records – falls benötigt.
  • Resolve-DnsName, um zu überprüfen, ob ein Record schon existiert.
  • Remove-DnsServerResourceRecord zum Löschen von Records.

Ein einfaches Beispiel basierend auf den Cmdlets zum Anlegen eines Records kann dann wie folgt aussehen:

Add-DnsServerResourceRecordA -ComputerName dc01.sclabs.net -ZoneName sclabs.net -name vm01 -IPv4Address 10.41.211.11 -CreatePtr;

Add-DnsServerResourceRecordCName -ComputerName dc01.sclabs.net -ZoneName sclabs.net -name alias -HostNameAlias vm01.sclabs.net;

Der nächste Schritt besteht darin, diese Befehle mit vRealize Orchestrator auszuführen. Allerdings gibt es in diesem Fall ein kleines Problem: Der PowerShell-Host kann die Cmdlets nicht allein anstoßen, vielmehr muss er sich an einen Domänencontroller wenden und von diesem die Eintragungen vornehmen lassen. Sie brauchen also eine Credential-Delegation. Glücklicherweise gibt es dafür auch eine Lösung – Sie können eine dedizierte PowerShell-Session initiieren. Dies sieht dann wie folgt aus:

$passwd = ConvertTo-SecureString "PlainTextPassword" -AsPlainText –Force

$cred = New-Object System.Management.Automation.PSCredential ("sclabs.net\svc-vro", $secpasswd)

$session = New-PsSession -Computer-Name "dc01.sclabs.net" -Credential $cred

Invoke-Command -Session $session -ScriptBlock { Add-DnsServerResourceRecordA -ComputerName dc01.sclabs.net -ZoneName sclabs.net -name vm01 -IPv4Address 10.41.211.11 -CreatePtr}

Remove-PSSession -Session $session

Das erzeugte Skript triggern Sie dann aus dem Workflow "Invoke a PowerShell script" an, der sich im Ordner "Library / PowerShell" befindet.

Fazit
Wie bereits im Einführungsartikel angedeutet, handelt es sich bei vRealize Orchestrator um ein sehr mächtiges Tool. Dadurch, dass es einerseits mit vielen fertigen Workflows ausgeliefert wird, es andererseits aber auch möglich ist, sowohl eigene Logik zu implementieren als auch andere Schnittstellen und Skripte aufzurufen, sind die Einsatzgebiete in der VMware-Welt damit sehr vielfältig.

ln/Dr. Guido Söldner

Im ersten Teil der Workshopserie haben wir uns angesehen, wie Sie mit dem VMware Aria Automation Orchestrator Logging und Fehlerbehandlung betreiben. Im zweiten Teil zeigten wir, wie Sie mithilfe des Guest Script Manager Skripte in einer VM ausführen.

Ähnliche Beiträge

VMware Aria Automation Orchestrator im Praxiseinsatz (2)

In Sachen Automatisierung ist Wiederverwendbarkeit das Ziel – etwa Skripte an verschiedenen Stellen erneut einzusetzen. Zu diesem Zweck stellt VMware Aria Automation Orchestrator (vormals vRealize Orchestrator) sogenannte Actions bereit. Dies umfasst etwa das Ausführen von Skripten in virtuellen Maschinen, das Registrieren einer VM im DNS oder die Integration ins Active Directory. Im zweiten Teil zeigen wir, wie Sie mithilfe des Guest Script Manager Skripte in einer VM ausführen.

VMware Aria Automation Orchestrator im Praxiseinsatz (1)

In Sachen Automatisierung ist Wiederverwendbarkeit das Ziel – etwa Skripte an verschiedenen Stellen erneut einzusetzen. Zu diesem Zweck stellt VMware Aria Automation Orchestrator (vormals vRealize Orchestrator) sogenannte Actions bereit. Dies umfasst etwa das Ausführen von Skripten in virtuellen Maschinen, das Registrieren einer VM im DNS oder die Integration ins Active Directory. Im ersten Teil schauen wir uns an, wie Sie Logging und Fehlerbehandlung betreiben.

Messdaten in VMware-Umgebungen analysieren (3)

Bei Performanceproblemen von ESXi-Hosts muss der Administrator in der Lage sein, die Leistungsindikatoren auszulesen und die gemessenen Werte zu verstehen. Dieser Beitrag stellt hierzu das Know-how bereit. Im dritten Teil geben wir einen Überblick zu den Gründen von Verzögerungen im Hypervisor und erklären, wie Sie mit Paketverlusten beim Senden und Empfangen umgehen.