Schnellstart: Verwenden der Azure CLI zum Erstellen eines Batch-Kontos und Ausführen eines Auftrags

In dieser Schnellstartanleitung erfahren Sie, wie Sie die ersten Schritte mit Azure Batch mithilfe von Azure CLI-Befehlen und -Skripts zum Erstellen und Verwalten von Batch-Ressourcen ausführen. Sie erstellen ein Batch-Konto mit einem Pool mit virtuellen Computern oder Compute-Knoten. Anschließend erstellen Sie einen Auftrag mit Aufgaben, die auf den Pool-Knoten ausgeführt werden, und führen diesen aus.

Nachdem Sie diese Schnellstartanleitung abgeschlossen haben, sind Sie mit den wichtigsten Konzepten des Batch-Diensts vertraut und verwenden Batch mit realistischeren, umfangreicheren Workloads.

Voraussetzungen

  • Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.

  • Azure Cloud Shell oder Azure CLI.

    Sie können die Azure CLI-Befehle in dieser Schnellstartanleitung interaktiv in Azure Cloud Shell ausführen. Um die Befehle in der Cloud Shell auszuführen, wählen Sie in der oberen rechten Ecke eines Codeblocks Cloud Shell öffnen aus. Wählen Sie Kopieren aus, um den Code zu kopieren, und fügen Sie ihn in Cloud Shell ein, um ihn auszuführen. Sie können Cloud Shell auch innerhalb des Azure-Portals ausführen. Cloud Shell verwendet immer die neueste Version der Azure CLI.

    Alternativ können Sie die Azure CLI auch lokal installieren, um die Befehle auszuführen. Für die Schritte in diesem Artikel ist mindestens Version 2.0.20 der Azure CLI erforderlich. Führen Sie den Befehl az version aus, um die installierte Version und abhängige Bibliotheken anzuzeigen, und führen Sie den Befehl az upgrade aus, um ein Upgrade durchzuführen. Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei Azure an.

Hinweis

Für einige Regionen und Abonnementtypen können Kontingenteinschränkungen dazu führen, dass die Erstellung eines Batch-Kontos oder -Knotens fehlschlägt oder nicht abgeschlossen ist. In diesem Fall können Sie eine kostenlose Kontingenterhöhung anfordern. Weitere Informationen finden Sie im Artikel Batch-Dienst – Kontingente und Limits.

Erstellen einer Ressourcengruppe

Führen Sie den folgenden Befehl az group create aus, um eine Azure-Ressourcengruppe mit dem Namen qsBatch in der Azure-Region eastus2 zu erstellen. Die Ressourcengruppe ist ein logischer Container, der die Azure-Ressourcen für diese Schnellstartanleitung enthält.

az group create \
    --name qsBatch \
    --location eastus2

Speicherkonto erstellen

Führen Sie den Befehl az storage account create aus, um ein Azure Storage-Konto zu erstellen, das mit Ihrem Batch-Konto verknüpft ist. Obwohl in dieser Schnellstartanleitung das Speicherkonto nicht verwendet wird, verwenden die meisten realen Batch-Workloads ein verknüpftes Speicherkonto, um Anwendungen bereitzustellen und Eingabe- und Ausgabedaten zu speichern.

Führen Sie den folgenden Befehl aus, um ein Speicherkonto der Standard_LRS-SKU mit dem Namen mybatchstorage in Ihrer Ressourcengruppe zu erstellen:

az storage account create \
    --resource-group qsBatch \
    --name mybatchstorage \
    --location eastus2 \
    --sku Standard_LRS

Erstellen eines Batch-Kontos

Führen Sie den folgenden Befehl az batch account create aus, um ein Batch-Konto mit dem Namen mybatchaccount in Ihrer Ressourcengruppe zu erstellen und es mit dem Speicherkonto mybatchstorage zu verknüpfen.

az batch account create \
    --name mybatchaccount \
    --storage-account mybatchstorage \
    --resource-group qsBatch \
    --location eastus2

Melden Sie sich beim neuen Batch-Konto an, indem Sie den Befehl az batch account login ausführen. Nachdem Sie Ihr Konto mit Batch authentifiziert haben, verwenden nachfolgende az batch-Befehle in dieser Sitzung diesen Kontokontext.

az batch account login \
    --name mybatchaccount \
    --resource-group qsBatch \
    --shared-key-auth

Erstellen eines Pools mit Computeknoten

Führen Sie den Befehl az batch pool create aus, um einen Pool mit Linux-Compute-Knoten in Ihrem Batch-Konto zu erstellen. Im folgenden Beispiel wird ein Pool mit dem Namen myPool erstellt, der zwei virtuelle Computer der Größe „Standard_A1_v2“ mit dem Betriebssystem Ubuntu 20.04 LTS enthält. Diese Knotengröße bietet für dieses Schnellstartbeispiel ein gutes Preis-Leistungs-Verhältnis.

az batch pool create \
    --id myPool \
    --image canonical:0001-com-ubuntu-server-focal:20_04-lts \
    --node-agent-sku-id "batch.node.ubuntu 20.04" \
    --target-dedicated-nodes 2 \
    --vm-size Standard_A1_v2

Batch erstellt den Pool sofort, aber es dauert einige Minuten, bis die Compute-Knoten zugeordnet und gestartet wurden. Führen Sie den Befehl az batch pool show aus, um den Pool-Status anzuzeigen. Mit diesem Befehl werden alle Eigenschaften des Pools angezeigt, und Sie können bestimmte Eigenschaften abfragen. Der folgende Befehl fragt den Zuordnungsstatus des Pools ab:

az batch pool show --pool-id myPool \
    --query "allocationState"

Während Batch die Knoten zuordnet und startet, befindet sich der Pool im Status resizing. Sie können einen Auftrag und Aufgaben erstellen, während sich der Pool weiterhin im Status resizing befindet. Der Pool ist für die Durchführung von Aufgaben bereit, wenn der Zuweisungsstatus steady lautet und alle Knoten ausgeführt werden.

Erstellen eines Auftrags

Führen Sie den Befehl az batch job create aus, um einen Batch-Auftrag für die Ausführung in Ihrem Pool zu erstellen. Ein Batchauftrag ist eine logische Gruppe für einen oder mehrere Tasks. Der Auftrag umfasst gemeinsame Einstellungen für die Aufgaben, z. B. den Pool zum Ausführen. Das folgende Beispiel erstellt einen Auftrag mit dem Namen myJob im Pool myPool, der anfänglich über keine Aufgaben verfügt.

az batch job create \
    --id myJob \
    --pool-id myPool

Erstellen von Auftragsaufgaben

In Batch gibt es mehrere Möglichkeiten, Apps und Skripts auf Computeknoten bereitzustellen. Führen Sie den Befehl az batch task create aus, um Aufgaben für die Ausführung im Auftrag zu erstellen. Jede Aufgabe verfügt über eine Befehlszeile, die eine App oder ein Skript angibt.

Das folgende Bash-Skript erstellt vier identische, parallele Aufgaben, die als myTask1 bis myTask4 bezeichnet werden. Die Befehlszeile für Aufgaben zeigt die Batch-Umgebungsvariablen auf dem Compute-Knoten an, und anschließend wird 90 Sekunden gewartet.

for i in {1..4}
do
   az batch task create \
    --task-id myTask$i \
    --job-id myJob \
    --command-line "/bin/bash -c 'printenv | grep AZ_BATCH; sleep 90s'"
done

In der Befehlsausgabe werden die Einstellungen für die einzelnen Aufgaben angezeigt. Batch verteilt die Aufgaben auf die Computeknoten.

Anzeigen des Aufgabenstatus

Nachdem Sie die Aufgabe erstellt haben, wird die Aufgabe von Batch zur Ausführung im Pool in die Warteschlange eingereiht. Sobald ein Knoten verfügbar ist, wird die Aufgabe auf dem Knoten ausgeführt.

Führen Sie den Befehl az batch task show aus, um den Status der Batch-Aufgaben anzuzeigen. Im folgenden Beispiel werden Details zum Status von myTask1 angezeigt:

az batch task show \
    --job-id myJob \
    --task-id myTask1

Die Befehlsausgabe umfasst viele Details. Ein exitCode von 0 gibt beispielsweise an, dass der Aufgabenbefehl erfolgreich durchgeführt wurde. Die nodeId zeigt den Namen des Pool-Knotens an, der die Aufgabe ausgeführt hat.

Anzeigen der Aufgabenausgabe

Führen Sie den Befehl az batch task file list aus, um die Dateien aufzulisten, die eine Aufgabe auf einem Knoten erstellt hat. Der folgende Befehl listet die Dateien auf, die von myTask1 erstellt wurden:

az batch task file list \
    --job-id myJob \
    --task-id myTask1 \
    --output table

Die Ergebnisse ähneln der folgenden Ausgabe:

Name        URL                                                                                       Is Directory    Content Length
----------  ----------------------------------------------------------------------------------------  --------------  ----------------
stdout.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stdout.txt  False                  695
certs       https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/certs       True
wd          https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/wd          True
stderr.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stderr.txt  False                    0

Mit dem Befehl az batch task file download werden Ausgabedateien in ein lokales Verzeichnis heruntergeladen. Führen Sie das folgende Beispiel aus, um die Datei stdout.txt herunterzuladen:

az batch task file download \
    --job-id myJob \
    --task-id myTask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

Sie können die Inhalte der standardmäßigen Ausgabedatei in einem Texteditor anzeigen. Das folgende Beispiel zeigt eine typische stdout.txt-Datei an. Die Standardausgabe dieser Aufgabe zeigt die Azure Batch-Umgebungsvariablen an, die auf dem Knoten festgelegt sind. Sie können in den Befehlszeilen Ihrer Batch-Auftragsaufgaben und in den Apps und Skripts, die die Befehlszeilen ausführen, auf diese Umgebungsvariablen verweisen.

AZ_BATCH_TASK_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1
AZ_BATCH_NODE_STARTUP_DIR=/mnt/batch/tasks/startup
AZ_BATCH_CERTIFICATES_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/certs
AZ_BATCH_ACCOUNT_URL=https://mybatchaccount.eastus2.batch.azure.com/
AZ_BATCH_TASK_WORKING_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/wd
AZ_BATCH_NODE_SHARED_DIR=/mnt/batch/tasks/shared
AZ_BATCH_TASK_USER=_azbatch
AZ_BATCH_NODE_ROOT_DIR=/mnt/batch/tasks
AZ_BATCH_JOB_ID=myJobl
AZ_BATCH_NODE_IS_DEDICATED=true
AZ_BATCH_NODE_ID=tvm-257509324_2-20180703t215033z
AZ_BATCH_POOL_ID=myPool
AZ_BATCH_TASK_ID=myTask1
AZ_BATCH_ACCOUNT_NAME=mybatchaccount
AZ_BATCH_TASK_USER_IDENTITY=PoolNonAdmin

Bereinigen von Ressourcen

Wenn Sie mit den Batch-Tutorials und -Beispielen fortfahren möchten, können Sie das Batch-Konto und das verknüpfte Speicherkonto, die sie in dieser Schnellstartanleitung erstellt haben, verwenden. Für das Batch-Konto selbst fallen keine Gebühren an.

Für Pools und Knoten fallen Gebühren an, während die Knoten ausgeführt werden, auch wenn sie keine Aufträge ausführen. Falls Sie einen Pool nicht mehr benötigen, führen Sie den Befehl az batch pool delete aus, um ihn zu löschen. Beim Löschen eines Pools werden alle Aufgabenausgaben auf den Knoten und die Knoten selbst gelöscht.

az batch pool delete --pool-id myPool

Wenn Sie keine der von Ihnen für diese Schnellstartanleitung erstellten Ressourcen mehr benötigen, führen Sie den Befehl az group delete aus, um die Ressourcengruppe und alle ihre Ressourcen zu löschen. Um die Ressourcengruppe, das Speicherkonto, das Batch-Konto, die Knoten-Pools und alle zugehörigen Ressourcen zu löschen, führen Sie den folgenden Befehl aus:

az group delete --name qsBatch

Nächste Schritte

In dieser Schnellstartanleitung haben Sie ein Batch-Konto und einen Batch-Pool erstellt, einen Batch-Auftrag und -Aufgaben erstellt und ausgeführt sowie die Aufgabenausgabe von den Knoten angezeigt. Da Sie sich jetzt mit den wichtigsten Konzepten des Batch-Diensts vertraut gemacht haben, können Sie Batch mit realistischeren, umfangreicheren Workloads verwenden. Weitere Informationen zu Azure Batch finden Sie in den Azure Batch-Tutorials.