System Center Orchestrator

Werte und Variablen an Runbooks übergeben und von Runbooks erhalten

Ein tolles Feature und eines meiner meistgenutzten Funktionen im System Center Orchestrator ist es, Werte an ein Runbook zu übergeben und auch Werte wieder zu erhalten. Somit können mehrere Runbooks untereinander gestartet werden, ähnlich wie eine Funktion in der Programmierung.

Da dies natürlich die Lesbarkeit eines umfangreichen SCO Projektes erheblich verbessert und auch ein Teil der Best Practize ist, ein Runbook nicht mit zu vielen Aktivities zu überladen, sondern einzelnen Schritte in einzelne Runbooks zu verteilen, zeige ich euch heute wie ihr Werte zwischen Runbooks übergebt und erhaltet.

In diesem Beitrag befindet sich aber noch etwas, und zwar mein erstes Youtube Video. Ich habe ein Video zu genau diesem Thema gedreht und auf Youtube gestellt: http://youtu.be/OxxY9fgO70o

Der Aufbau

Unser Szenario für heute ist folgendes.

Ein Runbook wird aus einem Textfile eine Liste von Servern auslesen und diese Namen einem zweiten Runbook übergeben welches einen Reboot bei diesen Servern durchführt.

In diesem Artikel bauen wir die Runbooks Schritt für Schritt und zum Schluss haben wir ein tolles Beispiel einer modular aufgebauten Runbook Lösung.

Beginnen wir also mit dem Runbook um unser Text File zu lesen

Runbook Textfile lesen: 2. Read Text

Zuerst erstellen wir unser Text File welches pro Zeile einen Servernamen enthält.

image

Als nächstes erstellen wir ein Runbook, welches als Activity ein “Read Line” bekommt welches wir wie folgt konfigurieren

image

File: beinhaltet unsere Text Datei mit den Servern

File encoding: gibt den Type der Datei an, ich wähle hier immer “Auto”

Line Numbers: hier könnte man konfigurieren, wie viele Zeilen aus dem File gelesen werden, da wir alle Zeilen benötigen ist unser Wert “1-end”, was soviel heißt wie von Anfang bis Ende.

Hier haben wir nun schon unsere erste Möglichkeit, das Runbook etwas dynamischer zu machen, den sollte sich der Dateiname mal ändern, muss dazu das Runbook wieder geändert werden, da ja der FileName in dem Activity steht.

Wir möchten aber dem Runbook beim Aufruf den Pfad mitgeben, somit fügen wir ein zweites Activity in das Runbook ein, und zwar das “Initiliaze Data

In diesem konfigurieren wir einen Parameter mit dem Namen “File”

Ein “Initiliaze Data” kann nur am Anfang eines Runbooks stehen und dient dazu, dem Runbook beim Start Werte zu übergeben. Diese Werte können nun im laufe des Runbooks verwendet werden.

image

Als nächstes verbinden wir die 2 Activities

image

und öffnen unser “Read Line” Activity um hier den Pfad durch unseren Parameter aus dem “Initialize Data” zu ersetzen

image

“Published Data” können von jedem vorhergehenden Activity abonniert werden, und somit gibt es fast keine Grenzen beim Aufbau eines modularen Runbooks

image

Das Ergebnis sieht dann wie folgt aus.

image

Nun könnten wir das Runbook starten und den Pfad beim Aufruf schon mitgeben,

wir jedoch kümmern uns jetzt um das zweite Runbook, welche unsere Server neu startet.

Runbook Server Neustart: 3. Make Reboot

Dieses Runbook werden wir sehr einfach halten, da es hier ja nicht um einen sauberen Reboot geht sondern um die Übergabe der Werte und Variablen.

Auch hier benötigen wir das “Initialize Data” Activity und das “Restart System” Activity welches wir gleich miteinander verbinden.

Diesem Runbook wollen wir später den Servername aus unserem ersten Runbook übergeben, somit erstellen wir einen Parameter “Servername” im “Initialize Data” Activity.

image

Das “Restart System” Activity sieht wie folgt aus.

image

Computer: “Published Data” ist der Servername des “Initialize Data” Activities

Message: Ein freier Text

Das ganze Runbook sieht wie folgt aus

image

Und somit kommen wir zu unserem dritten und entscheidenden Runbook

Master Runbook

Jetzt bauen wir ein drittes Runbook als Master Runbook.

Dieses wird zum Schluss angestoßen, und mit dem Pfad zur Datei aufgerufen, die soeben erstellten Runbooks werden von unserem Master Runbook aufgerufen.

Unser erster Entwurf sieht wie folgt aus

image

Das “Initialize Data” konfigurieren wir wieder mit einem Parameter und zwar “File

image

Unser erstes “Invoke Runbook” verknüpfen wir mit unserem Runbook “2. Read Text”, das sieht dann so aus

image

Dem aufmerksamen Leser wird auffallen, das wir hier Parameter konfigurieren können, durch die Auswahl unseres Runbooks “2 – Read Text” in dem wir im “Initialize Data” Activity den Parameter File konfiguriert haben, haben wir nun die Möglichkeit diesen Parameter einen Wert zu übergeben.

Hier abonnieren wir unser Published Data aus dem Master Runbook “File”. Somit übergeben wir den Wert des Master Runbooks an das zweite Runbook “2- Read Text”

Das “Wait for completion” aktivieren wir in diesem Fall, da wir mit unserem Master Runbook an dieser Stelle warten wollen, bis unser “Read Text” Runbook auch fertig ist, bevor wir mit dem nächsten Activity starten.

Das zweite Invoke Runbook soll nun das Runbook “3 – Make Reboot” ausführen, somit verknüpfen wir nun das.

image

Das wir im Runbook “ 3 – Make Reboot” den Parameter “Servername” konfiguriert haben, bekommen wir hier die Auswahl diesen Parameter zu befüllen.

Aber die Frage stellt sich nun mit was, wir benötigen das Ergebnis aus Runbook “2 – Read Text” um es unserem dritten Runbook zu übergeben.

Also wechseln wir zu Runbook 2 und holen uns ein drittes Activity, “Return Data

Um in einem Runbook auch Werte mittels “Return Data” zurück zu liefern, müssen wir dies zuvor konfigurieren, mittels Rechtsklick auf unser Runbook und Eigenschaften

image

Im Reiter “Returned Data” können wir nun Parameter definieren, welchen wir etwas sprechender bezeichnen werden.

image

Sobald wir jetzt zum Activity “Return Data” wechseln, sollten wir dort unseren erstellten Parameter sehen welchen wir mit dem Ergebnis des “Read Line” Activites konfigurieren.

image

Das Runbook jetzt noch einchecken und schon können wir zum Master Runbook wechseln.

Jetzt haben wir die Möglichkeit, due Ausgabe aus dem zweiten Runbook in das dritte Runbook zu übergeben.

image

Das Ergebnis sieht nun wie folgt aus

image

Das Ergebnis

Jetzt nochmal das ganze in Wort und Bild zusammengefasst.

Das Runbook “1 – Master” ist unser primäres Runbook

image

Initialize Data: Hier geben wir den Pfad zum Textfile an, welche in “2 – Read Text” gelesen wird

2 – Read Text: erhält den Pfad zur Text Datei und gibt uns für jede Zeile einen Servernamen zurück

image

3 – Make Reboot: Diesem Runbook wird der Servername übergeben und der Reboot wird ausgeführt.

image

Wem das ganze als Video mehr zusagt, findet das hier

Was sagt ihr zu meinem ersten Video? Wollt ihr mehr davon sehen?

Michael Seidl aka Techguy

Leave a Comment

Your email address will not be published. Required fields are marked *

*