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.
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.
A runbookok listájának megnyitásához válassza a Runbookok lehetőséget a Folyamatautomatizálás területen.
Új runbook létrehozásához válassza a Runbook létrehozása lehetőséget.
Adja a runbooknak a MyFirstRunbook-Python nevet.
A Runbook típusához válassza a Python lehetőséget.
A Futtatókörnyezet verziójához válassza a Python 3.8 lehetőséget.
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 World
nyomtatá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.
A Teszt panel megnyitásához válassza a Teszt panelt.
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.
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.
Amikor a forgatókönyv feladat befejeződik, megjelenik a kimenete. Ebben az esetben a következőt kell látnia
Hello World
: .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.
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.
Ha bezárja a MyFirstRunbook_python panelt, a Runbookok lapon újra megjelenik a Közzétett szerzői állapot.
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.
Válassza a Start gombot, majd a Runbook indítása panel megnyitásakor kattintson az OK gombra.
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.
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.
Ha a runbook állapota Befejezve, válassza a Kimenet lapot. A Kimenet lapon láthatja a következőt
Hello World
: .Zárja be a Kimenet lapot.
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.Zárja be a Feladatokpanelt a MyFirstRunbook-Python panelre való visszatéréshez.
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.
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.
Nyissa meg a szövegszerkesztőt a MyFirstRunbook-Python panel Szerkesztés elemének kiválasztásával.
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.
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
A runbooktípusokról, azok előnyeiről és korlátairól a Azure Automation runbooktípusok című témakörben olvashat bővebben.
Az Azure-hoz a Pythonnal való fejlesztéssel kapcsolatos további információkért lásd: Azure for Python-fejlesztőknek.
A Python 3-minta runbookok megtekintéséhez tekintse meg a Azure Automation GitHub-adattárat.