Delen via


Zelfstudie: Een Python 3.8-runbook maken

Deze handleiding begeleidt je bij het maken van een Python 3.8-runbook in Azure Automation. Python-runbooks worden gecompileerd onder Python 2.7 en 3.8 U kunt de code van het runbook rechtstreeks bewerken met behulp van de teksteditor in Azure Portal.

  • Een eenvoudig Python-runbook maken
  • Het runbook testen en publiceren
  • De status van de runbooktaak uitvoeren en bijhouden
  • Het runbook bijwerken om een virtuele Azure-machine te starten met runbookparameters

Vereiste voorwaarden

U hebt het volgende nodig om deze zelfstudie te voltooien:

  • Een Azure-abonnement. Als u nog geen abonnement hebt, kunt u de voordelen van uw MSDN-abonnee activeren of u aanmelden voor een gratis account.

  • Een Automation-account om het runbook te bewaren en verificatie bij Azure-resources uit te voeren met behulp van Managed Identities. Er wordt automatisch een beheerde identiteit voor u gemaakt wanneer u het Automation-account maakt.

  • Een virtuele Azure-machine. Tijdens deze zelfstudie start en stopt u deze machine, dus het mag geen productie-VM zijn.

Een nieuw runbook maken

U begint met het maken van een eenvoudig runbook dat de tekst Hallo wereld uitvoert.

  1. Open uw Automation-account in Azure Portal.

    De automation-accountpagina geeft u een beknopt overzicht van de resources in dit account. U moet al wat activa hebben. De meeste van deze assets zijn de modules die automatisch worden opgenomen in een nieuw Automation-account.

    U moet ook een beheerde identiteit hebben ingeschakeld die wordt vermeld in de vereisten. U kunt dit controleren door de identiteitsresource onder Accountinstellingen weer te geven.

  2. Selecteer Runbooks onder Procesautomatisering om de lijst met runbooks te openen.

  3. Kies Runbook maken om een nieuw runbook te maken.

  4. Geef het runbook de naam MyFirstRunbook-Python.

  5. Selecteer Python voor het runbooktype.

  6. Selecteer Python 3.8 voor de Runtime-versie.

  7. Selecteer Maken om het runbook te maken en open de teksteditor.

Code toevoegen aan het runbook

U voegt nu een eenvoudige opdracht toe om de tekst Hello Worldaf te drukken.

print("Hello World!")

Selecteer Opslaan om het runbook op te slaan.

Het runbook testen

Voordat u het runbook publiceert om het beschikbaar te maken in productie, wilt u het testen om er zeker van te zijn dat het goed werkt. Wanneer u een runbook test, voert u de conceptversie uit en bekijkt u de uitvoer interactief.

  1. Selecteer Testvenster om het testvenster te openen.

  2. Selecteer Start om de test te starten. Deze optie moet de enige ingeschakelde optie zijn.

  3. Er wordt een runbook job aangemaakt en de status wordt weergegeven. De opdrachtstatus start als Queued, wat aangeeft dat er wordt gewacht tot een runbook worker in de cloud beschikbaar is. Het verandert in Starten wanneer een werkrol de taak claimt en vervolgens wordt uitgevoerd wanneer het runbook daadwerkelijk wordt uitgevoerd.

  4. Wanneer de runbooktaak is voltooid, wordt de uitvoer weergegeven. In dit geval ziet u het volgende Hello World.

  5. Sluit het testvenster om terug te keren naar het canvas.

Het runbook publiceren en starten

Het runbook dat u hebt gemaakt, bevindt zich nog steeds in de conceptmodus. U moet het publiceren voordat u deze in productie kunt uitvoeren. Wanneer u een runbook publiceert, overschrijft u de bestaande gepubliceerde versie met de conceptversie. In dit geval hebt u nog geen gepubliceerde versie omdat u zojuist het runbook hebt gemaakt.

  1. Selecteer Publiceren om het runbook te publiceren en vervolgens Ja wanneer hierom wordt gevraagd.

  2. Als u het deelvenster MyFirstRunbook_python sluit, bevindt u zich weer op de pagina Runbooks waar u de ontwerpstatus van Gepubliceerd zou moeten zien.

  3. Selecteer de naam MyFirstRunbook-Python in de lijst. U gaat terug naar het deelvenster MyFirstRunbook-Python .

    Met de opties bovenaan kunt u het runbook starten, het runbook bekijken, het runbook bewerken, plannen dat het op een bepaald moment in de toekomst begint en andere acties.

  4. Selecteer Start en selecteer VERVOLGENS OK wanneer het deelvenster Runbook starten wordt geopend.

  5. Er wordt een taakvenster geopend voor de runbooktaak die u hebt gemaakt. U kunt dit deelvenster sluiten, maar we houden het open, zodat u de voortgang van de taak kunt bekijken.

  6. De taakstatus wordt weergegeven in het veld Status onder Essentials. De waarden hier komen overeen met de statuswaarden wanneer u het runbook hebt getest.

  7. Zodra de status van het runbook is voltooid, selecteert u het tabblad Uitvoer. Op het tabblad Uitvoer kunt u Hello World zien.

  8. Sluit het tabblad Uitvoer .

  9. Selecteer het tabblad Alle logboeken om streams voor de runbooktaak weer te geven. U zou alleen moeten zien Hello World in de uitvoerstroom. Dit tabblad kan echter andere streams voor een runbooktaak weergeven, zoals Verbose en Error, mits het runbook er gegevens naar schrijft.

  10. Sluit het Jobs-deelvenster om terug te keren naar MyFirstRunbook-Python-deelvenster.

  11. Selecteer de resource Taken om de pagina Takenresource voor dit runbook te openen. Op deze pagina worden alle taken weergegeven die door dit runbook zijn gemaakt. U zou slechts één taak moeten zien, omdat u de taak slechts één keer hebt uitgevoerd.

  12. U kunt deze taak selecteren om hetzelfde taakvenster te openen dat u hebt bekeken toen u het runbook startte. In dit deelvenster kunt u teruggaan in de tijd en de details bekijken van elke job die is aangemaakt voor een specifiek runbook.

Verificatie toevoegen voor het beheren van Azure-resources

U hebt uw runbook getest en gepubliceerd, maar tot nu toe doet het niets nuttigs. U wilt dat het Azure-resources beheert. Voor het beheren van resources moet het script worden geverifieerd.

De aanbevolen manier om te verifiëren is met een beheerde identiteit. Wanneer u een Azure Automation-account maakt, wordt automatisch een beheerde identiteit voor u gemaakt.

Als u deze voorbeelden wilt gebruiken, voegt u de volgende pakketten toe in de Python Packages-resource van het Automation-account. U kunt de WHL-bestanden voor deze pakketten toevoegen met deze koppelingen.

Wanneer u deze pakketten toevoegt, selecteert u een runtimeversie die overeenkomt met uw runbook.

Opmerking

De volgende code is getest met runtimeversie 3.8.

Beheerde identiteit

Als u beheerde identiteit wilt gebruiken, moet u ervoor zorgen dat deze is ingeschakeld:

  • Als u wilt controleren of de beheerde identiteit is ingeschakeld voor het Automation-account, gaat u naar deidentiteit>> en stelt u de status in op Aan.
  • De beheerde identiteit heeft een rol toegewezen voor het beheren van de resource. In dit voorbeeld van het beheren van een virtuele-machineresource voegt u de rol Bijdrager voor virtuele machines toe aan de resourcegroep die de virtuele machine bevat. Zie Azure-rollen toewijzen met behulp van Azure Portal voor meer informatie

Wanneer de identiteitsrol beheren is geconfigureerd, kunt u beginnen met het toevoegen van code.

  1. Open de teksteditor door Bewerken te selecteren in het deelvenster MyFirstRunbook-Python .

  2. Voeg de volgende code toe om te verifiëren bij 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)

Code toevoegen om een Python Compute-client te maken en de VM te starten

Als u met Azure-VM's wilt werken, maakt u een exemplaar van de Azure Compute-client voor 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.')

Waar MyResourceGroup is de naam van de resourcegroep die de VIRTUELE machine bevat en TestVM is de naam van de VIRTUELE machine die u wilt starten.

Test het runbook en voer het opnieuw uit om te zien dat de VIRTUELE machine wordt gestart.

Invoerparameters gebruiken

Het runbook gebruikt momenteel in code vastgelegde waarden voor de namen van de resourcegroep en de VIRTUELE machine. Nu gaan we code toevoegen waarmee deze waarden worden opgehaald uit invoerparameters.

U gebruikt de sys.argv variabele om de parameterwaarden op te halen. Voeg de volgende code toe aan het runbook direct na de andere import instructies:

import sys

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

Met deze code wordt de sys module geïmporteerd en worden twee variabelen gemaakt voor de resourcegroep en vm-namen. Merk op dat het element van de argumentenlijst, sys.argv[0], de naam van het script is en niet door de gebruiker is ingevoerd.

U kunt nu de laatste twee regels van het runbook wijzigen om de invoerparameterwaarden te gebruiken in plaats van vastgelegde waarden te gebruiken:

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

Wanneer u een Python-runbook start, vanuit het testvenster of als een gepubliceerd runbook, kunt u de waarden voor parameters invoeren op de pagina Runbook starten onder Parameters.

Nadat u een waarde in het eerste vak hebt ingevoerd, wordt er een tweede weergegeven, enzovoort, zodat u zoveel parameterwaarden kunt invoeren als nodig is.

De waarden zijn beschikbaar voor het script in de sys.argv matrix, net als in de code die u zojuist hebt toegevoegd.

Voer de naam van de resourcegroep in als de waarde voor de eerste parameter en de naam van de virtuele machine die moet worden gestart als de waarde van de tweede parameter.

Parameterwaarden invoeren

Selecteer OK om het runbook te starten. Het runbook wordt uitgevoerd en start de VM die u hebt opgegeven.

Foutafhandeling in Python

U kunt ook de volgende conventies gebruiken om verschillende streams op te halen uit uw Python-runbooks, waaronder WAARSCHUWINGS-, FOUT- en FOUTOPSPORINGsstromen.

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

In het volgende voorbeeld ziet u deze conventie die in een try...except blok wordt gebruikt.

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

Volgende stappen