Compartir a través de


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 artículo de inicio rápido, comprenderás los conceptos clave del servicio Batch y estarás listo para usar dicho servicio con cargas de trabajo más realistas y a mayor escala.

Requisitos previos

  • Si no tiene una cuenta de Azure, cree una cuenta gratuita antes de comenzar.

  • 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 apropiado.

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. El grupo de recursos es un contenedor lógico que contiene los recursos de Azure para este artículo de inicio rápido.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export REGION="canadacentral"
export RESOURCE_GROUP="qsBatch$RANDOM_SUFFIX"

az group create \
    --name $RESOURCE_GROUP \
    --___location $REGION

Resultados:

{
    "id": "/subscriptions/xxxxx/resourceGroups/qsBatchxxx",
    "___location": "eastus2",
    "managedBy": null,
    "name": "qsBatchxxx",
    "properties": {
         "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.Resources/resourceGroups"
}

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 artículo de 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 en el grupo de recursos:

export STORAGE_ACCOUNT="mybatchstorage$RANDOM_SUFFIX"

az storage account create \
    --resource-group $RESOURCE_GROUP \
    --name $STORAGE_ACCOUNT \
    --___location $REGION \
    --sku Standard_LRS

Crear una cuenta de Batch

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

export BATCH_ACCOUNT="mybatchaccount$RANDOM_SUFFIX"

az batch account create \
    --name $BATCH_ACCOUNT \
    --storage-account $STORAGE_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --___location $REGION

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 $BATCH_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --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 que consta de dos máquinas virtuales de tamaño Standard_A1_v2 que ejecutan ubuntu 20.04 LTS OS. El tamaño del nodo ofrece un buen equilibrio entre rendimiento y costo para este ejemplo de inicio rápido.

export POOL_ID="myPool$RANDOM_SUFFIX"

az batch pool create \
    --id $POOL_ID \
    --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 $POOL_ID \
    --query "{allocationState: allocationState}"

Resultados:

{
    "allocationState": "resizing"
}

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 que inicialmente no tiene tareas.

export JOB_ID="myJob$RANDOM_SUFFIX"

az batch job create \
    --id $JOB_ID \
    --pool-id $POOL_ID

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 $JOB_ID \
    --command-line "/bin/bash -c 'printenv | grep AZ_BATCH; sleep 90s'"
done

Batch distribuye las tareas a los nodos de proceso.

Visualización del estado de la tarea

Después de crear las tareas, Batch las pone en cola para que se ejecuten en el grupo. Una vez que un nodo está disponible, una 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 $JOB_ID \
    --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:

# Wait for task to complete before downloading output
echo "Waiting for task to complete..."
while true; do
    STATUS=$(az batch task show --job-id $JOB_ID --task-id myTask1 --query "state" -o tsv)
    if [ "$STATUS" == "running" ]; then
        break
    fi
    sleep 10
done

az batch task file list --job-id $JOB_ID --task-id myTask1 --output table

Los resultados son similares a la salida siguiente:

Resultados:

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 $JOB_ID \
    --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=myJob
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

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 conoces los conceptos clave del servicio Batch, ya estás 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.