Oktatóanyag: Python 3.8-runbook létrehozása

Ez az oktatóanyag végigvezeti egy Python 3.8-runbook létrehozásának folyamatán Azure Automation. Python-runbookok fordítása a Python 2.7 és 3.8 alatt: Közvetlenül szerkesztheti a runbook kódját a Azure Portal szövegszerkesztőjével.

  • Egyszerű Python-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
  • A runbook frissítése egy Azure-beli virtuális gép runbookparaméterekkel való elindításához

Előfeltételek

Az oktatóanyag elvégzéséhez a következőkre lesz szüksége:

  • Azure-előfizetés. Ha még nem rendelkezik fiókkal, aktiválhatja MSDN-előfizetői előnyeit, illetve regisztrálhat egy ingyenes fiókot.

  • Egy Automation-fiók , amely a runbookot tárolja, és felügyelt identitásokkal hitelesíti magát az Azure-erőforrásokban. Az Automation-fiók létrehozásakor a rendszer automatikusan létrehoz egy felügyelt identitást.

  • Egy Azure virtuális gép. Ebben az oktatóanyagban elindítja és leállítja ezt a gépet, így nem lehet éles virtuális gép.

Új runbook létrehozása

Első lépésként hozzon létre egy egyszerű runbookot, amely a "Helló világ!" alkalmazás szöveget adja ki.

  1. Az Azure Portalon nyissa meg az Automation-fiókját.

    Az Automation-fiók oldala gyors áttekintést nyújt a fiókban levő erőforrásokról. Valószínűleg már rendelkezik adategységekkel. Ezek nagy része az új Automation-fiókhoz automatikusan hozzáadott modul.

    Emellett engedélyeznie kell egy felügyelt identitást is, amely az előfeltételek között szerepel. Ezt a Fiókbeállítások területen található Identitás erőforrás megtekintésével ellenőrizheti.

  2. A runbookok listájának megnyitásához válassza a Runbookok lehetőséget a Folyamatautomatizálás területen.

  3. Új runbook létrehozásához válassza a Runbook létrehozása lehetőséget.

  4. Adja a runbooknak a MyFirstRunbook-Python nevet.

  5. A Runbook típusához válassza a Python lehetőséget.

  6. A Futtatókörnyezet verziójához válassza a Python 3.8 lehetőséget.

  7. A runbook létrehozásához és a szövegszerkesztő megnyitásához válassza a Létrehozás lehetőséget.

Kód hozzáadása a runbookhoz

Most hozzáad egy egyszerű parancsot a szöveg Hello Worldnyomtatásához.

print("Hello World!")

A runbook mentéséhez válassza a Mentés lehetőséget.

A runbook tesztelése

Mielőtt közzéteszi a runbookot, hogy éles üzemben is elérhető legyen, tesztelnie kell, hogy biztosan jól működik-e. Egy runbook tesztelésekor futtatja annak piszkozatverzióját, és interaktívan tekinti meg a kimenetét.

  1. A Teszt panel megnyitásához válassza a Teszt panelt.

  2. A teszt elindításához válassza az Indítás lehetőséget. Ez a beállítás legyen az egyetlen engedélyezett beállítás.

  3. Létrejön egy forgatókönyv-feladat, és megjelenik annak állapota. A feladat állapota Várólistán állapotúként indul, ami azt jelzi, hogy a felhőben futó runbook-feldolgozó elérhetővé válására vár. Az Indítás értékre változik, amikor egy feldolgozó jogcímet ad a feladatnak, majd a Futtatás értékre, amikor a runbook ténylegesen elindul.

  4. Amikor a forgatókönyv feladat befejeződik, megjelenik a kimenete. Ebben az esetben a következőt kell látnia Hello World: .

  5. Zárja be a Teszt panelt a vászonra való visszatéréshez.

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

A létrehozott runbook még piszkozat módban van. Az éles környezetben való futtatás előtt közzé kell tennie. Runbook közzétételekor felülírja a meglévő közzétett verziót a piszkozatverzióval. Ebben az esetben még nem rendelkezik közzétett verzióval, mert 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 amikor a rendszer kéri, az Igen lehetőséget.

  2. Ha bezárja a MyFirstRunbook_python panelt, a Runbookok lapon újra megjelenik a Közzétett szerzői állapot.

  3. Válassza ki a MyFirstRunbook-Python nevet a listában, majd visszalép a MyFirstRunbook-Python panelre.

    A felül található lehetőségek lehetővé teszik a runbook elindítását, a runbook megtekintését, a runbook szerkesztését, a későbbi kezdés ütemezését és egyéb műveleteket.

  4. Válassza a Start gombot, majd a Runbook indítása panel megnyitásakor kattintson az OK gombra.

  5. Megnyílik a létrehozott runbook-feladat Feladat panelje. Bezárhatja ezt a panelt, de hagyja megnyitva, hogy watch a feladat előrehaladását.

  6. A feladat állapota az Alapvető erőforrások területen, az Állapot mezőben jelenik meg. Az itt található értékek megegyeznek az állapotértékekkel a runbook tesztelése során.

  7. Ha a runbook állapota Befejezve, válassza a Kimenet lapot. A Kimenet lapon láthatja a következőt Hello World: .

  8. Zárja be a Kimenet lapot.

  9. A Runbook-feladat streamjeinek megtekintéséhez válassza a Minden napló fület. Csak a kimeneti streamben jelenik meg Hello World . Ez a lap azonban más streameket is megjeleníthet egy runbook-feladathoz, például Részletes és Hiba, ha a runbook rájuk ír.

  10. Zárja be a Feladatokpanelt a MyFirstRunbook-Python panelre való visszatéréshez.

  11. Válassza a Feladatok erőforrás lehetőséget a runbook Feladatok erőforráslapjának megnyitásához. Ezen a lapon a runbook által létrehozott összes feladat látható. Egy feladat csak egyszer szerepel a listán, mert csak egyszer futtatta a feladatot.

  12. Ezt a feladatot kiválasztva megnyithatja ugyanazt a Feladat panelt, amelyet a runbook indításakor megtekintett. Ezen az ablaktáblán visszaléphet az időben, és megtekintheti az adott runbookhoz létrehozott feladatok részleteit.

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. Az erőforrások kezeléséhez a szkriptnek hitelesítenie kell magát.

A hitelesítés ajánlott módja a felügyelt identitás. Azure Automation-fiók létrehozásakor a rendszer automatikusan létrehoz egy felügyelt identitást.

A minták használatához adja hozzá a következő csomagokat az Automation-fiók Python Packages erőforrásához. Ezekhez a csomagokhoz hozzáadhatja a WHL-fájlokat ezekkel a hivatkozásokkal.

A csomagok hozzáadásakor válassza ki a runbooknak megfelelő futtatókörnyezeti verziót.

Megjegyzés

Az alábbi kódot a futtatókörnyezet 3.8-es verziójával teszteltük.

Felügyelt identitás

A felügyelt identitás használatához győződjön meg arról, hogy engedélyezve van:

  • Annak ellenőrzéséhez, hogy a felügyelt identitás engedélyezve van-e az Automation-fiókhoz, lépjen az Automation-fiók>beállítások>identitásához , és állítsa az Állapot beállítást Be értékre.
  • A felügyelt identitáshoz hozzá van rendelve egy szerepkör az erőforrás kezeléséhez. Ebben a virtuálisgép-erőforrás kezelésének példájában adja hozzá a "Virtuálisgép-közreműködő" szerepkört a virtuális gépet tartalmazó erőforráscsoporthoz. További információ: Azure-szerepkörök hozzárendelése a Azure Portal

Az identitáskezelési szerepkör konfigurálásával megkezdheti a kód hozzáadását.

  1. Nyissa meg a szövegszerkesztőt a MyFirstRunbook-Python panel Szerkesztés elemének kiválasztásával.

  2. Adja hozzá a következő kódot az Azure-beli hitelesítéshez:

#!/usr/bin/env python3
from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient

SUBSCRIPTION_ID="YOUR_SUBSCRIPTION_ID"

azure_credential = DefaultAzureCredential()

import os
import requests
# printing environment variables
endpoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/"
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER' : identityHeader,
'Metadata' : True
}
response = requests.get(endpoint, headers)
print(response.text)

Kód hozzáadása Python Compute-ügyfél létrehozásához és a virtuális gép elindításához

Az Azure-beli virtuális gépek használatához hozza létre a Pythonhoz készült Azure Compute-ügyfél egy példányát.

# Initialize client with the credential and subscription.
compute_client = ComputeManagementClient(
    azure_credential,
    SUBSCRIPTION_ID
)

print('\nStart VM')
async_vm_start = compute_client.virtual_machines.begin_start(
    "MyResourceGroup", "TestVM")
async_vm_start.wait()
print('\nFinished start.')

Hol MyResourceGroup található a virtuális gépet tartalmazó erőforráscsoport neve, és TestVM a elindítani kívánt virtuális gép neve.

Tesztelje és futtassa újra a runbookot, és ellenőrizze, hogy elindítja-e a virtuális gépet.

Bemeneti paraméterek használata

A runbook jelenleg rögzített értékeket használ az erőforráscsoport és a virtuális gép neveihez. Most adjunk hozzá olyan kódot, amely lekéri ezeket az értékeket a bemeneti paraméterekből.

A változóval sys.argv lekérheti a paraméterértékeket. Közvetlenül a többi import utasítás után adja hozzá a következő kódot a runbookhoz:

import sys

resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])

Ez a kód importálja a modult sys , és két változót hoz létre az erőforráscsoport és a virtuális gép nevének tárolásához. Figyelje meg, hogy az argumentumlista eleme a sys.argv[0]szkript neve, és a felhasználó nem adja meg.

Most módosíthatja a runbook utolsó két sorát úgy, hogy a bemeneti paraméterértékeket használja a nem rögzített értékek használata helyett:

async_vm_start = compute_client.virtual_machines.begin_start(
    resource_group_name, vm_name)
async_vm_start.wait()

Amikor elindít egy Python-runbookot a Teszt panelen vagy közzétett runbookként, a paraméterek értékeit a Runbook indítása lapon, a Paraméterek területen adhatja meg.

Miután elkezd beírni egy értéket az első mezőbe, megjelenik egy második, és így tovább, hogy annyi paraméterértéket adjon meg, amennyit csak szükséges.

Az értékek a tömbben lévő szkript számára érhetők el, sys.argv ahogyan az imént hozzáadott kódban is.

Adja meg az erőforráscsoport nevét az első paraméter értékeként, a második paraméter értékeként pedig annak a virtuális gépnek a nevét, amely a második paraméter értékeként indul el.

Paraméterértékek megadása

A runbook elindításához kattintson az OK gombra . A runbook fut, és elindítja a megadott virtuális gépet.

Hibakezelés a Pythonban

Az alábbi konvenciók segítségével különböző streameket is lekérhet a Python-runbookokból, például FIGYELMEZTETÉS, HIBA és HIBAKERESÉS streameket.

print("Hello World output")
print("ERROR: - Hello world error")
print("WARNING: - Hello world warning")
print("DEBUG: - Hello world debug")
print("VERBOSE: - Hello world verbose")

Az alábbi példa ezt a blokkban try...except használt konvenciót mutatja be.

try:
    raise Exception('one', 'two')
except Exception as detail:
    print ('ERROR: Handling run-time error:', detail)

Következő lépések