Share via


Zelfstudie: Een Python 3.8-runbook maken

In deze zelfstudie wordt u begeleid 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 de 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

Vereisten

Voor deze zelfstudie hebt u het volgende nodig:

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

  • Een Automation-account voor het opslaan van het runbook en verificatie bij Azure-resources met behulp van beheerde identiteiten. Er wordt automatisch een beheerde identiteit voor u gemaakt wanneer u het Automation-account maakt.

  • Een virtuele machine van Azure. 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 waarmee de tekst Hallo wereld als uitvoer wordt gegeven.

  1. Open uw Automation-account in Azure Portal.

    Op de Automation-accountpagina vindt u een beknopte weergave van de resources in dit account. U hebt als het goed is al enkele assets. De meeste van deze assets zijn de modules die automatisch zijn 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. Selecteer Een runbook maken om een nieuw runbook te maken.

  4. Geef het runbook de naam MyFirstRunbook-Python.

  5. Selecteer Python als runbooktype.

  6. Selecteer Python 3.8 als runtime-versie.

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

Code toevoegen aan het runbook

Nu voegt u een eenvoudige opdracht toe om de tekst Hello World af 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 geeft u de uitvoer interactief weer.

  1. SelecteerTestvenster om het deelvenster Testen te openen.

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

  3. Een runbooktaak wordt gemaakt en de status ervan wordt weergegeven. De taakstatus begint als In wachtrij, wat aangeeft dat er wordt gewacht tot een runbook worker in de cloud beschikbaar is. De taakstatus verandert in Starten wanneer een worker de taak claimt en daarna in Wordt uitgevoerd, wanneer het runbook daadwerkelijk wordt uitgevoerd.

  4. Wanneer de runbooktaak is voltooid, wordt de uitvoer ervan weergegeven. In dit geval moet u Hello World zien.

  5. Sluit het deelvenster Testen om terug te gaan 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 het 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 het runbook zojuist is gemaakt.

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

  2. Als u het deelvenster MyFirstRunbook_python sluit, bent u terug op de pagina Runbooks , waar de ontwerpstatusGepubliceerd wordt weergegeven.

  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 weergeven, het runbook bewerken, plannen om het op een bepaald moment in de toekomst te starten en andere acties uitvoeren.

  4. Selecteer Starten en vervolgens OK wanneer het deelvenster Runbook starten wordt geopend.

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

  6. De taakstatus wordt weergegeven in het veld Status onder Essentials. De waarden hier komen overeen met de statuswaarden bij het testen van het runbook.

  7. Zodra de runbookstatus Voltooid is, selecteert u het tabblad Uitvoer . Op het tabblad Uitvoer ziet Hello Worldu .

  8. Sluit het tabblad Uitvoer .

  9. Selecteer het tabblad Alle logboeken om streams voor de runbooktaak weer te geven. U ziet enkel Hello World in de uitvoerstroom. Op dit tabblad kunnen echter andere streams voor een runbooktaak worden weergegeven, zoals Uitgebreid en Fout, als het runbook ernaar schrijft.

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

  11. Selecteer Taakresource om de pagina Takenresource voor dit runbook te openen. Op deze pagina worden alle taken weergegeven die met dit runbook zijn gemaakt. U zou slechts één weergegeven taak moeten zien, aangezien de taak slechts eenmaal is uitgevoerd.

  12. U kunt op deze taak klikken om hetzelfde deelvenster Taak te openen dat u hebt bekeken toen u het runbook startte. Met dit deelvenster kunt u teruggaan in de tijd en de details bekijken van elke taak die voor een bepaald runbook is gemaakt.

Verificatie toevoegen voor het beheren van Azure-resources

U hebt het runbook getest en gepubliceerd, maar tot nu toe doet het nog niets nuttigs. U wilt dat er Azure-resources mee worden beheerd. Als u resources wilt beheren, 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 resource Python-pakketten 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.

Notitie

De volgende code is getest met runtimeversie 3.8.

Beheerde identiteit

Als u een 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 uw Automation-account>accountinstellingen>Identiteit en stelt u status in op Aan.
  • Aan de beheerde identiteit is een rol toegewezen om de resource te beheren. In dit voorbeeld van het beheren van een virtuele-machineresource voegt u de rol Inzender voor virtuele machines toe aan de resourcegroep van die de virtuele machine bevat. Zie Azure-rollen toewijzen met behulp van de Azure Portal voor meer informatie

Als de rol identiteit 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)

Voeg code toe om de 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.')

Waarbij MyResourceGroup de naam van de resourcegroep is die de VM bevat, en TestVM de naam van de VM is die u wilt starten.

Test het runbook en voer het nogmaals uit om te zien of het de VM start.

Invoerparameters gebruiken

Het runbook gebruikt momenteel vastgelegde waarden voor de naam van de resourcegroep en de naam van de VM. Laten we nu code toevoegen die deze waarden ophaalt uit invoerparameters.

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

import sys

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

Met deze code importeert u de sys module en maakt u twee variabelen voor de namen van de resourcegroep en DE VM. U ziet dat het element van de argumentenlijst, sys.argv[0], de naam van het script is en niet door de gebruiker wordt ingevoerd.

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

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

Wanneer u een Python-runbook start, hetzij in het deelvenster Testen, hetzij als een gepubliceerd runbook, kunt u op de pagina Runbook starten, onder Parameters, de waarden voor de parameters invoeren.

Nadat u een waarde in het eerste vak begint in te voeren, verschijnt er een tweede, enzovoort, zodat u zoveel parameterwaarden kunt invoeren als nodig is.

De waarden zijn beschikbaar voor het script in de sys.argv-matrix zoals in de code die u zojuist hebt toegevoegd.

Voer de naam van uw resourcegroep in als de waarde van de eerste parameter, en de naam van de VM 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 stromen op te halen uit uw Python-runbooks, waaronder een waarschuwings-, fout- en foutopsporingsstroom.

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

Het volgende voorbeeld toont hoe deze conventie 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