Wykonywanie Runbook w Azure Automation

Automatyzacja procesów w Azure Automation umożliwia tworzenie i zarządzanie PowerShell, PowerShell Workflow oraz graficznymi Runbookami. Aby uzyskać szczegółowe informacje, zobacz runbooki Azure Automation.

Automation wykonuje runbooki na podstawie zdefiniowanej w nich logiki. Jeśli element Runbook zostanie przerwany, zostanie uruchomiony ponownie na początku. To zachowanie wymaga pisania elementów Runbook, które obsługują ponowne uruchamianie w przypadku wystąpienia przejściowych problemów.

Uruchamianie elementu Runbook w Azure Automation tworzy zadanie, które jest pojedynczym wystąpieniem wykonywania elementu Runbook. Każde zadanie uzyskuje dostęp do zasobów Azure poprzez nawiązanie połączenia z twoją subskrypcją Azure. Zadanie może uzyskać dostęp do zasobów w centrum danych tylko wtedy, gdy te zasoby są dostępne z publicznej chmury.

Azure Automation przypisuje pracownika do wykonania każdego zadania podczas wykonywania runbooka. Chociaż pracownicy są współużytkowani przez wiele kont usługi Automation, zadania z różnych kont usługi Automation są odizolowane od siebie. Nie można kontrolować, które usługi robocze obsługują twoje żądania pracy.

Podczas wyświetlania listy runbooków w portalu Azure, wyświetlany jest stan każdego zadania, które zostało uruchomione dla każdego runbooka. Azure Automation przechowuje dzienniki zadań przez maksymalnie 30 dni.

Na poniższym diagramie przedstawiono cykl życia zadania Runbook dla Runbooków PowerShell, Runbooków przepływu pracy PowerShell oraz graficznych Runbooków.

Stany zadań — przepływ pracy programu PowerShell

Uwaga

Aby uzyskać informacje o wyświetlaniu lub usuwaniu danych osobowych, zobacz Ogólne żądania podmiotów danych dotyczące RODOAzure Żądania podmiotów danych dotyczące RODO lub Windows żądania podmiotów danych dotyczące RODO w zależności od konkretnego obszaru i potrzeb. Aby uzyskać więcej informacji na temat RODO, zobacz sekcję GDPR centrum zaufania Microsoft oraz sekcję GDPR w portalu zaufania usług.

Środowisko uruchamiania Runbook

Runbooki w Azure Automation mogą być uruchamiane w środowisku piaskownicy w Azure lub Hybrid Runbook Worker.

Gdy elementy Runbook są przeznaczone do uwierzytelniania i uruchamiania względem zasobów w Azure, są uruchamiane w piaskownicy Azure. Azure Automation przypisuje pracownika do wykonania każdego zadania podczas uruchamiania runbooka w środowisku testowym. Chociaż pracownicy są współużytkowani przez wiele kont usługi Automation, zadania z różnych kont usługi Automation są odizolowane od siebie. Zadania korzystające z tej samej piaskownicy są ograniczone zasobami tej piaskownicy. Środowisko piaskownicy Azure nie obsługuje operacji interaktywnych.

Możesz również użyć hybrydowego elementu Runbook Worker do uruchamiania runbooków bezpośrednio na komputerze, który hostuje tę rolę, oraz na zasobach lokalnych w środowisku. Azure Automation przechowuje i zarządza runbookami, a następnie dostarcza je do jednego lub więcej przypisanych komputerów.

Włączenie Azure Firewall w Azure Storage, Azure Key Vault lub Azure SQL blokuje dostęp do tych usług z poziomu runbooków Azure Automation. Dostęp zostanie zablokowany nawet w przypadku włączenia wyjątku zapory zezwalającego na zaufane usługi Microsoft, ponieważ Automatyzacja nie jest częścią listy zaufanych usług. W przypadku włączonej zapory dostęp można uzyskać tylko przy użyciu pracownika hybrydowego Runbook i punktu końcowego usługi wirtualnej sieci.

W poniższej tabeli wymieniono niektóre zadania wykonywania runbooka z zalecanym środowiskiem wykonywania wymienionym dla każdego.

Zadanie Zalecenie Uwagi
Integracja z zasobami Azure piaskownica Azure Uwierzytelnianie hostowane w Azure jest prostsze. Jeśli używasz hybrydowego pracownika Runbook na maszynie wirtualnej Azure, możesz użyć uwierzytelniania Runbook przy użyciu tożsamości zarządzanych.
Uzyskiwanie optymalnej wydajności do zarządzania zasobami Azure piaskownica Azure Skrypt jest uruchamiany w tym samym środowisku, co zapewnia mniejsze opóźnienie.
Minimalizacja kosztów operacyjnych piaskownica Azure Brak kosztów obliczeń i potrzeby korzystania z maszyny wirtualnej.
Uruchom długotrwały skrypt hybrydowy proces roboczy elementu Runbook Azure piaskownice mają limity zasobów.
Interakcja z usługami lokalnymi hybrydowy proces roboczy elementu Runbook Bezpośredni dostęp do maszyny hosta lub zasobów w innych środowiskach w chmurze lub w środowisku lokalnym.
Wymaganie oprogramowania i plików wykonywalnych innych firm hybrydowy proces roboczy elementu Runbook Zarządzasz systemem operacyjnym i możesz instalować oprogramowanie.
Monitoruj plik lub folder za pomocą runbooka hybrydowy proces roboczy elementu Runbook Użyj zadania obserwatora na hybrydowym pracowniku Runbook.
Uruchamianie skryptu intensywnie korzystającego z zasobów hybrydowy proces roboczy elementu Runbook Azure piaskownice mają limity zasobów.
Używanie modułów z określonymi wymaganiami hybrydowy proces roboczy elementu Runbook Oto kilka przykładów:
WinSCP — zależność od winscp.exe
administracji usługami IIS — zależność od włączania usług IIS lub zarządzania nimi
Instalowanie modułu za pomocą instalatora hybrydowy proces roboczy elementu Runbook Moduły dla piaskownicy muszą obsługiwać kopiowanie.
Użyj runbooków lub modułów wymagających wersji .NET Framework innej niż 4.7.2 hybrydowy proces roboczy elementu Runbook Azure piaskownice obsługują .NET Framework 4.7.2 i aktualizacja do innej wersji nie jest możliwa.
Uruchamianie skryptów wymagających podniesienia uprawnień hybrydowy proces roboczy elementu Runbook Piaskownice nie zezwalają na podniesienie uprawnień. Za pomocą hybrydowego Runbook Worker możesz wyłączyć funkcję UAC i użyć polecenia Invoke-Command podczas uruchamiania polecenia, które wymaga podniesionych uprawnień.

Magazyn tymczasowy w piaskownicy

Jeśli musisz utworzyć pliki tymczasowe jako część logiki runbooka, możesz użyć folderu Temp (czyli $env:TEMP) w piaskownicy Azure dla runbooków działających w Azure. Jedynym ograniczeniem jest to, że nie można używać więcej niż 1 GB miejsca na dysku, czyli limitu przydziału dla każdej piaskownicy. Podczas pracy z przepływami pracy programu PowerShell ten scenariusz może powodować problem, ponieważ przepływy pracy programu PowerShell używają punktów kontrolnych, a skrypt może zostać ponowiony w innej piaskownicy.

W piaskownicy hybrydowej można używać C:\temp w zależności od dostępności pamięci na maszynie Hybrid Runbook Worker. Jednak według zaleceń dotyczących maszyn wirtualnych Azure nie należy używać temporary disk (dysku tymczasowego) w systemach Windows lub Linux do przechowywania danych, które muszą być utrwalane.

Zasoby

Runbooki muszą zawierać logikę obsługującą zasoby, na przykład maszyny wirtualne, sieć i zasoby w sieci. Zasoby są powiązane z subskrypcją Azure, a Runbooki wymagają odpowiednich poświadczeń w celu uzyskania dostępu do zasobów. Aby zapoznać się z przykładem obsługi zasobów w runbooku, zobacz Obsługa zasobów.

Zabezpieczenia

Azure Automation używa Microsoft Defender dla Chmury w celu zapewnienia bezpieczeństwa zasobów i wykrywania naruszenia zabezpieczeń w systemach Linux. Zabezpieczenia są zapewniane w ramach obciążeń niezależnie od tego, czy zasoby znajdują się w Azure, czy nie. Zobacz Wprowadzenie do uwierzytelniania w Azure Automation.

Defender dla Chmury nakłada ograniczenia na użytkowników, którzy mogą uruchamiać dowolne skrypty, podpisane lub niepodpisane, na maszynie wirtualnej. Jeśli jesteś użytkownikiem z dostępem głównym do maszyny wirtualnej, musisz jawnie skonfigurować maszynę przy użyciu podpisu cyfrowego lub wyłączyć go. W przeciwnym razie można uruchomić skrypt, aby zastosować aktualizacje systemu operacyjnego po utworzeniu konta usługi Automation i włączeniu odpowiedniej funkcji.

Subskrypcje

Azure subscription jest umową z Microsoft korzystania z co najmniej jednej usługi opartej na chmurze, za którą są naliczane opłaty. Możesz zarządzać wieloma subskrypcjami z tego samego konta usługi Automation, jeśli używane poświadczenia mają dostęp do wielu subskrypcji.

Poświadczenia

Uruchamianie runbooka wymaga odpowiednich poświadczeń w celu uzyskania dostępu do dowolnego zasobu, zarówno dla systemów Azure, jak i systemów innych firm. Te poświadczenia są przechowywane w Azure Automation, Key Vault itp.

Azure Monitor

Azure Automation może korzystać z Azure Monitor do monitorowania operacji maszyny.

Uprawnienia Runbook

Runbook wymaga uprawnień do uwierzytelniania w Azure za pomocą poświadczeń. Zobacz omówienie uwierzytelniania Azure Automation.

Moduły

Azure Automation obejmuje następujące moduły programu PowerShell:

  • Orchestrator.AssetManagement.Cmdlets — zawiera kilka wewnętrznych poleceń cmdlet, które są dostępne tylko podczas wykonywania Runbook w środowisku Azure Sandbox lub na Windows Hybrid Runbook Worker. Te cmdlety są przeznaczone do używania zamiast poleceń cmdlet Azure PowerShell w celu interakcji z zasobami konta Automation.
  • Az.Automation — zalecany moduł programu PowerShell do interakcji z Azure Automation, który zastępuje moduł AzureRM Automation. Moduł Az.Automation nie jest automatycznie dołączany podczas tworzenia konta usługi Automation i trzeba je zaimportować ręcznie.
  • AzureRM.Automation — instalowany domyślnie podczas tworzenia konta usługi Automation.

Obsługiwane są również moduły z możliwością instalacji w oparciu o cmdlety, których wymagają runbooki i konfiguracje DSC. Aby uzyskać szczegółowe informacje o modułach dostępnych dla runbooków i konfiguracji DSC, zobacz Zarządzanie modułami w Azure Automation.

Certyfikaty

Azure Automation używa certyfikatów do uwierzytelniania w Azure lub dodaje je do zasobów Azure lub zewnętrznych. Certyfikaty są bezpiecznie przechowywane dla dostępu przez runbooki i konfiguracje DSC.

Twoje runbooki mogą używać samopodpisanych certyfikatów, które nie są podpisane przez urząd certyfikacji. Zobacz Tworzenie nowego certyfikatu.

Stanowiska

Azure Automation obsługuje środowisko do uruchamiania zadań z tego samego konta usługi Automation. Pojedynczy element Runbook może mieć wiele zadań uruchomionych jednocześnie. Im więcej zadań jest uruchamianych w tym samym czasie, tym częściej mogą być wysyłane do tej samej piaskownicy. W piaskownicy można uruchamiać maksymalnie 10 zadań. Piaskownica zostanie usunięta, gdy nie będą w niej wykonywane żadne zadania; dlatego nie należy jej używać do zapisywania plików.

Zadania uruchomione w tym samym procesie sandbox mogą wpływać na siebie nawzajem. Jednym z przykładów jest uruchomienie polecenia cmdlet Disconnect-AzAccount . Wykonanie tego polecenia cmdlet powoduje rozłączenie każdego zadania elementu Runbook w procesie udostępnionej piaskownicy. Aby zapoznać się z przykładem pracy z tym scenariuszem, zobacz Zapobiegaj współbieżnym zadaniom.

Uwaga

Zadania programu PowerShell uruchomione z runbooka działającego w środowisku piaskownicy Azure mogą nie być uruchamiane w pełnym trybie języka PowerShell.

Stany zadań

W poniższej tabeli opisano stany, które może przyjmować praca. Możesz wyświetlić podsumowanie stanu dla wszystkich zadań elementu Runbook lub przejść do szczegółów określonego zadania elementu Runbook w portalu Azure. Możesz również skonfigurować integrację z obszarem roboczym Log Analytics w celu przekazywania stanu zadań i strumieni zadań dla skryptów automatyzacji. Aby uzyskać więcej informacji na temat integracji z dziennikami Azure Monitor, zobacz Przesyłanie statusu zadań i strumieni zadań z usługi Automation do dzienników Azure Monitor. Zobacz również Uzyskiwanie stanów zadań jako przykład pracy ze statusami w elemencie runbook.

Stan opis
Aktywowanie Zadanie jest aktywowane.
Ukończone Zadanie zostało ukończone pomyślnie.
Niepowodzenie Kompilacja graficznego runbooka lub runbooka PowerShell nie powiodła się. Nie uruchomił się runbook programu PowerShell lub wystąpił wyjątek w zadaniu. Zobacz typy runbooków w Azure Automation.
Niepowodzenie, oczekiwanie na zasoby Zadanie nie powiodło się, ponieważ osiągnięto limit odpowiedniego udziału trzy razy i uruchomiono z tego samego punktu kontrolnego lub od początku elementu Runbook za każdym razem.
Zakolejkowano Zadanie oczekuje na dostępność zasobów dla procesu roboczego automatyzacji, tak aby można było je uruchomić.
Wznawianie System wznowił zadanie po jego wstrzymaniu.
Uruchomione Zadanie jest w toku.
Działa, oczekuje na zasoby Zadanie zostało zatrzymane, ponieważ osiągnęło limit równego podziału. Zostanie ono wkrótce wznowione od ostatniego punktu kontrolnego.
Uruchamianie Zadanie zostało przypisane pracownikowi, a system je uruchamia.
Zatrzymana Zadanie zostało zatrzymane przez użytkownika przed jego ukończeniem.
Zatrzymywanie System zatrzymuje zadanie.
Zawieszony Dotyczy tylko graficznych i przepływu pracy programu PowerShell Runbooków. Zadanie zostało zawieszone przez użytkownika, przez system lub za pomocą polecenia w elemencie Runbook. Jeśli element runbook nie ma punktu kontrolnego, zadanie rozpoczyna się od początku. Jeśli ma punkt kontrolny, można go uruchomić ponownie i wznowić z ostatniego punktu kontrolnego. System zawiesza runbook tylko wtedy, gdy wystąpi wyjątek. Domyślnie zmienna jest ustawiona ErrorActionPreference na Kontynuuj, co oznacza, że zadanie nadal działa w przypadku błędu. Jeśli zmienna preferencji jest ustawiona na Zatrzymaj, zadanie zawiesza się przy wystąpieniu błędu.
Zawieszanie Dotyczy tylko graficznych i przepływu pracy programu PowerShell Runbooków. System próbuje zawiesić zadanie na żądanie użytkownika. Przed zawieszeniem, Runbook musi dotrzeć do swojego następnego punktu kontrolnego. Jeśli minięto już ostatni punkt kontrolny, kończy się zanim może zostać zawieszony.
Nowe Zadanie zostało ostatnio przesłane, ale nie zostało jeszcze aktywowane.

Uwaga

W przypadku awarii infrastruktury zadanie jest ponawiane wewnętrznie przez maksymalnie 3 razy.

Rejestrowanie działań

Wykonywanie runbooków w Azure Automation zapisuje szczegóły w dzienniku aktywności konta Automation. Aby uzyskać szczegółowe informacje na temat korzystania z dziennika, zobacz Pobieranie szczegółów z dziennika aktywności.

Wyjątki

Niniejsza sekcja opisuje różne sposoby obsługi błędów lub sporadycznych problemów w runbookach. Przykładem jest wyjątek WebSocket. Prawidłowa obsługa wyjątków zapobiega temu, by przejściowe błędy sieciowe powodowały niepowodzenie skryptów runbooka.

PreferencjeDziałańBłędu (ErrorActionPreference)

Zmienna ErrorActionPreference określa, jak program PowerShell reaguje na błąd, który nie kończy się. Błędy zakończenia zawsze kończą się i nie mają wpływu na ErrorActionPreferenceelement .

Gdy runbook używa ErrorActionPreference, zwykle niekończący się błąd, taki jak PathNotFound z polecenia cmdlet Get-ChildItem, uniemożliwia ukończenie runbooka. W poniższym przykładzie pokazano użycie metody ErrorActionPreference. Ostateczne polecenie Write-Output nigdy nie jest wykonywane, ponieważ skrypt zatrzymuje się.

$ErrorActionPreference = 'Stop'
Get-ChildItem -path nofile.txt
Write-Output "This message will not show"

Spróbuj złapać wreszcie

Konstrukcja Try Catch Finally jest używana w skryptach programu PowerShell do obsługi błędów końcowych. Skrypt może użyć tego mechanizmu, aby przechwycić określone wyjątki lub wyjątki ogólne. Instrukcja catch powinna służyć do śledzenia lub próby obsługi błędów. Poniższy przykład próbuje pobrać plik, który nie istnieje. Przechwytuje wyjątek System.Net.WebException i zwraca ostatnią wartość dla dowolnego innego wyjątku.

try
{
   $wc = new-object System.Net.WebClient
   $wc.DownloadFile("http://www.contoso.com/MyDoc.doc")
}
catch [System.Net.WebException]
{
    "Unable to download MyDoc.doc from http://www.contoso.com."
}
catch
{
    "An error occurred that could not be resolved."
}

Rzucać

Funkcja Throw może służyć do generowania błędu zakończenia. Ten mechanizm może być przydatny podczas definiowania własnej logiki w elemencie procedury. Jeśli skrypt spełnia kryterium, które powinno go zatrzymać, może użyć instrukcji throw , aby zatrzymać. W poniższym przykładzie użyto tej instrukcji, aby wyświetlić wymagany parametr funkcji.

function Get-ContosoFiles
{
  param ($path = $(throw "The Path parameter is required."))
  Get-ChildItem -Path $path\*.txt -recurse
}

Błędy

Runbooki muszą obsługiwać błędy. Azure Automation obsługuje dwa typy błędów programu PowerShell: końcowe i nieskońcowe.

Krytyczne błędy zatrzymują wykonywanie Runbooku, jeśli się pojawią. Runbook zatrzymuje się ze statusem błędu 'Niepowodzenie'.

Błędy niepowodujące zakończenia umożliwiają kontynuowanie skryptu nawet po ich wystąpieniu. Przykładem niekończącego się błędu jest taki, który występuje, gdy runbook używa polecenia cmdlet Get-ChildItem ze ścieżką, która nie istnieje. Program PowerShell widzi, że ścieżka nie istnieje, zgłasza błąd i kontynuuje następny folder. Błąd w tym przypadku nie zmienia statusu zadania Runbook na Niepowodzenie, a zadanie może nawet zostać ukończone. Aby wymusić zatrzymanie runbooka na błędzie niekończącym, możesz użyć ErrorAction Stop polecenia cmdlet.

Wywoływanie procesów

Runbooki uruchamiane w piaskownicach Azure nie obsługują wywoływania procesów, takich jak pliki wykonywalne (.exe) lub podprocesy. Przyczyną tego jest to, że piaskownica Azure to współużytkowany proces uruchamiany w kontenerze, który może nie mieć dostępu do wszystkich podstawowych interfejsów API. W scenariuszach wymagających oprogramowania innej firmy lub wywołań do podprocesów należy uruchomić runbook na Hybrid Runbook Worker.

Charakterystyka urządzenia i aplikacji

Zadania Runbook w piaskownicach Azure nie mogą uzyskać dostępu do żadnych właściwości urządzenia ani aplikacji. Najbardziej typowym interfejsem API używanym do wykonywania zapytań dotyczących metryk wydajności w Windows jest usługa WMI, a niektóre typowe metryki to pamięć i użycie procesora CPU.

Webhooki

Usługi zewnętrzne, na przykład usługi Azure DevOps i GitHub, mogą uruchamiać element Runbook w Azure Automation. Aby wykonać ten typ uruchamiania, usługa korzysta z webhooka poprzez pojedyncze żądanie HTTP. Użycie webhook'a umożliwia uruchamianie runbook'ów bez implementacji pełnej funkcjonalności Azure Automation.

Współdzielone zasoby

Azure używa koncepcji zwanej "fair share", aby udostępniać zasoby wszystkim runbookom w chmurze. Używając mechanizmu uczciwej alokacji, Azure tymczasowo zwalnia lub zatrzymuje każde zadanie, które działało przez ponad trzy godziny. Zadania dla elementów runbook programu PowerShell oraz Python są zatrzymywane i nie są uruchamiane ponownie, a stan zadania jest zatrzymany.

W przypadku długotrwałych zadań Azure Automation zaleca się użycie Hybrid Runbook Worker. Pracownicy obsługujący hybrydowe Runbooki nie są ograniczani przez zasadę sprawiedliwego podziału i nie mają ograniczenia czasu wykonywania Runbooków. Inne ograniczenia mają zastosowanie zarówno do piaskownic Azure, jak i pracowników Hybrid Runbook. Chociaż hybrydowi pracownicy Runbook nie są ograniczeni przez trzygodzinny limit udostępniania sprawiedliwego, należy opracować runbooki do uruchamiania na pracownikach, które wspierają ponowne uruchomienia na wypadek nieoczekiwanych problemów z infrastrukturą lokalną.

Inną opcją jest zoptymalizowanie runbooku przy użyciu podrzędnych runbooków. Na przykład twój runbook może przechodzić w pętli przez tę samą funkcję w kilku zasobach, na przykład wykonując operację na kilku bazach danych. Możesz przenieść tę funkcję do podrzędnego runbooka i wywołać go za pomocą Start-AzAutomationRunbook. Podrzędne elementy Runbook są wykonywane równolegle w osobnych procesach.

Użycie podrzędnych runbooków zmniejsza całkowity czas potrzebny na zakończenie nadrzędnego runbooka. Twój runbook może użyć polecenia cmdlet Get-AzAutomationJob, aby sprawdzić stan zadania podrzędnego runbooka, jeśli będzie kontynuował działania po jego zakończeniu.

Następne kroki