Självstudie: Skapa en Python 3.8-runbook
Den här självstudien beskriver hur du skapar en Python 3.8-runbook i Azure Automation. Python-runbooks kompileras under Python 2.7 och 3.8 Du kan redigera koden för runbooken direkt med hjälp av textredigeraren i Azure Portal.
- Skapa en enkel Python-runbook
- Testa och publicera runbooken
- Köra och spåra status för runbook-jobbet
- Uppdatera runbooken för att starta en virtuell Azure-dator med runbook-parametrar
Förutsättningar
För att slutföra den här kursen behöver du:
En Azure-prenumeration. Om du inte redan har ett konto kan du aktivera dina MSDN-prenumerantförmåner eller registrera dig för ett kostnadsfritt konto.
Ett Automation-konto för att lagra runbooken och autentisera till Azure-resurser med hanterade identiteter. En hanterad identitet skapas automatiskt åt dig när du skapar Automation-kontot.
En virtuell dator i Azure. Under den här självstudien startar och stoppar du den här datorn, så det bör inte vara en virtuell produktionsdator.
Skapa en ny runbook
Du börjar med att skapa en enkel runbook som matar ut texten Hello World.
Öppna ditt Automation-konto på Azure Portal.
Automation-kontosidan innehåller en snabb översikt över resurserna i det här kontot. Du bör redan ha vissa tillgångar. De flesta av dessa tillgångar är de moduler som ingår automatiskt i ett nytt Automation-konto.
Du bör också ha en aktiverad hanterad identitet som anges i förhandskraven. Du kan kontrollera det genom att visa identitetsresursen under Kontoinställningar.
Välj Runbooks under Process Automation för att öppna listan över runbooks.
Välj Skapa en runbook för att skapa en ny runbook.
Ge runbooken namnet MyFirstRunbook-Python.
Välj Python som Runbook-typ.
Välj Python 3.8 som Körningsversion.
Välj Skapa för att skapa runbooken och öppna textredigeraren.
Lägga till kod i runbooken
Nu lägger du till ett enkelt kommando för att skriva ut texten Hello World
.
print("Hello World!")
Välj Spara för att spara runbooken.
Testa runbooken
Innan du publicerar runbook-jobbet så att den blir tillgänglig i produktionsmiljön testar du den och kontrollerar att den fungerar som den ska. När du testar en runbook kör du dess utkastversion och visar dess utdata interaktivt.
Välj testfönstret för att öppna fönstret Test .
Välj Starta för att starta testet. Det här alternativet bör vara det enda aktiverade alternativet.
Ett runbook-jobb skapas och dess status visas. Jobbstatusen börjar som Köad, vilket indikerar att den väntar på att en runbook-arbetare i molnet ska bli tillgänglig. Den ändras till Starta när en arbetare gör anspråk på jobbet och sedan Körs när runbooken faktiskt börjar köras.
När runbook-jobbet är klart visas dess utdata. I det här fallet bör du se
Hello World
.Stäng fönstret Test för att återgå till arbetsytan.
Publicera och starta runbooken
Runbooken som du skapade är fortfarande i utkastläge. Du måste publicera den innan du kan köra den i produktion. När du publicerar en runbook skriver du över den befintliga publicerade versionen med utkastversionen. I det här fallet har du ingen publicerad version ännu eftersom du precis har skapat runbooken.
Välj Publicera för att publicera runbooken och sedan Ja när du uppmanas till det.
Om du stänger fönstret MyFirstRunbook_python är du tillbaka på sidan Runbooks där du bör se redigeringsstatusenPublicerad.
Välj namnet MyFirstRunbook-Python i listan. Gå tillbaka till fönstret MyFirstRunbook-Python .
Med alternativen överst kan du starta runbooken, visa runbooken, redigera runbooken, schemalägga den för att starta någon gång i framtiden och andra åtgärder.
Välj Start och välj sedan OK när fönstret Starta Runbook öppnas.
Ett jobbfönster öppnas för det runbook-jobb som du skapade. Du kan stänga det här fönstret, men låt oss hålla det öppet så att du kan watch jobbets förlopp.
Jobbstatusen visas i fältet Status under Essentials. Värdena här matchar statusvärdena när du testade runbooken.
När runbook-statusen visar Slutförd väljer du fliken Utdata . På fliken Utdata kan du se
Hello World
.Stäng fliken Utdata .
Välj fliken Alla loggar för att visa strömmar för runbook-jobbet. Du bör bara se
Hello World
i utdataströmmen. Den här fliken kan dock visa andra strömmar för ett runbook-jobb, till exempel Utförligt och Fel, om runbooken skriver till dem.Stäng fönstret Jobb för att återgå till fönstret MyFirstRunbook-Python .
Välj Jobbresurs för att öppna resurssidan Jobb för den här runbooken. På den här sidan visas alla jobb som skapats av den här runbooken. Nu bör du endast se ett jobb eftersom du bara körde jobbet en gång.
Du kan välja det här jobbet för att öppna samma jobbfönster som du visade när du startade runbooken. Med det här fönstret kan du gå tillbaka i tiden och visa information om alla jobb som har skapats för en viss runbook.
Lägga till autentisering för att hantera Azure-resurser
Du har testat och publicerat din runbook, men hittills gör den egentligen inget användbart. Du vill att den ska hantera Azure-resurser. För att hantera resurser måste skriptet autentiseras.
Det rekommenderade sättet att autentisera är med hanterad identitet. När du skapar ett Azure Automation konto skapas automatiskt en hanterad identitet åt dig.
Om du vill använda de här exemplen lägger du till följande paket i Python Packages-resursen för Automation-kontot. Du kan lägga till WHL-filerna för dessa paket med dessa länkar.
När du lägger till dessa paket väljer du en körningsversion som matchar din runbook.
Anteckning
Följande kod testades med körningsversion 3.8.
Hanterad identitet
Om du vill använda hanterad identitet kontrollerar du att den är aktiverad:
- Om du vill kontrollera om den hanterade identiteten är aktiverad för Automation-kontot går du till dinIdentitet för Automation-kontoinställningar>> och anger Status till På.
- Den hanterade identiteten har en roll tilldelad för att hantera resursen. I det här exemplet på att hantera en virtuell datorresurs lägger du till rollen "Virtuell datordeltagare" i resursgruppen som innehåller den virtuella datorn. Mer information finns i Tilldela Azure-roller med hjälp av Azure Portal
När rollen hantera identitet har konfigurerats kan du börja lägga till kod.
Öppna textredigeraren genom att välja Redigera i fönstret MyFirstRunbook-Python .
Lägg till följande kod för att autentisera till Azure:
#!/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)
Lägg till kod för att skapa Python Compute-klienten och starta den virtuella datorn
Om du vill arbeta med virtuella Azure-datorer skapar du en instans av Azure Compute-klienten för Python.
# 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.')
Var MyResourceGroup
är namnet på resursgruppen som innehåller den virtuella datorn och TestVM
är namnet på den virtuella dator som du vill starta.
Testa och kör runbooken igen för att se att den startar den virtuella datorn.
Använda indataparametrar
Runbooken använder för närvarande hårdkodade värden för namnen på resursgruppen och den virtuella datorn. Nu ska vi lägga till kod som hämtar dessa värden från indataparametrar.
Du använder variabeln sys.argv
för att hämta parametervärdena. Lägg till följande kod i runbooken direkt efter de andra import
instruktionerna:
import sys
resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])
Den här koden importerar modulen sys
och skapar två variabler för resursgruppen och VM-namnen. Observera att elementet i argumentlistan, sys.argv[0]
, är namnet på skriptet och inte är indata från användaren.
Nu kan du ändra de två sista raderna i runbooken så att de använder indataparametervärdena i stället för att använda hårdkodade värden:
async_vm_start = compute_client.virtual_machines.begin_start(
resource_group_name, vm_name)
async_vm_start.wait()
När du startar en Python-runbook, antingen från fönstret Test eller som en publicerad runbook, kan du ange värdena för parametrar på sidan Starta Runbook under Parametrar.
När du har börjat ange ett värde i den första rutan visas en andra, och så vidare, så att du kan ange så många parametervärden som behövs.
Värdena är tillgängliga för skriptet i matrisen sys.argv
som i koden som du precis lade till.
Ange namnet på resursgruppen som värde för den första parametern och namnet på den virtuella datorn som ska startas som värdet för den andra parametern.
Välj OK för att starta runbooken. Runbooken körs och startar den virtuella dator som du angav.
Felhantering i Python
Du kan också använda följande konventioner för att hämta olika strömmar från dina Python-runbooks, inklusive WARNING-, ERROR- och DEBUG-strömmar.
print("Hello World output")
print("ERROR: - Hello world error")
print("WARNING: - Hello world warning")
print("DEBUG: - Hello world debug")
print("VERBOSE: - Hello world verbose")
I följande exempel visas den här konventionen som används i ett try...except
block.
try:
raise Exception('one', 'two')
except Exception as detail:
print ('ERROR: Handling run-time error:', detail)
Nästa steg
Mer information om runbook-typer, deras fördelar och begränsningar finns i Azure Automation runbook-typer.
Information om hur du utvecklar för Azure med Python finns i Azure för Python-utvecklare.
Information om hur du visar python 3-exempel-runbooks finns i Azure Automation GitHub-lagringsplats.