Udostępnij za pośrednictwem


Uruchamianie elementu Runbook z innego elementu Runbook

 

Dotyczy: Windows Azure Pack for Windows Server, System Center 2012 R2 Orchestrator

Najlepszym rozwiązaniem w usłudze Automatyzacja zarzÄ…dzania usÅ‚ugami jest pisanie modularnych elementów Runbook do wielokrotnego użytku, zawierających osobne funkcje, których można używać w innych elementach Runbook. Nadrzędny element Runbook często wywołuje jeden lub więcej podrzędnych elementów Runbook w celu uruchomienia wymaganych funkcji. Istnieją dwie metody wywoływania podrzędnego elementu Runbook, a każda z nich odznacza się istotnymi różnicami, które należy zrozumieć, aby móc ustalać najlepszą metodę w różnych sytuacjach.

  • Wywoływanie podrzędnego elementu Runbook przy użyciu wykonywania śródwierszowego

  • Uruchamianie podrzędnego elementu Runbook przy użyciu polecenia cmdlet

Wywoływanie podrzędnego elementu Runbook przy użyciu wykonywania śródwierszowego

Aby śródwierszowo wywołać element Runbook z innego elementu Runbook, użyj nazwy elementu Runbook i podaj wartości jego parametrów, dokładnie tak samo jak w przypadku używania działania lub polecenia cmdlet. Wszystkie elementy Runbook w tym samym środowisku usługi Automatyzacja zarzÄ…dzania usÅ‚ugami są dostępne do użycia w ten sposób dla wszystkich innych elementów Runbook. Nadrzędny element Runbook będzie czekać na ukończenie działania podrzędnego elementu Runbook przed przejściem do kolejnego wiersza, a wszelkie dane wyjściowe zostaną zwrócone bezpośrednio do elementu nadrzędnego.

Element Runbook wywoływany śródwierszowo jest uruchamiany w tym samym zadaniu co nadrzędny element Runbook. W historii zadań nie będzie żadnych informacji wskazujących podrzędny element Runbook, który został uruchomiony. Wszelkie wyjątki i strumienie wyjściowe z podrzędnego elementu Runbook zostaną skojarzone z elementem nadrzędnym. Pozwala to zmniejszyć liczbę zadań oraz łatwiej je śledzić i rozwiązywać problemy, ponieważ wszelkie wyjątki zgłaszane przez podrzędny element Runbook i dowolny z jego strumieni wyjściowych są skojarzone z zadaniem nadrzędnego elementu Runbook.

Gdy element Runbook jest publikowany, wszelkie wywoływane przez niego podrzędne elementy Runbook muszą już mieć opublikowaną wersję. Jest tak dlatego, że podczas kompilowania elementu Runbook usługa Automatyzacja tworzy skojarzenie z wszelkimi podrzędnymi elementami Runbook. Jeśli nie będą one opublikowane, nadrzędny element Runbook będzie wydawać się opublikowany prawidłowo, ale wygeneruje wyjątek po uruchomieniu. W takim przypadku można ponownie opublikować nadrzędny element Runbook, aby utworzyć poprawne odwołania do podrzędnych elementów Runbook. Nie trzeba ponownie publikować nadrzędnego elementu Runbook w przypadku zmiany dowolnego z podrzędnych elementów Runbook, ponieważ skojarzenie zostało już utworzone.

Parametry podrzędnego elementu Runbook wywoływanego śródwierszowo mogą mieć dowolny typ danych, włącznie z obiektami złożonymi. Nie stosuje się serializacji JSON, która jest używana przy uruchamianiu elementu Runbook za pomocą Portalu zarządzania lub polecenia cmdlet Start-SmaRunbook.

Poniższy przykład przedstawia wywoływanie testowego podrzędnego elementu Runbook, który przyjmuje trzy parametry: obiekt złożony, liczbę całkowitą i wartość logiczną. Dane wyjściowe podrzędnego elementu Runbook są przypisywane do zmiennej.

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

Uruchamianie podrzędnego elementu Runbook przy użyciu polecenia cmdlet

Za pomocą polecenia cmdlet Start-SMARunbook można uruchomić element Runbook zgodnie z opisem w temacie To start a runbook with Windows PowerShell. Gdy podrzędny element Runbook jest uruchamiany z poziomu polecenia cmdlet, nadrzędny element Runbook przechodzi do następnego wiersza od razu po utworzeniu zadania dla podrzędnego elementu Runbook. Aby pobrać dane wyjściowe z elementu Runbook, należy uzyskać dostęp do zadania za pomocą polecenia Get-SMAJobOutput.

Zadanie podrzędnego elementu Runbook uruchomionego za pomocą polecenia cmdlet zostanie uruchomione jako osobne zadanie z nadrzędnego elementu Runbook. Oznacza to większą liczbę zadań niż przy śródwierszowym wywoływaniu przepływu pracy, co zwiększa obciążenie serwera procesu roboczego i utrudnia ich śledzenie. Element nadrzędny może jednak uruchomić wiele podrzędnych elementów Runbook, nie oczekując na ukończenie działania każdego z nich. Aby uzyskać takie same wykonywanie równoległe w przypadku śródwierszowego wywoływania podrzędnych elementów Runbook, nadrzędny element Runbook musiałby użyć słowa kluczowego parallel.

Parametry dla podrzędnego elementu Runbook uruchomionego za pomocą polecenia cmdlet są przekazywane jako tablica skrótów zgodnie z opisem w temacie Runbook Parameters. Mogą być używane tylko proste typy danych, chociaż można podać nazwę zasobu poświadczenia zgodnie z opisem w temacie Poświadczenia. Jeśli element Runbook ma parametr o złożonym typie danych, musi być wywoływany śródwierszowo.

Poniższy przykład przedstawia uruchamianie podrzędnego elementu Runbook z parametrami oraz oczekiwanie na ukończenie jego działania. Po ukończeniu jego dane wyjściowe są pobierane z zadania przez nadrzędny element Runbook.

$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

Porównanie metod wywoływania podrzędnego elementu Runbook

Poniższa tabela zawiera podsumowanie różnic między obiema metodami wywoływania elementu Runbook z innego elementu Runbook.

Śródwierszowo

Polecenie cmdlet

Zadanie

Podrzędne elementy Runbook są uruchamiane w tym samym zadaniu co element nadrzędny.

Tworzone jest osobne zadanie dla podrzędnego elementu Runbook.

Uruchamianie

Przed kontynuowaniem nadrzędny element Runbook czeka na ukończenie działania podrzędnego elementu Runbook.

Nadrzędny element Runbook kontynuuje działanie od razu po uruchomieniu podrzędnego elementu Runbook.

Dane wyjściowe

Nadrzędny element Runbook może bezpośrednio pobierać dane wyjściowe z podrzędnego elementu Runbook.

Nadrzędny element Runbook musi pobrać dane wyjściowe z zadania podrzędnego elementu Runbook.

Parametry

Wartości parametrów podrzędnego elementu Runbook są określane oddzielnie i mogą mieć dowolny typ danych.

Wartości parametrów podrzędnego elementu Runbook muszą być połączone w jedną tablicę skrótów i mogą zawierać wyłącznie typy danych będące typami prostymi oraz tablicami i obiektami, które korzystają z serializacji JSON.

Publikowanie

Podrzędny element Runbook należy opublikować przed opublikowaniem nadrzędnego elementu Runbook.

Podrzędny element Runbook należy opublikować w dowolnym czasie przed uruchomieniem nadrzędnego elementu Runbook.