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 l’organisation à but non lucratif, vous voulez démarrer la création d’une solution Batch pour le scénario de reconnaissance optique de caractères sur Azure. Dans un premier temps, vous allez tester la création d’un compte Batch, d’un pool de nœuds Worker, d’un projet et de tâches, tout cela en utilisant Azure CLI.

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

Important

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

Créer les ressources Azure Batch

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

Créer un groupe de ressources

  1. Connectez-vous au portail Azure.

  2. Dans le menu de gauche, sélectionnez Groupe de ressources.

  3. Sélectionnez + Créer.

  4. Remplissez le formulaire pour créer un groupe de ressources pour l’exercice et notez-en 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 du haut. Utilisez le menu déroulant en haut de la fenêtre de terminal pour vérifier 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. Exécutez la commande suivante dans Cloud Shell pour créer un compte Azure Batch. Choisissez 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 18.04 :

    az batch pool create \
     --id mypool --vm-size Standard_A1_v2 \
     --target-dedicated-nodes 3 \
     --image canonical:ubuntuserver:18.04-LTS \
     --node-agent-sku-id "batch.node.ubuntu 18.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"
    

    Quand cette requête montre que les nœuds sont « stables », c’est qu’ils sont prêts à fonctionner. Tant qu’ils sont à l’état « redimensionnement », cela signifie qu’ils sont en cours de provisionnement. Vous pouvez utiliser la touche de direction Haut pour répéter la commande la plus récente dans Cloud Shell si vous voulez 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 vont s’exécuter 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’elles générant 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 ayant une capacité disponible. Cependant, les variables d’environnement que nous utilisons (AZ_BATCH_TASK_ID et AZ_BATCH_NODE_ID) pour montrer des informations sur la tâche et le nœud sur lequel elle s’exécute sont disponibles seulement dans le contexte de l’utilisateur de la tâche, qui est un compte par défaut créé sur chaque nœud pour exécuter des tâches. En outre, l’argument --command-line ne s’exécute pas directement sous un shell : vous devez donc appeler explicitement le shell en utilisant /bin/bash -c pour pouvoir utiliser des commandes comme printenv et grep.

    Cette boucle termine l’implémentation du travail Azure Batch. Nous allons laisser en place le compte Azure Batch et le pool de nœuds Worker pour les utiliser dans le module suivant, mais nous allons supprimer le travail Batch. Comme le travail Batch agit comme un conteneur pour ses tâches Batch, les tâches sont également supprimées.

  9. Exécutez la commande suivante dans Cloud Shell pour supprimer le travail Batch :

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