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.
Als nächstes erstellen wir ein Runbook, welches als Activity ein “Read Line” bekommt welches wir wie folgt konfigurieren
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.
Als nächstes verbinden wir die 2 Activities
und öffnen unser “Read Line” Activity um hier den Pfad durch unseren Parameter aus dem “Initialize Data” zu ersetzen
“Published Data” können von jedem vorhergehenden Activity abonniert werden, und somit gibt es fast keine Grenzen beim Aufbau eines modularen Runbooks
Das Ergebnis sieht dann wie folgt aus.
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.
Das “Restart System” Activity sieht wie folgt aus.
Computer: “Published Data” ist der Servername des “Initialize Data” Activities
Message: Ein freier Text
Das ganze Runbook sieht wie folgt aus
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
Das “Initialize Data” konfigurieren wir wieder mit einem Parameter und zwar “File”
Unser erstes “Invoke Runbook” verknüpfen wir mit unserem Runbook “2. Read Text”, das sieht dann so aus
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.
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
Im Reiter “Returned Data” können wir nun Parameter definieren, welchen wir etwas sprechender bezeichnen werden.
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.
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.
Das Ergebnis sieht nun wie folgt aus
Das Ergebnis
Jetzt nochmal das ganze in Wort und Bild zusammengefasst.
Das Runbook “1 – Master” ist unser primäres Runbook
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
3 – Make Reboot: Diesem Runbook wird der Servername übergeben und der Reboot wird ausgeführt.
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