Samouczek: tworzenie elementu Runbook przepływu pracy programu PowerShell w usłudze Automation
Ten samouczek przeprowadzi Cię przez proces tworzenia elementu Runbook przepływu pracy programu PowerShell w usłudze Azure Automation. Elementy Runbook przepływu pracy programu PowerShell to elementy runbook tekstowe oparte na przepływie pracy programu Windows PowerShell. Kod elementu Runbook można utworzyć i edytować przy użyciu edytora tekstów w witrynie Azure Portal.
Uwaga
Ten artykuł dotyczy tylko programu PowerShell 5.1. Wersje programu PowerShell 7+ nie obsługują przepływów pracy, a nieaktualne elementy Runbook nie mogą być aktualizowane. Zalecamy używanie tekstowych elementów Runbook programu PowerShell 7.2 na potrzeby zaawansowanych funkcji, takich jak równoległe wykonywanie zadań. Dowiedz się więcej o ograniczeniach elementów Runbook przepływu pracy programu PowerShell.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Tworzenie elementu runbook przepływu pracy programu PowerShell
- Testowanie i publikowanie elementu Runbook
- Uruchamianie i śledzenie stanu zadania elementu Runbook
- Dodawanie uwierzytelniania w celu zarządzania zasobami platformy Azure
- Aktualizowanie parametrów elementu Runbook w celu uruchomienia maszyny wirtualnej platformy Azure
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wymagania wstępne
- Konto usługi Azure Automation z co najmniej jedną tożsamością zarządzaną przypisaną przez użytkownika. Aby uzyskać więcej informacji, zobacz Włączanie tożsamości zarządzanej.
- Moduły Az:
Az.Accounts
iAz.Compute
zaimportowane na konto usługi Automation. Aby uzyskać więcej informacji, zobacz Importuj moduły platformy Azure. - Co najmniej dwie maszyny wirtualne platformy Azure. Ponieważ zatrzymasz i uruchomisz te maszyny, nie powinny one być produkcyjnymi maszynami wirtualnymi.
- Moduł Azure Az programu PowerShell zainstalowany na maszynie. Aby zainstalować lub uaktualnić, zobacz Jak zainstalować moduł Azure Az programu PowerShell.
Przypisywanie uprawnień do tożsamości zarządzanych
Przypisz uprawnienia do odpowiedniej tożsamości zarządzanej, aby umożliwić jej zatrzymanie maszyny wirtualnej. Element Runbook może używać przypisanej przez system tożsamości zarządzanej konta usługi Automation lub tożsamości zarządzanej przypisanej przez użytkownika. Podano kroki przypisywania uprawnień do każdej tożsamości. Poniższe kroki korzystają z witryny Azure Portal. Jeśli wolisz używać programu PowerShell, zobacz Przypisywanie ról platformy Azure przy użyciu programu Azure PowerShell.
Zaloguj się do witryny Azure Portal i przejdź do swojego konta usługi Automation.
W obszarze Ustawienia konta wybierz pozycję Tożsamość (wersja zapoznawcza).
Na karcie Przypisane przez system w obszarze Uprawnienia wybierz pozycję Przypisania ról platformy Azure, aby otworzyć stronę Przypisania ról platformy Azure.
Wybierz pozycję + Dodaj przypisanie roli (wersja zapoznawcza), aby otworzyć stronę Dodawanie przypisania roli (wersja zapoznawcza).
Wybierz odpowiednie wartości.
Właściwości Description Scope Zakres to zestaw zasobów, do których ma zastosowanie przypisanie roli. Z listy rozwijanej wybierz pozycję Grupa zasobów. Subskrypcja To pole powinno zostać wypełnione automatycznie subskrypcją. Grupa zasobów Z listy rozwijanej wybierz grupę zasobów, aby przyznać uprawnienia tożsamości. Rola Z listy rozwijanej wybierz pozycję Użytkownik usługi DevTest Labs. Wybierz pozycję Zapisz, a następnie zamknij stronę Przypisania ról platformy Azure, aby powrócić do karty Przypisane przez system.
Wybierz kartę Użytkownik przypisany .
Wybierz tożsamość zarządzaną przypisaną przez użytkownika z listy, aby otworzyć stronę Tożsamość zarządzana.
Zanotuj identyfikator klienta do późniejszego użycia.
W menu po lewej stronie wybierz pozycję Przypisania ról platformy Azure, a następnie pozycję + Dodaj przypisanie roli (wersja zapoznawcza), aby otworzyć stronę Dodawanie przypisania roli (wersja zapoznawcza).
Wybierz odpowiednie wartości.
Właściwości Description Scope Z listy rozwijanej wybierz pozycję Grupa zasobów. Subskrypcja To pole powinno zostać wypełnione automatycznie subskrypcją. Grupa zasobów Z listy rozwijanej wybierz grupę zasobów, aby przyznać uprawnienia tożsamości. Rola Z listy rozwijanej wybierz pozycję Użytkownik usługi DevTest Labs. Wybierz pozycję Zapisz, a następnie zamknij stronę Przypisania ról platformy Azure, aby powrócić do karty Przypisane przez użytkownika.
Tworzenie nowego elementu Runbook
Zacznij od utworzenia prostego elementu Runbook przepływu pracy programu PowerShell. Jedną z zalet przepływów pracy programu Windows PowerShell jest możliwość równoległego wykonywania zestawu poleceń zamiast sekwencyjnie, jak w przypadku typowego skryptu.
Uwaga
W przypadku tworzenia elementu Runbook w wersji jest nowe środowisko w witrynie Azure Portal. Po wybraniu bloku> Elementy Runbook Utwórz element Runbook zostanie otwarta nowa strona Tworzenie elementu Runbook z odpowiednimi opcjami.
Na stronie otwartego konta usługi Automation w obszarze Automatyzacja procesów wybierz pozycję Elementy Runbook
Wybierz pozycję + Utwórz element Runbook.
- Nadaj elementowi runbook nazwę . Na przykład przetestuj.
- Z menu rozwijanego Typ elementu Runbook wybierz pozycję Przepływ pracy programu PowerShell.
- Z listy rozwijanej Wersja środowiska uruchomieniowego wybierz pozycję 5.1.
- Wprowadź odpowiedni opis.
- Wybierz pozycję Utwórz.
Dodawanie kodu do elementu Runbook
Możesz wpisać kod bezpośrednio w elemecie Runbook lub wybrać polecenia cmdlet, elementy Runbook i elementy zawartości z kontrolki Biblioteka i dodać je do elementu Runbook z dowolnymi powiązanymi parametrami. W tym samouczku wpiszesz kod bezpośrednio w ramach elementu Runbook.
Element Runbook jest obecnie pusty tylko z wymaganym workflow
słowem kluczowym, nazwą elementu Runbook i nawiasami klamrowymi, które otaczają cały przepływ pracy.
workflow MyFirstRunbook-Workflow
{
}
Możesz użyć słowa kluczowego
Parallel
, aby utworzyć blok skryptu z wieloma poleceniami, które będą uruchamiane współbieżnie. Wprowadź następujący kod między nawiasami klamrowymi:parallel { Write-Output "Parallel" Get-Date Start-Sleep -Seconds 3 Get-Date } Write-Output " `r`n" Write-Output "Non-Parallel" Get-Date Start-Sleep -Seconds 3 Get-Date
Zapisz element Runbook, wybierając pozycję Zapisz.
Testowanie elementu runbook
Przed opublikowaniem elementu Runbook w celu udostępnienia go w środowisku produkcyjnym należy go przetestować, aby upewnić się, że działa prawidłowo. Testowanie elementu Runbook uruchamia wersję roboczą i umożliwia interaktywne wyświetlanie danych wyjściowych.
Wybierz pozycję Okienko testu, aby otworzyć stronę Test .
Wybierz pozycję Rozpocznij , aby rozpocząć test. Zostanie utworzone zadanie elementu Runbook, a jego stan zostanie wyświetlony w okienku.
Stan zadania jest uruchamiany jako W kolejce, co oznacza, że zadanie oczekuje na udostępnienie procesu roboczego elementu Runbook w chmurze. Stan zmieni się na Uruchamianie, gdy proces roboczy twierdzi, że zadanie. Na koniec stan zmieni się na Uruchomiono, gdy element Runbook rzeczywiście zacznie działać.
Po zakończeniu zadania elementu Runbook na stronie Test zostaną wyświetlone jego dane wyjściowe. Dane wyjściowe powinny wyglądać podobnie do poniższej ilustracji:
Przejrzyj dane wyjściowe. Wszystkie elementy w bloku, w
Parallel
tymStart-Sleep
polecenie, są wykonywane w tym samym czasie. Te same polecenia pozaParallel
blokiem zostały uruchomione sekwencyjnie, jak pokazano na podstawie różnych sygnatur daty i godziny.Zamknij stronę Test, aby powrócić do kanwy.
Publikowanie i uruchamianie elementu Runbook
Utworzony element Runbook jest nadal w trybie roboczym. Przed uruchomieniem go w środowisku produkcyjnym trzeba go opublikować. Podczas publikowania elementu Runbook można zastąpić istniejącą wersję opublikowaną wersją roboczą. W tym przypadku nie ma jeszcze wersji opublikowanej, ponieważ element runbook został dopiero utworzony.
Wybierz pozycję Publikuj, aby opublikować element Runbook, a następnie pozycję Tak po wyświetleniu monitu.
W polu Stan jest teraz wyświetlana wartość Opublikowano. Przejrzyj opcje u góry, które umożliwiają teraz uruchomienie elementu Runbook, zaplanowanie przyszłego czasu rozpoczęcia lub utworzenie elementu webhook w celu uruchomienia elementu Runbook za pośrednictwem wywołania HTTP. Aby uruchomić element runbook, kliknij pozycję Uruchom, a następnie pozycję Tak po wyświetleniu monitu.
Zostanie otwarta strona Zadanie dla utworzonego zadania elementu Runbook. W takim przypadku pozostaw otwartą stronę, aby można było obserwować postęp zadania. Pole Stan odpowiada stanom wyświetlanym podczas testowania elementu Runbook.
Gdy stan elementu Runbook będzie wyświetlany jako Ukończono, wybierz pozycję Dane wyjściowe. Dane wyjściowe powinny wyglądać podobnie jak dane wyjściowe testu.
Zamknij stronę Zadanie, aby powrócić do strony Przegląd elementu Runbook.
W obszarze Zasoby wybierz pozycję Zadania. Ta strona zawiera listę wszystkich zadań utworzonych przez element Runbook. Powinno zostać wyświetlone tylko jedno zadanie, ponieważ zadanie zostało uruchomione tylko raz.
Wybierz zadanie, aby otworzyć tę samą stronę Zadania , która została wyświetlona podczas uruchamiania elementu Runbook. Użyj tej strony, aby wyświetlić szczegóły każdego zadania utworzonego dla elementu Runbook. Zamknij stronę Zadanie, aby powrócić do strony Przegląd elementu Runbook.
Dodawanie uwierzytelniania w celu zarządzania zasobami platformy Azure
Element runbook został przetestowany i opublikowany, ale jak do tej pory nie wykonuje on żadnych użytecznych czynności. Powinien zarządzać zasobami platformy Azure. Nie można tego zrobić, chyba że uwierzytelnia się przy użyciu poświadczeń subskrypcji. Element Runbook używa przypisanej przez system tożsamości zarządzanej konta usługi Automation do uwierzytelniania na platformie Azure w celu wykonania akcji zarządzania względem maszyny wirtualnej. Element Runbook można łatwo zmodyfikować w celu używania tożsamości zarządzanej przypisanej przez użytkownika.
Wybierz pozycję Przegląd, a następnie pozycję Edytuj, aby otworzyć edytor tekstu.
Zastąp istniejący kod następującym kodem:
workflow MyFirstRunbook-Workflow { $resourceGroup = "resourceGroupName" # Ensures you do not inherit an AzContext in your runbook Disable-AzContextAutosave -Scope Process # Connect to Azure with system-assigned managed identity Connect-AzAccount -Identity # set and store context $AzureContext = Set-AzContext -SubscriptionId "<SubscriptionID>" }
Edytuj zmienną
$resourceGroup
z prawidłową wartością reprezentującą grupę zasobów.Jeśli chcesz, aby element Runbook był wykonywany przy użyciu tożsamości zarządzanej przypisanej przez system, pozostaw kod w stanie rzeczywistym. Jeśli wolisz użyć tożsamości zarządzanej przypisanej przez użytkownika, wykonaj:
- Z wiersza 9 usuń
Connect-AzAccount -Identity
element , - Zastąp go ciągiem
Connect-AzAccount -Identity -AccountId <ClientId>
, i - Wprowadź uzyskany wcześniej identyfikator klienta.
- Z wiersza 9 usuń
Wybierz pozycję Zapisz , a następnie okienko Testuj.
Wybierz pozycję Rozpocznij , aby rozpocząć test. Po zakończeniu powinny zostać wyświetlone dane wyjściowe podobne do poniższych, wyświetlając podstawowe informacje z twojego konta. Ta akcja potwierdza, że poświadczenie jest prawidłowe.
Zamknij stronę Test, aby powrócić do kanwy.
Dodawanie kodu w celu uruchomienia maszyny wirtualnej
Teraz, gdy element Runbook uwierzytelnia się w subskrypcji platformy Azure, możesz zarządzać zasobami. Dodaj polecenie , aby uruchomić maszynę wirtualną. Możesz wybrać dowolną maszynę wirtualną w ramach subskrypcji platformy Azure, a na razie trwale utworzysz tę nazwę w elemecie Runbook.
Dodaj poniższy kod jako ostatni wiersz bezpośrednio przed zamykającym nawiasem klamrowym. Zastąp
VMName
wartość rzeczywistą nazwą maszyny wirtualnej.Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
Przetestuj element Runbook i upewnij się, że maszyna wirtualna została uruchomiona. Następnie wróć do kanwy.
Dodawanie parametrów wejściowych do elementu Runbook
Element Runbook uruchamia obecnie maszynę wirtualną, która została zakodowana na stałe w elemecie Runbook. Będzie to bardziej przydatne, jeśli można określić maszynę wirtualną po uruchomieniu elementu Runbook. Dodaj parametry wejściowe do elementu Runbook, aby zapewnić te funkcje.
Zastąp wiersz 3,
$resourceGroup = "resourceGroupName"
, następującym kodem:Param( [string]$resourceGroup, [string]$VMName )
Zastąp poprzednie
Start-AzVM
polecenie następującym kodem:Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
Przetestuj element Runbook i upewnij się, że maszyna wirtualna została uruchomiona. Następnie wróć do kanwy.
Zarządzanie wieloma maszynami wirtualnymi jednocześnie
Konstrukcji można używać do przetwarzania ForEach -Parallel
poleceń dla każdego elementu w kolekcji jednocześnie. Popraw kod, aby element Runbook był teraz:
- Zaakceptuj kolekcję nazw maszyn wirtualnych,
- Zaakceptuj parametr, aby zatrzymać lub uruchomić maszyny wirtualne i
- Wykonywanie akcji równolegle ze wszystkimi maszynami wirtualnymi
Zastąp cały istniejący kod następującym kodem:
workflow MyFirstRunbook-Workflow { param ( [string]$resourceGroup, [string[]]$VMs, [string]$action ) # Ensures you do not inherit an AzContext in your runbook Disable-AzContextAutosave -Scope Process # Connect to Azure with system-assigned managed identity Connect-AzAccount -Identity # set and store context $AzureContext = Set-AzContext -SubscriptionId "<SubscriptionID>" # Start or stop VMs in parallel if ($action -eq "Start") { ForEach -Parallel ($vm in $VMs) { Start-AzVM -Name $vm -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext } } elseif ($action -eq "Stop") { ForEach -Parallel ($vm in $VMs) { Stop-AzVM -Name $vm -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext -Force } } else { Write-Output "`r`n Action not allowed. Please enter 'stop' or 'start'." } }
Jeśli chcesz, aby element Runbook był wykonywany przy użyciu tożsamości zarządzanej przypisanej przez system, pozostaw kod w stanie rzeczywistym. Jeśli wolisz użyć tożsamości zarządzanej przypisanej przez użytkownika, wykonaj:
- Z wiersza 9 usuń
Connect-AzAccount -Identity
element , - Zastąp go ciągiem
Connect-AzAccount -Identity -AccountId <ClientId>
, i - Wprowadź uzyskany wcześniej identyfikator klienta.
- Z wiersza 9 usuń
Wybierz pozycję Zapisz, a następnie pozycję Publikuj, a następnie pozycję Tak po wyświetleniu monitu.
Na stronie Przegląd wybierz pozycję Uruchom.
Wypełnij parametry, a następnie wybierz przycisk OK.
Parametr Opis RESOURCEGROUP Wprowadź nazwę grupy zasobów maszyn wirtualnych. Maszyny wirtualne Wprowadź nazwy maszyn wirtualnych przy użyciu następującej składni: ["VM1","VM2","VM3"]
Akcja Wprowadź stop
lubstart
.Przejdź do listy maszyn wirtualnych i odśwież stronę co kilka sekund. Zwróć uwagę, że akcja dla każdej maszyny wirtualnej odbywa się równolegle. Bez słowa kluczowego
-Parallel
akcje byłyby wykonywane sekwencyjnie. Podczas gdy maszyny wirtualne będą uruchamiane równolegle, każda maszyna wirtualna może przejść do fazy Uruchomione nieco inaczej w zależności od cech każdej maszyny wirtualnej.
Czyszczenie zasobów
Jeśli nie zamierzasz nadal korzystać z tego elementu Runbook, usuń go, wykonując następujące czynności:
- Przejdź do konta usługi Automation.
- W obszarze Automatyzacja procesów wybierz pozycję Elementy Runbook.
- Wybierz element Runbook.
- Na stronie Przegląd elementu Runbook wybierz pozycję Usuń.
Następne kroki
W tym samouczku utworzono element Runbook przepływu pracy programu PowerShell. Aby zapoznać się z elementami Runbook języka Python 3, zobacz: