Tutorial: Erstellen eines Python 3.8-Runbooks

Dieses Tutorial führt Sie durch die Erstellung eines Python 3.8-Runbooks in Azure Automation. Python-Runbooks werden unter Python 2.7 und 3.8 kompiliert. Sie können den Code des Runbooks direkt mit dem Text-Editor im Azure-Portal bearbeiten.

  • Erstellen eines einfachen Python-Runbooks
  • Testen und Veröffentlichen des Runbooks
  • Ausführen des Runbookauftrags und Nachverfolgen seines Status
  • Aktualisieren des Runbooks zum Starten eines virtuellen Azure-Computers mit Runbookparametern

Voraussetzungen

Für dieses Tutorial benötigen Sie Folgendes:

  • Ein Azure-Abonnement. Wenn Sie noch kein Abonnement haben, können Sie Ihre MSDN-Abonnentenvorteile aktivieren oder sich für ein kostenloses Konto registrieren.

  • Ein Azure Automation-Konto dient zur Speicherung des Runbooks und zur Authentifizierung mit verwalteten Identitäten gegenüber Azure-Ressourcen. Beim Erstellen des Automation-Kontos wird automatisch eine verwaltete Identität für Sie erstellt.

  • Einen virtuellen Azure-Computer. Da Sie diesen Computer im Verlauf dieses Tutorials starten und beenden, sollte es sich nicht um eine Produktions-VM handeln.

Erstellen eines neuen Runbooks

Erstellen Sie zunächst ein einfaches Runbook, das den Text Hello World ausgibt.

  1. Öffnen Sie im Azure-Portal Ihr Automation-Konto.

    Die Seite des Automation-Kontos bietet einen kurzen Überblick über die Ressourcen des Kontos. Sie sollten bereits über einige Objekte verfügen. Bei den meisten Objekten handelt es sich um die Module, die automatisch in einem neuen Automation-Konto enthalten sind.

    Außerdem sollte eine verwaltete Identität aktiviert sein, die in den Voraussetzungen erwähnt wird. Sie können dies überprüfen, indem Sie unter Kontoeinstellungen die Ressource Identität anzeigen.

  2. Wählen Sie unter Prozessautomatisierung die Option Runbooks aus, um die Liste der Runbooks zu öffnen.

  3. Wählen Sie Runbook erstellen aus, um ein neues Runbook zu erstellen.

  4. Nennen Sie das Runbook MyFirstRunbook-Python.

  5. Wählen Sie für Runbooktyp die Option Python aus.

  6. Wählen Sie als Runtimeversion Python 3.8 aus.

  7. Wählen Sie die Option Erstellen aus, um das Runbook zu erstellen und den Text-Editor zu öffnen.

Hinzufügen von Code zum Runbook

Fügen Sie nun einen einfachen Befehl hinzu, um den Text Hello World auszugeben.

print("Hello World!")

Wählen Sie Speichern aus, um das Runbook zu speichern.

Testen des Runbooks

Bevor Sie das Runbook für die Verwendung in der Produktionsumgebung veröffentlichen, sollten Sie sich vergewissern, dass es ordnungsgemäß funktioniert. Beim Testen eines Runbooks führen Sie die Entwurfsversion des Runbooks aus und sehen sich interaktiv die Ausgabe an.

  1. Wählen Sie Testbereich aus, um den Bereich Test zu öffnen.

  2. Wählen Sie die Option Starten aus, um den Test zu starten. Diese Optionen sollte als einzige aktiviert sein.

  3. Ein Runbookauftrag wird erstellt, und der dazugehörige Status wird angezeigt. Der Auftrag besitzt zunächst den Status In der Warteschlange. Hiermit wird angegeben, dass der Auftrag darauf wartet, dass in der Cloud ein Runbook Worker verfügbar wird. Wird der Auftrag von einem Worker übernommen, ändert sich der Status in Wird gestartet und anschließend in Wird ausgeführt, nachdem die Ausführung des Runbooks tatsächlich gestartet wurde.

  4. Nach Abschluss des Runbookauftrags wird die Ausgabe angezeigt. In diesem Fall sollte Hello World angezeigt werden.

  5. Schließen Sie den Bereich Test, um zur Canvas zurückzukehren.

Veröffentlichen und Starten des Runbooks

Das erstellte Runbook befindet sich immer noch im Entwurfsmodus. Sie müssen das Runbook veröffentlichen, um es in der Produktionsumgebung ausführen zu können. Beim Veröffentlichen eines Runbooks wird die vorhandene veröffentlichte Version durch die Entwurfsversion überschrieben. In diesem Fall ist noch keine veröffentlichte Version vorhanden, da Sie das Runbook gerade erst erstellt haben.

  1. Klicken Sie auf Veröffentlichen, um das Runbook zu veröffentlichen, und bestätigen Sie den Vorgang mit Ja.

  2. Wenn Sie den Bereich MyFirstRunbook_python schließen, befinden Sie sich wieder auf der Seite Runbooks, auf der der ErstellungsstatusVeröffentlicht angezeigt werden sollte.

  3. Wählen Sie in der Liste den Namen MyFirstRunbook-Python aus, und kehren Sie zum Bereich MyFirstRunbook-Python zurück.

    Mit den Optionen am oberen Rand können Sie das Runbook starten, das Runbook anzeigen, bearbeiten, seinen Start für einen späteren Zeitpunkt planen und weitere Aktionen durchführen.

  4. Wählen Sie Starten und dann OK aus, nachdem der Bereich Runbook starten geöffnet wurde.

  5. Der Bereich Auftrag für den soeben erstellten Runbookauftrag wird angezeigt. Dieser Bereich kann zwar geschlossen werden, lassen Sie ihn jedoch geöffnet, um den Status des Auftrags verfolgen zu können.

  6. Der Auftragsstatus wird unter Essentials im Feld Status angezeigt. Die Werte entsprechen hier den Statuswerten, wenn Sie das Runbook getestet haben.

  7. Sobald der Runbookstatus Abgeschlossen anzeigt, wählen Sie die Registerkarte Ausgabe aus. Auf der Registerkarte Ausgabe wird Hello World angezeigt.

  8. Schließen Sie den Bereich Ausgabe.

  9. Wählen Sie die Registerkarte Alle Protokolle aus, um Datenströme für den Runbookauftrag anzuzeigen. Im Ausgabestream sollte nur Hello World angezeigt werden. In dieser Registerkarte können aber auch andere Datenströme für einen Runbookauftrag angezeigt werden, z. B. vom Typ Ausführlich und Fehler, falls vom Runbook entsprechende Daten geschrieben werden.

  10. Schließen Sie den Bereich Aufträge, um zum Bereich MyFirstRunbook-Python zurückzukehren.

  11. Wählen Sie die Ressource Aufträge aus, um die Ressourcenseite Aufträge für dieses Runbook zu öffnen. Diese Seite enthält alle von diesem Runbook erstellten Aufträge. Hier ist nur ein einzelner Auftrag aufgeführt, da Sie den Auftrag bislang erst einmal ausgeführt haben.

  12. Sie können diesen Auftrag auswählen, um denselben Bereich Auftrag zu öffnen, den Sie beim Starten des Runbooks angezeigt haben. In diesem Bereich können Sie bereits ausgeführte Aufträge öffnen und Details zu jedem Auftrag anzeigen, der für ein bestimmtes Runbook erstellt wurde.

Hinzufügen von Authentifizierungsfunktionen für die Verwaltung von Azure-Ressourcen

Sie haben Ihr Runbook inzwischen zwar getestet und veröffentlicht, bislang ist es aber noch nicht sonderlich hilfreich. Sie möchten damit ja eigentlich Azure-Ressourcen verwalten. Zum Verwalten von Ressourcen muss sich das Skript authentifizieren.

Die empfohlene Möglichkeit zur Authentifizierung ist die verwaltete Identität. Beim Erstellen des Azure Automation-Kontos wird automatisch eine verwaltete Identität für Sie erstellt.

Um diese Beispiele zu verwenden, fügen Sie die folgenden Pakete in der Ressource Python-Pakete des Automation-Kontos hinzu. Sie können die WHL-Dateien für diese Pakete mit diesen Links hinzufügen.

Wenn Sie diese Pakete hinzufügen, wählen Sie eine Laufzeitversion aus, die Ihrem Runbook entspricht.

Hinweis

Der folgende Code wurde mit Laufzeitversion 3.8 getestet.

Verwaltete Identität

Um die verwaltete Identität zu verwenden, stellen Sie sicher, dass sie aktiviert ist:

  • Um zu überprüfen, ob die verwaltete Identität für das Automation-Konto aktiviert ist, navigieren Sie zu Ihrem Automation-Konto>Kontoeinstellungen>Identität, und legen Sie den Status auf Ein fest.
  • Der verwalteten Identität ist eine Rolle zur Verwaltung der Ressource zugewiesen. Fügen Sie diesem Beispiel für die Verwaltung einer VM-Ressource der Ressourcengruppe, die die virtuelle Maschine enthält, die Rolle „Mitwirkender virtueller Computer“ hinzu. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Wenn die Rolle „Identität verwalten“ konfiguriert ist, können Sie Code hinzufügen.

  1. Öffnen Sie den Text-Editor, indem Sie im Bereich MyFirstRunbook-Python die Option Bearbeiten auswählen.

  2. Fügen Sie für die Authentifizierung bei Azure den folgenden Code hinzu:

#!/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)

Hinzufügen von Code zum Erstellen eines Python-Computeclients und Starten des virtuellen Computers

Erstellen Sie für die Verwendung von virtuellen Azure-Computern eine Instanz des Azure-Compute-Clients 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.')

MyResourceGroup ist der Name der Ressourcengruppe, die den virtuellen Computer enthält, und TestVM ist der Name des virtuellen Computers, der gestartet werden soll.

Testen Sie das Runbook, und führen Sie es erneut aus, um zu ermitteln, ob der virtuelle Computer gestartet wird.

Verwenden von Eingabeparametern

Das Runbook verwendet derzeit hartcodierte Werte für die Namen der Ressourcengruppe und des virtuellen Computers. Wir fügen nun Code hinzu, der diese Werte aus Eingabeparametern abruft.

Sie verwenden die Variable sys.argv, um die Parameterwerte abzurufen. Fügen Sie im Runbook den folgenden Code unmittelbar nach den anderen import-Anweisungen hinzu:

import sys

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

Das sys-Modul wird durch diesen Code importiert, und es werden zwei Variablen für die Namen der Ressourcengruppe und des virtuellen Computers erstellt. Beachten Sie, dass das Element der Argumentliste (sys.argv[0]) der Name des Skripts ist und nicht vom Benutzer eingegeben wird.

Nun können Sie die letzten beiden Zeilen des Runbooks ändern, um anstelle hartcodierter Werte die Eingabeparameterwerte zu verwenden:

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

Beim Starten eines Python-Runbooks im Bereich Test oder als veröffentlichtes Runbook können Sie die Werte für Parameter auf der Seite Runbook starten unter Parameter eingeben.

Wenn Sie mit der Eingabe eines Werts im ersten Feld begonnen haben, wird jeweils ein weiteres Feld angezeigt, sodass Sie die erforderliche Anzahl von Parameterwerten eingeben können.

Die Werte stehen dem Skript wie im soeben hinzugefügten Code als sys.argv-Array zur Verfügung.

Geben Sie den Namen Ihrer Ressourcengruppe als Wert für den ersten Parameter und den Namen des zu startenden virtuellen Computers als Wert für den zweiten Parameter ein.

Enter parameter values

Klicken Sie auf OK, um das Runbook zu starten. Das Runbook wird ausgeführt und startet den angegebenen virtuellen Computer.

Fehlerbehandlung in Python

Sie können auch die folgenden Konventionen verwenden, um verschiedene Datenströme aus Ihren Python-Runbooks abzurufen – einschließlich WARNUNG, FEHLER und DEBUGGEN.

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

Das folgende Beispiel zeigt die Verwendung dieser Konvention in einem Block vom Typ try...except.

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

Nächste Schritte