Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Lernprogramm führt Sie durch die Erstellung eines Python 3.8-Runbook in Azure Automation. Python Runbooks kompilieren unter Python 2.7 und 3.8 Sie können den Code des Runbook direkt über den Text-Editor im Azure-Portal bearbeiten.
- Erstellen eines einfachen Python-Runbook
- Testen und Veröffentlichen des Runbook
- Ausführen des Runbookauftrags und Nachverfolgen seines Status
- Aktualisieren des Runbook zum Starten eines virtuellen Azure-Computers mit Runbook-Parametern
Voraussetzungen
Um die Schritte dieses Tutorials abzuschließen, benötigen Sie Folgendes:
Ein Azure-Abonnement. Wenn Sie noch keine haben, können Sie Ihre MSDN-Abonnentenvorteile aktivieren oder sich für ein kostenloses Konto registrieren.
Ein Automatisierungskonto, das das Runbook verwahrt und sich mit verwalteten Identitäten (Managed Identities) bei Azure-Ressourcen authentifiziert. Beim Erstellen des Automatisierungskontos wird automatisch eine verwaltete Identität für Sie erstellt.
Ein virtueller Azure-Computer. In diesem Lernprogramm starten und beenden Sie diesen Computer, daher sollte es sich nicht um eine Produktions-VM handelt.
Erstellen Sie ein neues Runbook
Sie erstellen zunächst ein einfaches Runbook, das den Text "Hello World" ausgibt.
Öffnen Sie im Azure-Portal Ihr Automatisierungskonto.
Auf der Seite "Automatisierungskonto" erhalten Sie einen schnellen Überblick über die Ressourcen in diesem Konto. Sie sollten bereits über einige Ressourcen verfügen. Die meisten dieser Ressourcen sind die Module, die automatisch in einem neuen Automatisierungskonto enthalten sind.
Sie sollten auch eine verwaltete Identität aktiviert haben, die in den Voraussetzungen erwähnt wird. Sie können dies überprüfen, indem Sie die Ressource Identität unter Kontoeinstellungen anzeigen.
Wählen Sie "Runbooks " unter "Prozessautomatisierung " aus, um die Liste der Runbooks zu öffnen.
Wählen Sie "Runbook erstellen" aus, um ein neues Runbook zu erstellen.
Geben Sie dem Runbook den Namen MyFirstRunbook-Python.
Wählen Sie Python für den Runbook-Typ aus.
Wählen Sie Python 3.8 für die Runtime-Version aus.
Wählen Sie "Erstellen" aus, um das Runbook zu erstellen und den Text-Editor zu öffnen.
Hinzufügen von Code zum Runbook
Nun fügen Sie einen einfachen Befehl zum Drucken des Texts Hello Worldhinzu.
print("Hello World!")
Wählen Sie "Speichern" aus, um das Runbook zu speichern.
Testen Sie das Runbook
Bevor Sie das Runbook veröffentlichen, um es in der Produktion verfügbar zu machen, möchten Sie es testen, um sicherzustellen, dass es ordnungsgemäß funktioniert. Beim Testen eines Runbooks führen Sie die Entwurfsversion des Runbooks aus und sehen sich interaktiv die Ausgabe an.
Wählen Sie den Testbereich aus, um den Testbereich zu öffnen.
Wählen Sie "Start" aus, um den Test zu starten. Diese Option sollte die einzige aktivierte Option sein.
Ein Runbook-Auftrag wird erstellt und sein Status 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.
Nach Abschluss des Runbookauftrags wird die Ausgabe angezeigt. In diesem Fall sollten Sie
Hello Worldsehen.Schließen Sie den Testbereich, um zum Canvas zurückzukehren.
Veröffentlichen und Starten des Runbooks
Das erstellte Runbook befindet sich weiterhin im Entwurfsmodus. Sie müssen sie veröffentlichen, bevor Sie sie in der Produktion ausführen können. Beim Veröffentlichen eines Runbooks wird die vorhandene veröffentlichte Version durch die Entwurfsversion überschrieben. In diesem Fall verfügen Sie noch nicht über eine veröffentlichte Version, da Sie gerade das Runbook erstellt haben.
Wählen Sie "Veröffentlichen" aus, um das Runbook zu veröffentlichen, und wählen Sie dann "Ja " aus, wenn Sie dazu aufgefordert werden.
Wenn Sie den Bereich MyFirstRunbook_python schließen, befinden Sie sich wieder auf der Seite Runbooks, auf der der ErstellungsstatusVeröffentlicht angezeigt werden sollte.
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.
Wählen Sie "Start" und dann "OK " aus, wenn der Start-Runbook-Bereich geöffnet wird.
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.
Der Auftragsstatus wird im Feld "Status " unter "Essentials" angezeigt. Die hier aufgeführten Werte stimmen mit den Statuswerten überein, wenn Sie das Runbook getestet haben.
Sobald der Runbook-Status Abgeschlossen angezeigt wird, wählen Sie die Registerkarte Ausgabe aus. Auf der Registerkarte Ausgabe wird
Hello Worldangezeigt.Schließen Sie die Registerkarte "Ausgabe ".
Wählen Sie die Registerkarte Alle Protokolle aus, um Streams für den Runbook-Job anzuzeigen. Im Ausgabedatenstrom sollte nur
Hello Worldangezeigt 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.Schließen Sie den Bereich "Aufträge ", um zum Bereich "MyFirstRunbook-Python " zurückzukehren.
Wählen Sie "Aufträge" aus, um die Ressourcenseite "Aufträge" für dieses Runbook zu öffnen. Auf dieser Seite werden alle Jobs aufgelistet, die von diesem Runbook erstellt wurden. Es sollte nur ein Job aufgelistet werden, da Sie den Job nur einmal ausgeführt haben.
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 der Authentifizierung zum Verwalten von Azure-Ressourcen
Sie haben Ihr Runbook getestet und veröffentlicht, aber bisher hat es nichts Nützliches getan. Sie wollen Azure-Ressourcen verwalten lassen. Zum Verwalten von Ressourcen muss sich das Skript authentifizieren.
Die empfohlene Methode zur Authentifizierung ist mit verwalteter Identität. Wenn Sie ein Azure Automation-Konto erstellen, wird automatisch eine verwaltete Identität für Sie erstellt.
Um diese Beispiele zu verwenden, fügen Sie die folgenden Pakete in der Python-Paketressource des Automatisierungskontos 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 verwaltete Identität zu verwenden, stellen Sie sicher, dass sie aktiviert ist:
- Um zu überprüfen, ob die verwaltete Identität für Ihr Automatisierungskonto> aktiviert ist, gehen Sie zu den Kontoeinstellungen>, wählen Sie Identität aus, und setzen Sie den Status auf Ein.
- Der verwalteten Identität wurde eine Rolle zum Verwalten der Ressource zugewiesen. Fügen Sie in diesem Beispiel zum Verwalten einer Ressource für virtuelle Computer die Rolle "Mitwirkender virtueller Computer" der Ressourcengruppe hinzu, die den virtuellen Computer enthält. Weitere Informationen finden Sie unter Zuweisen von Azure-Rollen mithilfe des Azure-Portals
Nachdem die Identitätsrolle "Verwalten" konfiguriert ist, können Sie mit dem Hinzufügen von Code beginnen.
Öffnen Sie den Text-Editor, indem Sie im Bereich "MyFirstRunbook-Python" "Bearbeiten" auswählen.
Fügen Sie den folgenden Code zur Authentifizierung bei Azure 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 des Python Compute-Clients und Starten des virtuellen Computers
Um mit Azure-VMs zu arbeiten, erstellen Sie 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.')
Dabei MyResourceGroup handelt es sich um den Namen der Ressourcengruppe, die den virtuellen Computer enthält, und TestVM der Name des virtuellen Computers, den Sie starten möchten.
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. Nun fügen wir Code hinzu, der diese Werte aus Eingabeparametern abruft.
Sie verwenden die sys.argv Variable, um die Parameterwerte abzurufen. Fügen Sie dem Runbook unmittelbar nach den anderen import Anweisungen den folgenden Code hinzu:
import sys
resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])
Dieser Code importiert das sys Modul und erstellt zwei Variablen, um die Ressourcengruppen- und VM-Namen zu enthalten. Beachten Sie, sys.argv[0]dass das Element der Argumentliste der Name des Skripts ist und vom Benutzer nicht eingegeben wird.
Jetzt können Sie die letzten beiden Zeilen des Runbook so ändern, dass die Eingabeparameterwerte verwendet werden, anstatt hartcodierte Werte zu verwenden:
async_vm_start = compute_client.virtual_machines.begin_start(
resource_group_name, vm_name)
async_vm_start.wait()
Wenn Sie ein Python-Runbook starten, entweder über den Testbereich oder als veröffentlichtes Runbook, können Sie die Werte für Parameter auf der Seite "Start Runbook " unter "Parameter" eingeben.
Nachdem Sie mit der Eingabe eines Werts im ersten Feld begonnen haben, wird eine Zweite angezeigt usw., damit Sie beliebig viele Parameterwerte eingeben können.
Die Werte sind für das Skript im sys.argv Array verfügbar, wie im soeben hinzugefügten Code.
Geben Sie den Namen der Ressourcengruppe als Wert für den ersten Parameter und den Namen der VM ein, die als Wert des zweiten Parameters gestartet werden soll.
Wählen Sie "OK" aus, um das Runbook zu starten. Das Runbook wird ausgeführt und startet den von Ihnen angegebenen virtuellen Computer.
Fehlerbehandlung in Python
Sie können auch die folgenden Konventionen verwenden, um verschiedene Streams aus Ihren Python-Runbooks abzurufen, einschließlich WARNUNG, ERROR und DEBUG-Streams.
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 diese Konvention, die in einem try...except Block verwendet wird.
try:
raise Exception('one', 'two')
except Exception as detail:
print ('ERROR: Handling run-time error:', detail)
Nächste Schritte
Weitere Informationen zu den Vorteilen und Einschränkungen der verschiedenen Runbook-Typen finden Sie unter Azure Automation-Runbook-Typen.
Informationen zum Entwickeln für Azure mit Python finden Sie in Azure für Python-Entwickler.
Beispiele für Python 3-Runbooks finden Sie im GitHub-Repository für Azure Automation.