Udostępnij za pośrednictwem


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

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.

  1. Zaloguj się do witryny Azure Portal i przejdź do swojego konta usługi Automation.

  2. W obszarze Ustawienia konta wybierz pozycję Tożsamość (wersja zapoznawcza).

  3. Na karcie Przypisane przez system w obszarze Uprawnienia wybierz pozycję Przypisania ról platformy Azure, aby otworzyć stronę Przypisania ról platformy Azure.

    Wybieranie przypisań ról platformy Azure w portalu.

  4. Wybierz pozycję + Dodaj przypisanie roli (wersja zapoznawcza), aby otworzyć stronę Dodawanie przypisania roli (wersja zapoznawcza).

    Dodaj przypisania ról w portalu.

  5. 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.
  6. Wybierz pozycję Zapisz, a następnie zamknij stronę Przypisania ról platformy Azure, aby powrócić do karty Przypisane przez system.

  7. Wybierz kartę Użytkownik przypisany .

  8. Wybierz tożsamość zarządzaną przypisaną przez użytkownika z listy, aby otworzyć stronę Tożsamość zarządzana.

    Wybieranie tożsamości zarządzanej przypisanej przez użytkownika w portalu.

  9. Zanotuj identyfikator klienta do późniejszego użycia.

    Wyświetlanie identyfikatora klienta tożsamości zarządzanej w portalu

  10. 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).

    Dodaj przypisania ról w portalu dla tożsamości przypisanej przez użytkownika.

  11. 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.
  12. 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.

  1. Na stronie otwartego konta usługi Automation w obszarze Automatyzacja procesów wybierz pozycję Elementy Runbook

    Tworzenie elementu Runbook przepływu pracy programu PowerShell z poziomu portalu

  2. Wybierz pozycję + Utwórz element Runbook.

    1. Nadaj elementowi runbook nazwę . Na przykład przetestuj.
    2. Z menu rozwijanego Typ elementu Runbook wybierz pozycję Przepływ pracy programu PowerShell.
    3. Z listy rozwijanej Wersja środowiska uruchomieniowego wybierz pozycję 5.1.
    4. Wprowadź odpowiedni opis.
    5. Wybierz pozycję Utwórz.

    Opcje elementu runbook przepływu pracy programu PowerShell z portalu

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
{
}
  1. 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
    
  2. 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.

  1. Wybierz pozycję Okienko testu, aby otworzyć stronę Test .

  2. 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ć.

  3. 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:

    Dane wyjściowe równoległe elementu Runbook przepływu pracy programu PowerShell

    Przejrzyj dane wyjściowe. Wszystkie elementy w bloku, w Parallel tym Start-Sleep polecenie, są wykonywane w tym samym czasie. Te same polecenia poza Parallel blokiem zostały uruchomione sekwencyjnie, jak pokazano na podstawie różnych sygnatur daty i godziny.

  4. 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.

  1. Wybierz pozycję Publikuj, aby opublikować element Runbook, a następnie pozycję Tak po wyświetleniu monitu.

  2. 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.

    Strona przeglądu elementu Runbook przepływu pracy programu PowerShell

  3. 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.

    Zrzut ekranu przedstawiający stronę zadania elementu Runbook.

  4. 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.

  5. Zamknij stronę Zadanie, aby powrócić do strony Przegląd elementu Runbook.

  6. 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.

  7. 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.

  1. Wybierz pozycję Przegląd, a następnie pozycję Edytuj, aby otworzyć edytor tekstu.

  2. 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.

  3. 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:

    1. Z wiersza 9 usuń Connect-AzAccount -Identityelement ,
    2. Zastąp go ciągiem Connect-AzAccount -Identity -AccountId <ClientId>, i
    3. Wprowadź uzyskany wcześniej identyfikator klienta.
  4. Wybierz pozycję Zapisz , a następnie okienko Testuj.

  5. 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.

    Podstawowe informacje potwierdzające poświadczenia.

  6. 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.

  1. 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
    
  2. 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.

  1. Zastąp wiersz 3, $resourceGroup = "resourceGroupName", następującym kodem:

    Param(
        [string]$resourceGroup,
        [string]$VMName
    )
    
  2. Zastąp poprzednie Start-AzVM polecenie następującym kodem:

    Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  3. 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
  1. 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'."
    	}
    }
    
  2. 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:

    1. Z wiersza 9 usuń Connect-AzAccount -Identityelement ,
    2. Zastąp go ciągiem Connect-AzAccount -Identity -AccountId <ClientId>, i
    3. Wprowadź uzyskany wcześniej identyfikator klienta.
  3. Wybierz pozycję Zapisz, a następnie pozycję Publikuj, a następnie pozycję Tak po wyświetleniu monitu.

  4. Na stronie Przegląd wybierz pozycję Uruchom.

  5. 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 lub start.
  6. 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:

  1. Przejdź do konta usługi Automation.
  2. W obszarze Automatyzacja procesów wybierz pozycję Elementy Runbook.
  3. Wybierz element Runbook.
  4. 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: