Oktatóanyag: PowerShell-munkafolyamat-forgatókönyv létrehozása az Automationben

Egy Azure Automation PowerShell-alapú munkafolyamat-forgatókönyv létrehozását bemutató oktatóanyag. A PowerShell-munkafolyamat-runbookok a Windows PowerShell-munkafolyamaton alapuló forgatókönyvek. A runbook kódját az Azure Portal szövegszerkesztőjével hozhatja létre és szerkesztheti.

Megjegyzés:

Ez a cikk a PowerShell 5.1-hez használható; A PowerShell 7.1 (előzetes verzió) és a PowerShell 7.2 nem támogatja a munkafolyamatokat.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • PowerShell-alapú munkafolyamati runbook létrehozása
  • A runbook tesztelése és közzététele
  • A runbook-feladat állapotának futtatása és nyomon követése
  • Hitelesítés hozzáadása az Azure-erőforrások kezeléséhez
  • Runbook-paraméterek frissítése Azure-beli virtuális gép indításához

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

Engedélyek hozzárendelése felügyelt identitásokhoz

Rendeljen engedélyeket a megfelelő felügyelt identitáshoz , hogy lehetővé tegye a virtuális gép leállítását. A runbook használhatja az Automation-fiók rendszer által hozzárendelt felügyelt identitását vagy egy felhasználó által hozzárendelt felügyelt identitást. A lépések meg vannak adva az egyes identitásokhoz való engedélyek hozzárendeléséhez. Az alábbi lépések az Azure Portalt használják. Ha inkább a PowerShellt szeretné használni, olvassa el az Azure-szerepkörök hozzárendelése az Azure PowerShell használatával című témakört.

  1. Jelentkezzen be az Azure Portalra , és lépjen az Automation-fiókjához.

  2. A Fiók Gépház területen válassza az Identitás (előzetes verzió) lehetőséget.

  3. A Rendszer hozzárendelt lap Engedélyek csoportjában válassza az Azure-szerepkör-hozzárendelések lehetőséget az Azure-szerepkör-hozzárendelések lap megnyitásához.

    Selecting Azure role assignments in portal.

  4. Válassza a + Szerepkör-hozzárendelés hozzáadása (előzetes verzió) lehetőséget a Szerepkör-hozzárendelés hozzáadása (előzetes verzió) lap megnyitásához.

    Add role assignments in portal.

  5. Válassza ki a megfelelő értékeket.

    Property Leírás
    Scope A hatókör olyan erőforrások készlete, amelyekre a szerepkör-hozzárendelés vonatkozik. A legördülő listában válassza az Erőforráscsoport lehetőséget.
    Előfizetés Ezt a mezőt automatikusan ki kell tölteni az előfizetésével.
    Erőforráscsoport A legördülő listában válassza ki az erőforráscsoportot az identitásengedélyek átadásához.
    Szerepkör A legördülő listában válassza a DevTest Labs-felhasználó lehetőséget.
  6. Válassza a Mentés lehetőséget, majd zárja be az Azure-szerepkör-hozzárendelések lapot a rendszer által hozzárendelt lapra való visszatéréshez.

  7. Válassza a Felhasználó által hozzárendelt lapot.

  8. Válassza ki a felhasználó által hozzárendelt felügyelt identitást a listából a Felügyelt identitás lap megnyitásához.

    Selecting user-assigned managed identity in portal.

  9. Jegyezze fel az ügyfél-azonosítót későbbi használatra.

    Showing Client ID for managed identity in portal

  10. A bal oldali menüben válassza az Azure-szerepkör-hozzárendelések, majd a + Szerepkör-hozzárendelés hozzáadása (előzetes verzió) lehetőséget a szerepkör-hozzárendelés hozzáadása (előzetes verzió) lap megnyitásához.

    Add role assignments in portal for user-assigned identity.

  11. Válassza ki a megfelelő értékeket.

    Property Leírás
    Scope A legördülő listában válassza az Erőforráscsoport lehetőséget.
    Előfizetés Ezt a mezőt automatikusan ki kell tölteni az előfizetésével.
    Erőforráscsoport A legördülő listában válassza ki az erőforráscsoportot az identitásengedélyek átadásához.
    Szerepkör A legördülő listában válassza a DevTest Labs-felhasználó lehetőséget.
  12. Válassza a Mentés lehetőséget, majd zárja be az Azure-szerepkör-hozzárendelések lapot a Felhasználó által hozzárendelt lapra való visszatéréshez.

Új runbook létrehozása

Először hozzon létre egy egyszerű PowerShell-munkafolyamat-forgatókönyvet. A Windows PowerShell-munkafolyamatok egyik előnye, hogy egy parancskészletet párhuzamosan hajthat végre, nem pedig egymás után, mint egy tipikus szkript esetén.

Megjegyzés:

A kiadási runbook létrehozása új felhasználói élményt nyújt az Azure Portalon. Amikor a Runbookok panelt >választja: Runbook létrehozása, megnyílik egy új lap: Runbook létrehozása a megfelelő beállításokkal.

  1. A megnyitott Automation-fióklap Folyamatautomatizálás területén válassza a Runbookok lehetőséget

    Create PowerShell workflow runbook from portal

  2. Válassza a + Runbook létrehozása lehetőséget.

    1. Nevezze el a runbookot. Például tesztelje.
    2. A Runbook típusa legördülő menüben válassza a PowerShell-munkafolyamat lehetőséget.
    3. A Futtatókörnyezet verzió legördülő menüjében válassza az 5.1-es elemet.
    4. Adja meg a vonatkozó leírást.
    5. Válassza a Létrehozás lehetőséget.

    PowerShell workflow runbook options from portal

Kód hozzáadása a runbookhoz

Beírhatja a kódot közvetlenül a runbookba, vagy kiválaszthatja a parancsmagokat, runbookokat és objektumokat a Könyvtár vezérlőelemből, és hozzáadhatja őket a runbookhoz bármilyen kapcsolódó paraméterrel. Ebben az oktatóanyagban közvetlenül a runbookba írja be a kódot.

A runbook jelenleg üres, csak a szükséges Workflow kulcsszóval, a runbook nevével és a teljes munkafolyamatot tartalmazó zárójelekkel.

Workflow MyFirstRunbook-Workflow
{
}
  1. A kulcsszóval Parallel több parancsot tartalmazó szkriptblokkot hozhat létre, amelyek egyidejűleg futnak. Adja meg a következő kódot a zárójelek között :

    Parallel {
         Write-Output "Parallel"
         Get-Date
         Start-Sleep -s 3
         Get-Date
     }
    
    Write-Output " `r`n"
    Write-Output "Non-Parallel"
    Get-Date
    Start-Sleep -s 3
    Get-Date
    
  2. Mentse a runbookot a Mentés gombra kattintva.

A runbook tesztelése

Mielőtt közzétennénk a runbookot, hogy éles környezetben elérhetővé tegyük, tesztelje, hogy megfelelően működik-e. A runbook tesztelése futtatja a Piszkozat verzióját, és lehetővé teszi a kimenet interaktív megtekintését.

  1. Válassza a Teszt panelt a Teszt lap megnyitásához.

  2. A teszt elindításához válassza a Start elemet. Létrejön egy runbook-feladat , amelynek állapota megjelenik a panelen.

    A feladat állapota üzenetsorként kezdődik, ami azt jelzi, hogy a feladat arra vár, hogy a felhőben egy runbook-feldolgozó elérhetővé váljon. Az állapot akkor változik, amikor egy feldolgozó a feladatot jogcímként állítja be. Végül az állapot akkor lesz futtatva, amikor a runbook ténylegesen elindul.

  3. Amikor a runbook-feladat befejeződik, a Teszt lap megjeleníti a kimenetét. A kimenetnek a következő képhez hasonlóan kell kinéznie:

    PowerShell workflow runbook parallel output

    Tekintse át a kimenetet. A blokk minden elemét Parallel , beleértve a Start-Sleep parancsot is, egyszerre hajtja végre. A blokkon kívüli Parallel parancsok egymás után futottak, ahogy a különböző dátumidőbélyegek is mutatják.

  4. Zárja be a Teszt lapot a vászonra való visszatéréshez.

A runbook közzététele és indítása

A létrehozott runbook még Piszkozat módban van. Mielőtt az éles környezetben futtathatná, közzé kell tennie. Amikor elérhetővé tesz egy forgatókönyvet, felülírja a Közzétett verziót a Piszkozattal. Ebben az esetben még nincs Közzétett verzió, mivel még csak most hozta létre a runbookot.

  1. Válassza a Közzététel lehetőséget a runbook közzétételéhez, majd a rendszer kéri az Igen lehetőséget.

  2. Az Állapot mezőben megjelenik a Közzétett mező. Tekintse át a felül látható beállításokat, amelyekkel elindíthatja a runbookot, ütemezhet egy későbbi kezdési időpontot, vagy létrehozhat egy webhookot , hogy a runbook http-hívással indítható legyen. A runbook elindításához kattintson az Indítás, majd az Igen gombra, amikor a rendszer rákérdez.

    PowerShell workflow runbook overview page

  3. Megnyílik egy feladatlap a létrehozott runbook-feladathoz. Ebben az esetben hagyja nyitva az oldalt, hogy megnézhesse a feladat előrehaladását. Az Állapot mező megegyezik a runbook tesztelése során látott állapotokkal.

    Screenshot of the runbook Job page.

  4. Miután a runbook állapota befejeződött, válassza a Kimenet lehetőséget. A kimenetnek a tesztkimenethez hasonlóan kell kinéznie.

  5. Zárja be a Feladat lapot a runbook áttekintési lapjára való visszatéréshez.

  6. Az Erőforrások területen válassza a Feladatok lehetőséget. Ez a lap felsorolja a runbook által létrehozott összes feladatot. Csak egy feladatot kell látnia a listában, mivel a feladatot csak egyszer futtatta.

  7. Válassza ki a feladatot a runbook indításakor megtekintett feladatlap megnyitásához. Ezen a lapon megtekintheti a runbookhoz létrehozott feladatok részleteit. Zárja be a Feladat lapot a runbook áttekintési lapjára való visszatéréshez.

Hitelesítés hozzáadása az Azure-erőforrások kezeléséhez

Most már befejeződött a runbook tesztelése és közzététele, de még nem csinál semmi hasznosat. Azt szeretnénk, hogy Azure-erőforrásokat kezeljen. Ezt csak akkor teheti meg, ha az előfizetés hitelesítő adataival hitelesít. A runbook az Automation-fiók rendszer által hozzárendelt felügyelt identitásával hitelesíti az Azure-t a virtuális gép felügyeleti műveletének végrehajtásához. A runbook könnyen módosítható úgy, hogy felhasználó által hozzárendelt felügyelt identitást használjon.

  1. Válassza az Áttekintés , majd a Szerkesztés lehetőséget a szöveges szerkesztő megnyitásához.

  2. Cserélje le a meglévő kódot a következőre:

    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>"
    }
    

    Szerkessze a változót $resourceGroup az erőforráscsoportot képviselő érvényes értékkel.

  3. Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja meg a kódot. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:

    1. A 9. sorból távolítsa el Connect-AzAccount -Identitya
    2. Cserélje le a Connect-AzAccount -Identity -AccountId <ClientId>
    3. Adja meg a korábban beszerzett ügyfél-azonosítót.
  4. Válassza a Mentés , majd a Tesztelés panelt.

  5. A teszt elindításához válassza a Start elemet. A befejezés után az alábbihoz hasonló kimenetnek kell megjelennie, amely alapvető információkat jelenít meg a fiókjából. Ez a művelet megerősíti, hogy a hitelesítő adatok érvényesek.

    Basic information that confirms credentials.

  6. Zárja be a Teszt lapot a vászonra való visszatéréshez.

Kód hozzáadása virtuális gép indításához

Most, hogy a runbook hitelesíti az Azure-előfizetést, kezelheti az erőforrásokat. Adjon hozzá egy parancsot egy virtuális gép indításához. Az Azure-előfizetésben bármelyik virtuális gépet kiválaszthatja, és egyelőre ezt a nevet is meg kell adnia a runbookban.

  1. Adja hozzá az alábbi kódot az utolsó sorként közvetlenül a záró zárójel előtt. Cserélje le VMName a virtuális gép tényleges nevére.

    Start-AzVM -Name "VMName" -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  2. Tesztelje a runbookot, és győződjön meg arról, hogy a virtuális gép elindult. Ezután térjen vissza a vászonra.

Bemeneti paraméterek hozzáadása a runbookhoz

A runbook jelenleg elindítja a runbookban rögzített virtuális gépet. Hasznosabb lesz, ha megadhatja a virtuális gépet a runbook indításakor. Adjon hozzá bemeneti paramétereket a runbookhoz a funkció biztosításához.

  1. Cserélje le a 3 $resourceGroup = "resourceGroupName". sort a következőre:

    Param(
        [string]$resourceGroup,
        [string]$VMName
    )
    
  2. Cserélje le az előző Start-AzVM parancsot a következőre:

    Start-AzVM -Name $VMName -ResourceGroupName $resourceGroup -DefaultProfile $AzureContext
    
  3. Tesztelje a runbookot, és győződjön meg arról, hogy a virtuális gép elindult. Ezután térjen vissza a vászonra.

Egyszerre több virtuális gép kezelése

A ForEach -Parallel szerkezettel egyszerre dolgozhatja fel a gyűjtemény egyes elemeihez tartozó parancsokat. Módosítsa a kódot úgy, hogy a runbook most a következő legyen:

  • Virtuálisgép-nevek gyűjteményének elfogadása,
  • Adjon meg egy paramétert a virtuális gépek leállításához vagy elindításához, és
  • A műveletek végrehajtása párhuzamosan az összes virtuális gépen
  1. Cserélje le az összes meglévő kódot a következőre:

    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. Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja meg a kódot. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:

    1. A 9. sorból távolítsa el Connect-AzAccount -Identitya
    2. Cserélje le a Connect-AzAccount -Identity -AccountId <ClientId>
    3. Adja meg a korábban beszerzett ügyfél-azonosítót.
  3. Válassza a Mentés, majd a Közzététel, majd az Igen lehetőséget, amikor a rendszer kéri.

  4. Az Áttekintés lapon válassza a Start lehetőséget.

  5. Töltse ki a paramétereket, majd kattintson az OK gombra.

    Paraméter Leírás
    RESOURCEGROUP Adja meg a virtuális gépek erőforráscsoportjának nevét.
    Virtuális gépek Adja meg a virtuális gépek nevét a következő szintaxissal: ["VM1","VM2","VM3"]
    Művelet Adja meg stop vagy start.
  6. Lépjen a virtuális gépek listájára, és frissítse a lapot néhány másodpercenként. Figyelje meg, hogy az egyes virtuális gépek műveletet párhuzamosan hajtják végre. A -Parallel kulcsszó nélkül a műveletek egymás után lettek volna végrehajtva. Bár a virtuális gépek egymás után indulnak el, minden virtuális gép az egyes virtuális gépek jellemzői alapján kissé eltérő időpontokban érheti el a futó fázist.

Clean up resources

Ha nem folytatja a runbook használatát, törölje a következő lépésekkel:

  1. Lépjen az Automation-fiókjához.
  2. A Folyamatautomatizálás területen válassza a Runbookok lehetőséget.
  3. Válassza ki a runbookot.
  4. A runbook áttekintési lapján válassza a Törlés lehetőséget.

További lépések

Ebben az oktatóanyagban létrehozott egy PowerShell-munkafolyamat-runbookot. A Python 3 runbookok megtekintéséhez lásd: