Inicio rápido: Uso de la CLI de Azure para crear una cuenta de Batch y ejecutar un trabajo

En este inicio rápido se muestra cómo empezar a trabajar con Azure Batch mediante comandos y scripts de la CLI de Azure para crear y administrar recursos de Batch. Cree una cuenta de Batch que tenga un grupo de máquinas virtuales o nodos de ejecución. A continuación, creará y ejecutará un trabajo con tareas que se ejecutan en los nodos del grupo.

Tras completar este inicio rápido, comprenderá los conceptos clave del servicio Batch y estará listo para usar dicho servicio con cargas de trabajo más realistas y a mayor escala.

Requisitos previos

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

  • Azure Cloud Shell o la CLI de Azure.

    Puede ejecutar los comandos de la CLI de Azure en este inicio rápido de forma interactiva en Azure Cloud Shell. Para ejecutar los comandos en Cloud Shell, seleccione Abrir CloudShell en la esquina superior derecha de un bloque de código. Seleccione Copiar para copiar el código y péguelo en Cloud Shell para ejecutarlo. También podrá ejecutar Cloud Shell desde Azure Portal. Cloud Shell siempre usa la versión más reciente de la CLI de Azure.

    De forma alternativa, puede instalar la CLI de Azure localmente para ejecutar los comandos. Los pasos de este artículo requieren la CLI de Azure, versión 2.0.20 o posterior. Ejecute az version para ver la versión instalada y las bibliotecas dependientes, y ejecute az upgrade para actualizar. Si usa una instalación local, inicie sesión en Azure mediante el comando az login.

Nota

En algunas regiones y tipos de suscripción, las restricciones de cuota pueden provocar un error en la creación de cuentas o nodos de Batch o que no se completen. En esta situación, puede solicitar un aumento de cuota sin cargo alguno. Para más información, consulte Límites y cuotas del servicio Batch.

Crear un grupo de recursos

Ejecute el siguiente comando az group create para crear un grupo de recursos de Azure denominado qsBatch en la región de Azure eastus2. El grupo de recursos es un contenedor lógico que contiene los recursos de Azure para este inicio rápido.

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

Crear una cuenta de almacenamiento

Puede utilizar el comando az storage account create para crear una cuenta de Azure Storage para vincularse a la cuenta de Batch. Aunque este inicio rápido no usa la cuenta de almacenamiento, la mayoría de las cargas de trabajo de Batch del mundo real usan una cuenta de almacenamiento vinculada para implementar aplicaciones y almacenar datos de entrada y salida.

Ejecute el siguiente comando para crear una cuenta de almacenamiento de SKU de Standard_LRS denominada mybatchstorage en el grupo de recursos:

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

Crear una cuenta de Batch

Ejecute el siguiente comando az batch account create para crear una cuenta de Batch denominada mybatchaccount en el grupo de recursos y vincularla con la mybatchstorage cuenta de almacenamiento.

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

Inicie sesión en la nueva cuenta de Batch mediante la ejecución del comando az batch account login. Una vez autenticada la cuenta con Batch, los comandos az batch posteriores de esta sesión usan este contexto de cuenta.

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

Creación de un grupo de nodos de proceso

Ejecute el comando az batch pool create para crear un grupo de nodos de ejecución de Linux en la cuenta de Batch. En el ejemplo siguiente se crea un grupo denominado myPool de dos nodos Standard_A1_v2 que ejecutan Ubuntu 20.04 LTS. El tamaño del nodo ofrece un buen equilibrio entre rendimiento y costo para este ejemplo de inicio rápido.

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 crea el grupo inmediatamente, pero tarda unos minutos en asignar e iniciar los nodos de ejecución. Para ver el estado del grupo, use el comando az batch pool show. Este comando muestra todas las propiedades del grupo y puede consultar propiedades concretas. El comando siguiente consulta el estado de asignación del grupo:

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

Mientras Batch asigna e inicia los nodos, el grupo está en estado resizing. Puede crear un trabajo y tareas mientras el estado del grupo aún es resizing. El grupo está listo para ejecutar tareas cuando el estado de asignación es steady y todos los nodos están en ejecución.

Creación de un trabajo

Use el comando az batch job create para crear un trabajo de Batch que se ejecute en el grupo. Un trabajo de Batch es un grupo lógico de una o varias tareas. El trabajo incluye configuraciones comunes a las tareas, como el grupo en el que se ejecuta. En el ejemplo siguiente se crea un trabajo llamado myJob en myPool que inicialmente no tiene ninguna tarea.

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

Creación de tareas de trabajo

Batch proporciona varias formas de implementar aplicaciones y scripts en nodos de proceso. Use el comando az batch task create para crear tareas que se ejecutarán en el trabajo. Cada tarea tiene una línea de comandos que especifica una aplicación o script.

El siguiente script de Bash crea cuatro tareas paralelas idénticas llamadas myTask1 a través de myTask4. La línea de comandos de la tarea muestra las variables de entorno de Batch en el nodo de ejecución y, a continuación, espera 90 segundos.

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 salida del comando muestra la configuración de cada tarea. Batch distribuye las tareas a los nodos de proceso.

Visualización del estado de la tarea

Después de crear la tarea, Batch pone en cola la tarea para ejecutarla en el grupo. Una vez que un nodo está disponible, la tarea se ejecuta en el nodo.

Use el comando az batch task show para ver el estado de las tareas de Batch. El siguiente ejemplo muestra detalles sobre el estado de myTask1:

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

La salida del comando incluye muchos detalles. Por ejemplo, un valor exitCode de 0, indica que la línea de comandos de la tarea se completó correctamente. El nodeId muestra el nombre del nodo de grupo que ejecutó la tarea.

Visualización de la salida de la tarea

Use el comando az batch task file list para enumerar los archivos creados en un nodo. El siguiente comando enumera los archivos myTask1 creados:

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

Los resultados son similares a la salida siguiente:

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

El comando az batch task file download descarga los archivos de salida en un directorio local. Ejecute el ejemplo siguiente para descargar el archivo stdout.txt:

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

Puede ver el contenido del archivo de salida estándar en un editor de texto. En el ejemplo siguiente se muestra un archivo stdout.txt típico. La salida estándar de esta tarea muestra las variables de entorno de Azure Batch que se establecen en el nodo. Puede hacer referencia a estas variables de entorno en las líneas de comandos de la tarea de trabajo Batch y en las aplicaciones y scripts que ejecutan las líneas de comandos.

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

Limpieza de recursos

Si desea continuar con los ejemplos y tutoriales de Batch, puede usar la cuenta de Batch y la cuenta de almacenamiento vinculada que se ha creado en este inicio rápido. No se realizan cargos por la cuenta de Batch en sí.

Los grupos y nodos incurren en cargos mientras se ejecutan los nodos, incluso si no ejecutan trabajos. Cuando deje de necesitar alguno de los grupos, use el comando az batch pool delete para eliminarlo. Al eliminar un grupo, se eliminan todas las tareas de salida sobre los nodos y los propios nodos.

az batch pool delete --pool-id myPool

Cuando ya no necesite ninguno de los recursos que creó para esta guía de inicio rápido, puede usar el comando az group delete para eliminar el grupo de recursos y todos sus recursos. Para eliminar el grupo de recursos y la cuenta de almacenamiento, la cuenta de Batch, los grupos de nodos y todos los recursos relacionados, ejecute el siguiente comando:

az group delete --name qsBatch

Pasos siguientes

En este inicio rápido, ha creado una cuenta y un grupo de Batch, ha creado y ejecutado un trabajo y tareas de Batch, y ha visto la salida de la tarea de los nodos. Ahora que conoce los conceptos clave del servicio Batch, ya esta listo para usar Batch con cargas de trabajo más realistas y a mayor escala. Para más información acerca de Azure Batch, continúe con los tutoriales de Azure Batch.