Megosztás a következőn keresztül:


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

Ez az oktatóanyag végigvezeti egy Python 3.8-os runbook Azure Automationben való létrehozásán. A Python-runbookok a Python 2.7 és 3.8 alatt fordulnak le. Az Azure-portál szövegszerkesztőjével közvetlenül szerkesztheti a runbook kódját.

  • 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
  • Runbook frissítése az Azure virtuális gép indításához, runbookparaméterekkel

Előfeltételek

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

  • Egy Azure-előfizetés. Ha még nem rendelkezik ilyennel, aktiválhatja az MSDN-előfizetői előnyöket , vagy regisztrálhat egy ingyenes fiókra.

  • Egy Automation-fiók a runbook tárolásához és az Azure-erőforrásokhoz való hitelesítéshez felügyelt identitások használatával. Az Automation-fiók létrehozásakor a rendszer automatikusan létrehoz egy felügyelt identitást.

  • Egy Azure-beli virtuális gép. A tutorial során Ön el fogja indítani és leállítani ezt a gépet, ezért nem ajánlott éles virtuális gépként használni.

Új runbook létrehozása

Először hozzon létre egy egyszerű runbookot, amely a Hello World szöveget adja ki.

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

    Az Automation-fiók oldala gyors áttekintést nyújt a fiók erőforrásairól. Már rendelkeznie kellene néhány eszközzel. Ezen eszközök többsége olyan modul, amely automatikusan bekerül egy új Automation-fiókba.

    Olyan felügyelt identitást is engedélyeznie kell, amely az előfeltételekben szerepel. Ezt az Identitás erőforrás fiókbeállítások területen való megtekintésével ellenőrizheti.

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

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

  4. Adja meg a runbooknak a MyFirstRunbook-Python nevet.

  5. A Runbook típusához válassza a Pythont.

  6. Válassza a Python 3.8-at a futtatókörnyezet verziójához.

  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 az operatív útmutatóhoz

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étennénk a runbookot, hogy éles környezetben elérhetővé tegyük, tesztelni kell, hogy megfelelően működik-e. Runbook tesztelésekor futtatja annak vázlatverzió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 a Start elemet. Ez a beállítás legyen az egyetlen engedélyezett beállítás.

  3. Létrejön egy runbook-feladat , és megjelenik annak állapota. A feladat állapota Várakozó listára állítva-ként kezdődik, ami azt jelzi, hogy a felhőben egy runbook-munkásra vár. Amikor egy munkavégző átvált a "Kezdés" állapotra, amikor a feladatot átvállalja, majd "Futás" állapotra, amikor a runbook valóban futni kezd.

  4. Amikor a runbook-feladat befejeződik, megjelenik a kimenete. Ebben az esetben látnia Hello Worldkell .

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

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

A létrehozott runbook még piszkozatban van. Mielőtt éles környezetben futtathatná, közzé kell tennie azt. Amikor közzétesz egy runbookot, felülírja a meglévő közzétett verziót a vázlatverzió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 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étetttartalom szerzői állapota.

  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 más műveleteket.

  4. Kattintson a Start gombra, majd az OK gombra a Runbook indítása panel megnyitásakor.

  5. Megnyílik egy Feladat ablaktábla a létrehozott runbook-feladathoz. Bezárhatja ezt a panelt, de tartsuk nyitva, hogy megnézhesse a feladat előrehaladását.

  6. A feladat állapota az Alapállapotok területen az Állapot mezőben jelenik meg. A runbook tesztelése során az itt szereplő értékek megegyeznek az állapotértékekkel.

  7. Miután a runbook állapota a Kész állapotot mutatja, válassza a Kimenet lapot. A Kimenet lapon látható Hello World.

  8. Zárja be a Kimenet lapot.

  9. A Runbook-feladat streamjeinek megtekintéséhez válassza az Összes napló fület. Csak a kimeneti adatfolyamban kell megjelennie Hello World . Ez a fül azonban más streameket is megjeleníthet egy runbook-feladathoz, például Részletes és Hiba, ha a runbook hozzájuk ír.

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

  11. Válassza a Feladatok erőforrást a runbook Feladatok erőforráslapjának megnyitásához. Ez a lap felsorolja a runbook által létrehozott összes feladatot. Csak egy feladat jelenik meg a listában, mivel csak egyszer futtatta a feladatot.

  12. Ezt a feladatot kijelölve megnyithatja azt a Feladat panelt, amelyet a runbook indításakor megtekintett. Ez a panel lehetővé teszi, hogy visszatérjen az időben, és megtekintse az adott runbookhoz létrehozott feladatok részleteit.

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

Tesztelte és közzétette a runbookot, de az egyelőre még mindig nem csinál semmi hasznosat. Azt szeretné, hogy az Azure-erőforrásokat kezelje. 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 az alábbi hivatkozásokkal adhat hozzá WHL-fájlokat.

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, nyissa meg az>>identitását, és állítsa be az állapotot.
  • A felügyelt identitáshoz hozzá van rendelve egy szerepkör az erőforrás kezeléséhez. A virtuálisgép-erőforrás kezelésére szolgáló példá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 az Azure Portal használatával

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

  1. A Szövegszerkesztő megnyitásához válassza a Szerkesztés lehetőséget a MyFirstRunbook-Python panelen.

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

#!/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 hozzon létre egy példányt a Pythonhoz készült Azure Compute-ügyfélből.

# 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 az erőforráscsoport és a virtuális gép neveihez használ rögzített értékeket. 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. Adja hozzá a következő kódot a runbookhoz közvetlenül a többi import utasítás után:

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álisgép-nevek tárolásához. Vegye észre, hogy az argumentumlista eleme, sys.argv[0], a szkript neve, amit nem a felhasználó ad meg.

Most módosíthatja a runbook utolsó két sorát úgy, hogy a bemeneti paraméter értékeit 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 megkezdte az érték megadását az első mezőben, megjelenik egy második, és így tovább, hogy annyi paraméterértéket adjon meg, amennyi szükséges.

Az értékek a tömb szkriptjének sys.argv rendelkezésére állnak, 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 a kezdő virtuális gép nevét.

Paraméterértékek megadása

Válassza az OK gombot a runbook elindításához. A runbook futtatja é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, beleértve a WARNING, ERROR és DEBUG 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éldában látható ez a konvenció, amelyet a try...except blokkban használnak.

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

Következő lépések