Exercice - Créer un travail Azure Batch dans l’interface CLI pour exécuter votre tâche parallèle

Effectué

Azure CLI vous permet de créer et de déployer des ressources Azure Batch à partir de la ligne de commande.

En tant qu’architecte de solution pour les buts non lucratifs, vous souhaitez commencer à créer une solution Batch pour le scénario OCR (Optical Character Recognition) sur Azure. Pour commencer, vous allez tester la création d’un compte Batch, d’un pool de nœuds Worker, d’un travail et de tâches, à l’aide d’Azure CLI.

Azure CLI est une ligne de commande multiplateforme permettant de créer et de gérer des ressources Azure. Il utilise une syntaxe cohérente az noun verb --properties . Les commandes CLI pour gérer Azure Batch suivent cette convention, et donc toutes les commandes prennent la forme az batch verb --properties.

Important

Les exercices de ce module sont facultatifs. Pour effectuer les exercices, vous avez besoin de votre propre abonnement Azure.

Créer les ressources Azure Batch

Tout d’abord, vous créez le compte Azure Batch et le pool de nœuds Worker pour votre scénario de test. Vous créez ensuite un travail et des tâches Batch à exécuter dans le pool.

Création d’un groupe de ressources

  1. Connectez-vous au portail Azure.

  2. Sélectionnez Groupes de ressources dans le menu de gauche.

  3. Sélectionnez + Créer.

  4. Remplissez le formulaire pour créer un groupe de ressources pour l’exercice et notez le nom.

Créer le compte Azure Batch

  1. Dans le portail, ouvrez Cloud Shell en sélectionnant l’icône Cloud Shell (>_) dans le menu supérieur. Utilisez le menu déroulant en haut de la fenêtre de terminal pour vous assurer que vous êtes dans Bash.

  2. Créez des variables d’environnement pour votre groupe de ressources et votre ressource batch.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Créez un compte Azure Batch en exécutant la commande suivante dans Cloud Shell. Choisissez parmi l’un des emplacements suivants :

    westeurope,eastus,eastus2,westus,northcentralus,brazilsouth,northeurope,centralus,eastasia,japaneast,australiasoutheast,japanwest,koreasouth,koreacentral,southeastasia,southcentralus,australiaeast,southindia,centralindia,westindia,canadacentral,canadaeast,uksouth,ukwest,westcentralus,westus2,francecentral,southafricanorth
    
    az batch account create \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --location <choose a location from the preceding list>
    
  4. Exécutez la commande suivante pour vous connecter à votre compte Azure Batch :

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Créez un pool de trois machines virtuelles Standard A1 v2 exécutant Ubuntu 22.04 :

    az batch pool create \
     --id mypool --vm-size Standard_A1_v2 \
     --target-dedicated-nodes 3 \
     --image canonical:ubuntuserver:22.04-LTS \
     --node-agent-sku-id "batch.node.ubuntu 22.04"  
    
  6. Exécutez la commande suivante pour déterminer périodiquement si les nœuds sont prêts :

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

    Lorsque cette requête indique que les nœuds sont « stables », ils sont prêts à fonctionner. Tant qu’ils sont à l’état « redimensionnement », cela signifie qu’ils sont en cours d’approvisionnement. Vous pouvez utiliser la flèche vers le haut pour répéter la commande la plus récente dans Cloud Shell si vous souhaitez interroger l’état des nœuds plusieurs fois.

  7. Exécutez la commande suivante pour créer un travail Batch, qui est un regroupement logique pour toutes les tâches qui s’exécutent sur vos nœuds :

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Exécutez la commande suivante pour créer des tâches Batch :

    for i in {1..10}
    do
       az batch task create \
        --task-id mytask$i \
        --job-id myjob \
        --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'"
    done
    

    Cette boucle crée une série de tâches Batch numérotées, chacune d’entre elles génère des informations sur l’ID de tâche et l’ID de nœud impliqués. En examinant de près ce qui se passe ici, vous pouvez voir quelques caractéristiques de la façon dont Azure Batch fonctionne. Les tâches sont automatiquement planifiées sur des nœuds avec une capacité disponible. Toutefois, les variables d’environnement que nous utilisons (AZ_BATCH_TASK_ID et AZ_BATCH_NODE_ID), pour afficher des informations sur la tâche en cours d’exécution sur quel nœud, ne sont disponibles que dans le contexte de l’utilisateur de tâche, un compte par défaut créé sur chaque nœud afin d’exécuter des tâches. En outre, l’argument --command-line ne s’exécute pas directement sous un interpréteur de commandes. Vous devez donc appeler explicitement l’interpréteur de commandes /bin/bash -c pour utiliser des commandes comme printenv et grep.

    Cette boucle termine l’implémentation du travail Azure Batch. Laissez le compte Azure Batch et le pool de nœuds de travail en place pour une utilisation dans le module suivant, mais supprimez la tâche Batch. Le travail Batch agissant comme un conteneur pour ses tâches Batch, les tâches sont également supprimées.

  9. Supprimez le travail Batch en exécutant la commande suivante dans Cloud Shell :

    az batch job delete --job-id myjob -y