Ejercicio: Creación de un trabajo de Azure Batch en la CLI para ejecutar la tarea paralela

Completado

La CLI de Azure le permite crear e implementar recursos de Azure Batch desde la línea de comandos.

Como el arquitecto de soluciones de la organización sin fines de lucro, quiere empezar por crear una solución de Batch para el escenario de OCR en Azure. Como primer paso, va a intentar crear una cuenta de Batch, un grupo de nodos de trabajo, un trabajo y tareas, todo esto con la CLI de Azure.

La CLI de Azure es una línea de comandos multiplataforma para crear y administrar recursos de Azure. Usa una sintaxis az noun verb --properties coherente. Los comandos de la CLI para administrar Azure Batch siguen esta convención, por lo que todos los comandos adoptan el formato de az batch verb --properties.

Importante

Los ejercicios de este módulo son opcionales. Para completar los ejercicios, necesitará su propia suscripción de Azure.

Creación de los recursos de Azure Batch

En primer lugar, creará la cuenta de Azure Batch y el grupo de nodos de trabajo para el escenario de prueba. Luego creará un trabajo de Batch y tareas para ejecutar en el grupo.

Creación de un grupo de recursos

  1. Inicie sesión en Azure Portal.

  2. Seleccione Grupos de recursos en el menú de la izquierda.

  3. Seleccione + Create (+ Crear).

  4. Complete el formulario para crear un grupo de recursos para el ejercicio y anote el nombre.

Creación de una cuenta de Azure Batch

  1. En el portal, abra Cloud Shell, seleccione el icono de Cloud Shell (>_) en el menú superior. Use el menú desplegable de la parte superior de la ventana de terminal para asegurarse de que está en Bash.

  2. Cree variables de entorno para el grupo de recursos y los recursos de Batch.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Ejecute el comando siguiente en Cloud Shell para crear una cuenta de Azure Batch. Elija una de las ubicaciones siguientes:

    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. Ejecute el comando siguiente para iniciar sesión en la cuenta de Azure Batch:

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Cree un grupo de tres máquinas virtuales Estándar A1 v2 que ejecuten 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. Ejecute el comando siguiente para determinar de manera periódica si los nodos están listos:

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

    Cuando esta consulta muestra que los nodos son "estables", están listos para funcionar. Aunque aparezcan como "redimensionados", en realidad se están aprovisionando. Puede usar la tecla de flecha arriba para repetir el comando más reciente en Cloud Shell si quiere consultar el estado de los nodos más de una vez.

  7. Ejecute el siguiente comando para crear un trabajo de Batch, que es una agrupación lógica para todas las tareas que se ejecutarán en los nodos:

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Ejecute el comando siguiente para crear tareas de 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
    

    Este bucle crea una serie de tareas de Batch numeradas, donde cada una de las cuales genera información sobre el identificador de tarea y el identificador de nodo implicados. Si examina detalladamente lo que ocurre aquí, verá algunas características de la forma en que funciona Azure Batch. Las tareas se programan de manera automática en nodos con capacidad disponible. Sin embargo, las variables de entorno que usamos (AZ_BATCH_TASK_ID y AZ_BATCH_NODE_ID) para mostrar información sobre qué tarea está en ejecución en qué nodo, solo están disponibles en el contexto del usuario de la tarea, una cuenta predeterminada que se crea en cada nodo para ejecutar tareas. Además, el argumento --command-line no se ejecuta directamente en un shell, por lo que deberá invocar de manera explícita el shell con /bin/bash -c para usar comandos como printenv y grep.

    Este bucle completa la implementación del trabajo de Azure Batch. Dejaremos la cuenta de Azure Batch y el grupo de nodos de trabajo para usarlos en el módulo siguiente, pero sí eliminaremos el trabajo de Batch. Como el trabajo de Batch actúa como contenedor para sus tareas de Batch, las tareas también se eliminan.

  9. Ejecute el comando siguiente en Cloud Shell para eliminar el trabajo de Batch:

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