vCloud Director Federation Certificate Renewal Workflow

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. 

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:

vCloud Director Federation Certificate Renewal Workflow - Web UI

Leider benachrichtigt der VMware vCloud Director jedoch trotzdem die Organisation Administrators bei drohendem Ablauf (Zertifikat ist ein Jahr gültig).

Federation Certificate Renewal Workflow

vCloud Director 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");

Wer den Filter in dem PowerCLI und dem JavaScript Snippet vergleicht, wird sehen, dass bei beiden am Ende auf die gleiche API zugegriffen wird.

 

PowerCLI:
$Org.Settings.OrgFederationSettings.Enabled -match „False“

JavaScript:
orgs[i].toAdminObject().settings.orgFederationSettings.enabled

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:

vCloud Director Federation Certificate Renewal Workflow - Run

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:

vCloud Director Federation Certificate Renewal Workflow - Log Insight Dashboard

vCloud Director Federation Certificate Renewal Workflow - Log Insight Log

Federation Certificate Renewal Workflow Download

Ich habe die aktuelle Version des Workflows als Sample zum Download bereitgestellt:

VMWARE {code}™ Sample Download

Leave a Reply