Als Service Provider ist die Automation aller operativen Tasks sehr wichtig um die Effizient und Skalierbarkeit hoch zu halten sowie Fehlerquellen und damit Kosten im Gegenzug gering zu halten. Einer dieser Tasks ist der vCloud Director Federation Certificate Renewal der in vielen Umgebungen ohne weitere Abhängigkeiten ausgeführt werden kann.
Der Beiname „Workflow“ im Titel dieses Beitrags weist schon darauf hin, dass es sich diesmal nicht um ein VMware PowerCLI Skript handelt, obwohl das natürlich auch möglich ist für die Erneuerung der Zertifikate.
$Orgs = Get-Org | Get-CIView foreach ($Org in $Orgs) { if ($Org.Settings.OrgFederationSettings.Enabled -match "False") { $Org.Settings.OrgFederationSettings.RegenerateFederationCertificate() } }
Ich habe mich für diesen Artikel und auch allgemein wieder etwas mehr dem VMware vRealize Orchestrator zugewandt, warum erläutere ich im nächsten Abschnitt.
Hello #VMware #vRO, I`m back! Sorry but I cheated you with #PowerCLI…#vCO #vExpert
— Markus Kraus (@vMarkus_K) 20. September 2017
Warum VMware vRealize Orchestrator
Bevor ich in das eigentliche Thema einsteige, möchte ich kurz meine Beweggründe aufzeigt, warum ich für bestimmte Tasks den VMware vRealize Orchestrator einem reinen PowerShell Skript vorziehe.
Das fundamentale Problem mit der Automation kritischer, regelmäßigen Tasks abgebildet mit PowerShell Skripten ist die Skalierbarkeit und Zuverlässigkeit.
Nehmen wir mal diesen Task als Beispiel um das Problem aufzuzeigen:
Um das vCloud Director Federation Certificate Renewal aller Organisationen durchzuführen ist kein großes PowerShell Skript notwendig (wenn man es genau nimmt ist sogar weniger Code erforderlich als mit dem vRealize Orchestrator). Der eigentliche Aufwand liegt darin diesen wiederkehrenden Task zuverlässig einzuplanen und die Läufe lückenlos zu überwachen. Habe ich viele weitere Tasks, die ich zusätzlich auf dem gleichen System ausführen möchte kommen wir zu dem Problem der Skalierbarkeit. Das ausführende System wird früher oder später unter Lastproblemen leiden und damit auch die Zuverlässigkeit der Skripte sinken. Zum Thema Zuverläsigkeit möchte ich noch die nachträgliche analyse fehlgeschlagener Ausführungen hinzufügen, diese gestaltet sich meist auch schwierig mit PowerShell Skripten.
Eine Workflow Engine wie der vRealize Orchestrator hat alle Werkzeuge um diese Probleme zu vermeiden bereits an Bord, sogar Clustering wäre möglich wenn vSphere HA nicht genügt. Mit der zusätzlichen Anbindung eines vRealize Log Insight Clusters sind in Bezug auf die Überwachung der Workflows keine Wünsche mehr offen. Das gleiche mit PowerShell zu erreichen ist nicht unmöglich aber wesentlich aufwändiger.
vCloud Director Federation Certificate Renewal
Wenn eine Organisation nur lokale User oder Standard LDAP User, hat das Federation Zertifikat für die Organisation keinerlei Relevanz. Problematisch wird es wenn ein SAML identity provider genutzt wird.
Beispiel für ungenutztes Zertifikat:
Leider benachrichtigt der VMware vCloud Director jedoch trotzdem die Organisation Administrators bei drohendem Ablauf (Zertifikat ist ein Jahr gültig).
Federation Certificate Renewal Workflow
Um das Renewal nun voll automatisch und zyklisch ablaufen zu lassen, müssen für den Workflow alle vCloud Director Organisationen gefiltert werden, die Federation nutzen. Dabei wird eigentlich automatisch die „System Org“ auch mit herausgefiltert, zur Sicherheit habe ich das aber noch einmal explizit erzwungen.
//Get all Orgs var orgs = host.getOrganizations(); //Exclude Federation Org for(var i = orgs.length - 1; i >= 0; i--) { System.debug("Org name: " + orgs[i].name); System.debug("Org name: " + orgs[i].toAdminObject().settings.orgFederationSettings.enabled); if(orgs[i].toAdminObject().settings.orgFederationSettings.enabled || orgs[i].name === "System" ) { System.debug("Org name '" + orgs[i].name + "' removed from processing (Federation Enabled or System)."); orgs.splice(i, 1); } } System.log(orgs.length + " Orgs Found");
Nach dem Filtern kann auf alle Organisationen der Standard Workflow „Regenerate Federation Certificate“ angewendet werden. Dazu wird über eine Schleife Anhand des Counters auf einen Wert nach dem Anderen im Array zugegriffen:
//Pick Org from Orgs var org = orgs[ counter ]; System.log(org.name + " Org picked"); //Get AdminOrg from Org vCloudAdminOrganisation = System.getModule("com.vmware.library.vCloud.Admin.Organization").getAdminOrganizationFromOrganization(org);
Input ist nur der vCloud Director Host:
Federation Certificate Renewal Workflow Monoitoring
Mit dem VMware vRealize Log Insight Content Pack für die vRealize Orchestrator (7.0.1 +) ist es ohne weitere Anpassung möglich die Workflows und das System umfassend zu überwachend. Und damit sind wir auch wieder bei dem Einleitenden Thema, warum der vRealize Orchestrator für den Enterprise Einsatz einfacher zu nutzen ist als ein reines PowerShell Skript.
In-Workflow Log Events:
Federation Certificate Renewal Workflow Download
Ich habe die aktuelle Version des Workflows als Sample zum Download bereitgestellt:
VMWARE {code}™ Sample Download