Runbook indítása másik runbookból

 

Érvényes: Windows Azure Pack for Windows Server, System Center 2012 R2 Orchestrator

A Szolgáltatáskezelési automatizálás környezetben ajánlott eljárásnak számít az újrafelhasználható, moduláris runbookok írása, amelyek rendelkeznek egy más runbookok által használható önálló funkcióval. A szülőrunbookok gyakran hívnak meg egy vagy több gyermekrunbookot a kívánt funkció végrehajtásához. A gyermekrunbookok meghívása kétféleképpen történhet. Érdemes megismernie a kétféle módszer közötti különbségeket ahhoz, hogy eldönthesse, melyik felel meg jobban a különböző forgatókönyveihez.

  • Gyermekrunbook indítása beágyazott futtatás használatával

  • Gyermekrunbook indítása parancsmaggal

Gyermekrunbook indítása beágyazott futtatás használatával

Runbook másik runbookból történő beágyazott indításához használja a runbook nevét, és adja meg a paraméterek értékeit ugyanúgy, mintha egy tevékenységet vagy egy parancsmagot használna. Az azonos Szolgáltatáskezelési automatizálás környezetben található runbookok mindegyike használható ezen a módon bármely másik runbook által. Mielőtt a szülőrunbook a következő sorra lépne, megvárja, hogy a gyermekrunbook befejeződjön, és a rendszer minden kimenetet közvetlenül a szülőnek ad vissza.

A beágyazottan indított runbook ugyanazt a feladatot futtatja, mint a szülőrunbook. A gyermekrunbook futtatása nem jelenik meg annak feladatelőzményeiben. A rendszer a gyermekrunbooktól érkező kivételeket és adatfolyam-kimeneteket a szülőhöz társítja. Mindez kevesebb feladatot eredményez, és megkönnyíti a feladatok követését és az azokkal kapcsolatos hibaelhárítást, mivel a rendszer a szülőrunbook feladatához társítja a gyermekrunbook összes kivételét és adatfolyam-kimenetét.

Runbookok közzétételekor az általuk meghívott gyermekrunbookoknak már rendelkezniük kell közzétett verzióval. Ennek az az oka, hogy a runbookok összeállításakor a Automatizálás társítást hoz létre minden egyes gyermekrunbookkal. Ellenkező esetben a szülőrunbook közzététele sikeres lesz, azonban az indításakor kivétel történik. Ilyenkor újból közzéteheti a szülőrunbookot, biztosítva ezzel a megfelelő hivatkozást a gyermekrunbookokra. Gyermekrunbookok módosításakor nem kell újból közzétennie a szülőrunbookot, mivel a társítás már korábban létrejött.

A beágyazottan meghívott gyermekrunbookok paraméterei bármilyen adattípusúak lehetnek, többek között összetett objektumok is, és a runbook a kezelési portállal vagy a Start-SmaRunbook parancsmaggal történő indításával ellentétben nem történik JSON-szerializálás.

A következő példa egy teszt gyermekrunbook indítására szolgál, amely három paramétert fogad el: egy összetett objektumot, egy egész számot és egy logikai paramétert. A rendszer egy változóhoz társítja a gyermekrunbook kimenetét.

$vm = Get-VM –Name "MyVM" –ComputerName "MyServer"
$output = Test-ChildRunbook –VM $vm –RepeatCount 2 –Restart $true

Gyermekrunbook indítása parancsmaggal

A Start-SMARunbook parancsmaggal runbookokat indíthat a következő témakörben leírt módon: To start a runbook with Windows PowerShell. Ha parancsmaggal indít el egy gyermekrunbookot, a szülőrunbook a következő sorra lép, amint a gyermekrunbook feladata létrejött. Ha szükség van a runbook kimenetének lekérésére, a Get-SMAJobOutput parancsmagot kell használnia a feladat eléréséhez.

A parancsmaggal indított gyermekrunbook feladata a szülőrunbooktól külön feladatban fut. Mindez több feladatot eredményez, mint a munkafolyamat beágyazott indítása, ami növeli a Worker-kiszolgáló terhelését, és nehezíti a feladatok követését. Ugyanakkor a szülő több gyermekrunbookot is elindíthat anélkül, hogy mindegyik esetében megvárná a befejezést. Az ilyen típusú párhuzamos futtatáshoz, amely beágyazottan hívja meg a gyermekrunbookokat, a szülőrunbooknak használnia kell a Parallel kulcsszót.

A parancsmaggal indított gyermekrunbook paraméterei kivonattáblaként vannak megadva, a következő témakörben leírtak szerint: Runbook Parameters. Csak egyszerű adattípusok használhatók, azonban egy hitelesítőeszköz neve megadható a következő témakörben leírtak szerint: Hitelesítő adatok. Ha a runbook rendelkezik összetett adattípusú paraméterrel, beágyazottan kell meghívni.

A következő példában elindul a paraméterekkel rendelkező gyermekrunbook, majd a rendszer megvárja, amíg annak végrehajtása befejeződik. Ezt követően a szülőrunbook begyűjti a kimenetet a feladatból.

$webServer = 'https://MyServer'
$port = 9090
$runbookName = "Test-Runbook"
$params = @{"VMName"="MyVM";"RepeatCount"=2;"Restart"=$true} 

$job = Start-SmaRunbook –WebServiceEndpoint $webServer –Port $port –Name $runbookName –Parameters $params

$doLoop = $true
While ($doLoop) {
   $job = Get-SmaJob –WebServiceEndpoint $webServer –Port $port -Id $job.Id
   $status = $job.Status
   $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped") 
}

Get-SmaJobOutput –WebServiceEndpoint $webServer –Port $port -Id $job.Id –Stream Output

A gyermekrunbookok meghívására szolgáló módszerek összehasonlítása

Az alábbi táblázat a runbookok másik runbookból történő meghívására szolgáló két módszer eltéréseit foglalja össze.

Beágyazott

Parancsmag

Feladat

A gyermekrunbookok a szülővel azonos feladatban futnak.

A rendszer külön feladatot hoz létre a gyermekrunbookhoz.

Futtatás

A folytatás előtt a szülőrunbook megvárja, hogy a gyermekrunbook befejeződjön.

A gyermekrunbook indítását követően a szülőrunbook azonnal folytatódik.

Kimenet

A szülőrunbook közvetlenül lekérheti a gyermekrunbook kimenetét.

A szülőrunbooknak a gyermekrunbook feladatából kell lekérnie a kimenetet.

Paramétereket

A gyermekrunbook paramétereinek értékeit külön kell meghatározni, és bármilyen adattípus használható.

A gyermekrunbook paramétereinek értékeit kombinálni kell egyetlen kivonattáblába, és csak az egyszerű, a tömb és az objektum adattípusok használhatók, amelyek alkalmazzák a JSON-szerializálást.

Közzététel

A gyermekrunbookot a szülőrunbook közzététele előtt kell közzétenni.

A gyermekrunbook bármikor közzétehető a szülőrunbook indítása előtt.