Démarrage rapide : Utiliser Azure CLI pour créer un compte Batch et exécuter un travail

Ce guide de démarrage rapide vous montre comment démarrer avec Azure Batch à l’aide de commandes et de scripts Azure CLI pour créer et gérer des ressources Batch. Vous créez un compte Batch comportant un pool de machines virtuelles ou de nœuds de calcul. Vous créez et exécutez ensuite un travail avec des tâches qui s’exécutent sur les nœuds du pool.

À l’issue de ce démarrage rapide, vous maîtriserez les principaux concepts du service Batch et serez prêt à utiliser Batch avec des charges de travail plus réalistes à plus grande échelle.

Prérequis

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

  • Azure Cloud Shell ou Azure CLI.

    Vous pouvez exécuter les commandes Azure CLI de ce démarrage rapide de manière interactive dans Azure Cloud Shell. Pour exécuter les commandes dans le Cloud Shell, sélectionnez Ouvrir Cloudshell dans le coin supérieur droit d’un bloc de code. Sélectionnez Copier pour copier le code, puis collez-le dans Cloud Shell afin de l’exécuter. Vous pouvez exécuter Azure Cloud Shell à partir du Portail Azure. Cloud Shell utilise toujours la dernière version d’Azure CLI.

    Vous pouvez également installer Azure CLI localement pour exécuter les commandes. Les étapes décrites dans cet article nécessitent la version 2.0.20 ou ultérieure de l’interface de ligne de commande Azure. Exécutez az version pour connaître votre version installée et les bibliothèques dépendantes, puis exécutez az upgrade pour effectuer une mise à niveau. Si vous utilisez une installation locale, connectez-vous à Azure à l’aide de la commande az login.

Notes

Pour certaines régions et types d’abonnements, des restrictions de quota peuvent entraîner l’échec de la création ou une création incomplète d’un compte Batch ou d’un nœud. Dans cette situation, vous pouvez demander une augmentation de quota sans frais. Pour plus d’informations, consultez Quotas et limites du service Batch.

Créer un groupe de ressources

Exécutez la commande az group create suivante pour créer un groupe de ressources Azure nommé qsBatch dans la région Azure eastus2. Le groupe de ressources est un conteneur logique qui contient les ressources Azure requises pour ce démarrage rapide.

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

Créez un compte de stockage.

Utilisez la commande az storage account create pour créer un compte de stockage Azure à lier à votre compte Batch. Bien que ce guide de démarrage rapide n’utilise pas le compte de stockage, la plupart des charges de travail par lot réelles utilisent un compte de stockage lié pour déployer des applications et stocker les données d’entrée et de sortie.

Exécutez la commande suivante pour créer un compte de stockage SKU Standard_LRS nommé mybatchstorage dans votre groupe de ressources :

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

Création d’un compte Batch

Exécutez la commande az batch account create suivante pour créer un compte Batch nommé mybatchaccount dans votre groupe de ressources et le lier au compte de stockage mybatchstorage.

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

Connectez-vous au nouveau compte Batch en exécutant la commande az batch account login. Une fois que vous authentifiez votre compte avec Batch, les commandes suivantes az batch de cette session utilisent le contexte de ce compte.

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

Créer un pool de nœuds de calcul

Exécutez la commande az batch pool create pour créer un pool de nœuds de calcul Linux dans votre compte Batch. L’exemple suivant crée un pool appelé myPool avec deux nœuds Standard_A1_v2 exécutant Ubuntu 20.04 LTS. La taille de ce nœud offre un bon compromis entre performance et coût dans cet exemple de démarrage rapide.

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

Azure Batch crée le pool immédiatement, mais prend quelques minutes pour allouer et démarrer les nœuds de calcul. Pour afficher l’état du pool, exécutez la commande az batch pool show. Cette commande affiche toutes les propriétés du pool, vous pouvez également rechercher des propriétés spécifiques. La commande suivante interroge l’état d’allocation du pool :

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

Pendant que Batch alloue et démarre les nœuds, le pool est à l’état resizing. Vous pouvez continuer à créer un travail et des tâches pendant que l’état du pool est toujours en cours de resizing. Le pool est prêt à exécuter des tâches lorsque l’état de l’allocation est steady et que tous les nœuds sont en cours d’exécution.

Créer un travail

Utilisez la commande az batch job create pour créer un travail Batch à exécuter sur votre pool. Un travail Batch est un groupe logique d’une ou de plusieurs tâches. Le travail inclut des paramètres communs aux tâches, tels que la priorité et le pool sur lequel exécuter des tâches. L’exemple suivant crée un travail appelé myJob sur myPool qui n’a initialement aucune tâche.

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

Créer des tâches de travail

Azure Batch fournit plusieurs façons de déployer des applications et des scripts sur des nœuds de calcul. Utilisez maintenant la commande az batch task create pour créer des tâches à exécuter dans le travail. Chaque tâche a une ligne de commande qui spécifie une application ou un script.

Le script Bash suivant crée quatre tâches parallèles identiques appelées myTask1 via myTask4. Chaque tâche exécute une ligne de commande qui affiche les variables d’environnement Azure Batch sur le nœud de calcul, puis attend 90 secondes.

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

La sortie de commande affiche les paramètres pour chaque tâche. Azure Batch distribue les tâches pour les nœuds de calcul.

Affichage de l’état de la tâche

Après avoir créé une tâche, Azure Batch la met en file d’attente pour l’exécuter sur le pool. Une fois qu’un nœud est disponible, la tâche s’exécute sur le nœud.

Utilisez la commande az batch task show pour afficher l’état des tâches Azure Batch. L’image exemple suivante montre des détails sur l’état de myTask1 :

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

La sortie de la commande comprend de nombreux détails. Par exemple, un exitCode de 0 indique que la ligne de commande de la tâche s’est correctement effectuée. Le nodeId affiche le nom du nœud de pool qui a exécuté la tâche.

Afficher la sortie des tâches

Utilisez la commande az batch task file list pour répertorier les fichiers créés par une tâche sur un nœud. La commande suivante répertorie les fichiers créés par myTask1 :

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

Les résultats sont similaires à ce qui suit :

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

Pour télécharger un des fichiers de sortie dans un répertoire local, utilisez la commande az batch task file download. Exécutez l’exemple suivant pour télécharger le fichier stdout.txt :

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

Vous pouvez visualiser le contenu du fichier de sortie standard dans un éditeur de texte. L’exemple ci-dessous illustre un fichier stdout.txt classique. La sortie standard de cette tâche montre les variables d’environnement Azure Batch qui sont définies sur le nœud. Vous pouvez faire référence à ces variables d’environnement dans les lignes de commande de votre tâche Batch et dans les applications et les scripts que les lignes de commande exécutent.

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

Nettoyer les ressources

Si vous souhaitez poursuivre les exemples et tutoriels Azure Batch, vous pouvez utiliser le compte Batch et le compte de stockage lié que vous avez créés dans ce démarrage rapide. Aucun frais ne s’applique au compte Batch lui-même.

Les pools et les nœuds entraînent des frais pendant l’exécution des nœuds, même s’ils n’exécutent pas de tâches. Lorsque vous n’avez plus besoin d’un pool, supprimez-le avec la commande az batch pool delete. La suppression d’un pool supprime toutes les sorties des tâches sur les nœuds et les nœuds eux-mêmes.

az batch pool delete --pool-id myPool

Lorsque vous n’avez plus besoin des ressources que vous avez créées pour ce guide de démarrage rapide, vous pouvez utiliser la commande az group delete pour supprimer le groupe de ressources et toutes ses ressources. Pour supprimer le groupe de ressources et le compte de stockage, le compte Batch, les pools de nœuds et toutes les ressources associées, exécutez la commande suivante :

az group delete --name qsBatch

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé un compte et un pool Batch, créé et exécuté un travail et des tâches Batch, et vous avez consulté la sortie de tâche à partir des nœuds. Maintenant que vous maîtriserez les concepts clés du service Batch, vous êtes prêt à essayer Azure Batch avec des charges de travail plus réalistes à plus grande échelle. Pour plus d’informations sur Microsoft Azure Batch, consultez les didacticiels Azure Batch.