Início Rápido: usar a CLI do Azure para criar uma conta do Lote e executar um trabalho

Este início rápido mostra como começar a usar o Lote do Azure usando comandos e scripts da CLI do Azure para criar e gerenciar recursos do Lote. Você cria uma conta do Lote que tenha um pool de máquinas virtuais ou nós de computação. Em seguida, você cria e executa um trabalho com tarefas executadas nos nós do pool.

Depois de concluir este guia de início rápido, você entenderá os principais conceitos do serviço Lote e estará pronto para experimentá-lo com cargas de trabalho mais realistas em maior escala.

Pré-requisitos

  • Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

  • Azure Cloud Shell ou CLI do Azure.

    As etapas desse início rápido executam os comandos da CLI do Azure interativamente no Azure Cloud Shell. Para executar os comandos no Cloud Shell, selecione Abrir o CloudShell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e colá-lo no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell no portal do Azure. O Azure Cloud Shell sempre usa a última versão da CLI do Azure.

    Você também pode instalar a CLI do Azure localmente para executar os comandos. As etapas desse artigo exigem a CLI do Azure versão 2.0.20 ou posterior. Execute az version para localizar a versão instalada e as bibliotecas dependentes e execute az upgrade para atualizar. Se você usar uma instalação local, acesse o Azure usando o comando az login.

Observação

Para algumas regiões e tipos de assinatura, as restrições de cota podem fazer com que a criação da conta ou do nó do Lote falhe ou não seja concluída. Nessa situação, você pode solicitar um aumento de cota sem custo. Para saber mais, confira Limites e cotas do serviço de Lote.

Criar um grupo de recursos

Execute o comando az group create a seguir para criar um grupo de recursos do Azure chamado qsBatch na região eastus2 do Azure. O grupo de recursos é um contêiner lógico que contém os recursos do Azure para este início rápido.

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

Criar uma conta de armazenamento

Use o comando az storage account create para criar uma conta de Armazenamento do Azure para vincular à sua conta do Lote. Embora este início rápido não use a conta de armazenamento, a maioria das cargas de trabalho do Lote num cenário de vida real usa uma conta de armazenamento vinculada para implantar aplicativos e armazenar dados de entrada e saída.

Execute o seguinte comando para criar uma conta de armazenamento de SKU Standard_LRS chamada mybatchstorage em seu grupo de recursos:

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

Criar uma conta do Batch

Execute o comando az batch account create a seguir para criar uma conta do Lote chamada mybatchaccount em seu grupo de recursos e vinculá-la à conta de armazenamento mybatchstorage.

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

Entre na nova conta do Lote executando o comando az batch account login . Depois de autenticar sua conta com o Lote, os comandos az batch subsequentes nesta sessão usam esse contexto de conta.

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

Criar um pool de nós de computação

Execute o comando az batch pool create para criar um pool de nós de computação do Linux em sua conta do Lote. O exemplo a seguir cria um pool chamado myPool com duas VMs de tamanho Standard_A1_v2 executando o sistema operacional Ubuntu 20.04 LTS. O tamanho de nó sugerido oferece um bom equilíbrio entre desempenho e custo para este exemplo de início 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

O Lote cria o pool imediatamente, mas leva alguns minutos para alocar e iniciar os nós de computação. Para ver o status do pool, execute o comando az batch pool show. Este comando mostra todas as propriedades do pool, e você pode consultar propriedades específicas. A comando a seguir faz uma consulta sobre o estado de alocação do pool:

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

Enquanto o Lote aloca e inicia os nós, o pool está no estado resizing. Você pode criar um trabalho e tarefas enquanto o estado do pool for ainda de resizing. O pool está pronto para executar tarefas quando o estado de alocação é steady e todos os nós estão sendo executados.

Criar um trabalho

Use o comando az batch job create para criar um trabalho do Lote para ser executado no seu pool. Um Trabalho em lotes é um grupo lógico de uma ou mais tarefas. O trabalho inclui configurações comuns às tarefas, como o pool onde elas devem ser executadas. O exemplo a seguir cria um trabalho chamado myJob em myPool que inicialmente não tem tarefas.

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

Criar tarefas de trabalho

O Lote fornece várias maneiras para implantar aplicativos e scripts em nós de computação. Use o comando az batch task create para criar algumas tarefas e executar o trabalho. Cada tarefa tem uma linha de comando que especifica um aplicativo ou script.

O script Bash a seguir cria quatro tarefas paralelas idênticas chamadas myTask1 até myTask4. Cada tarefa executa uma linha de comando para exibir as variáveis de ambiente do Lote em um nó de computação e, em seguida, aguarda 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

A saída do comando mostra as configurações para cada uma das tarefas. O Lote distribui as tarefas para os nós de computação.

Exibir status da tarefa

Depois de criar uma tarefa, o Lote a enfileira para ser executada no pool. Depois que um nó estiver disponível, a tarefa será executada no nó.

Use o comando az batch task show para exibir o status das tarefas do Lote. A imagem de exemplo a seguir mostra detalhes sobre o status da myTask1:

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

A saída do comando inclui muitos detalhes. Por exemplo, um exitCode de 0 indica que a linha de comando da tarefa foi concluída com êxito. O nodeId mostra o nome do nó do pool que executou a tarefa.

Exibir saída da tarefa

Use o comando az batch task file list para listar os arquivos que uma tarefa criou em um nó. O comando abaixo lista os arquivos criados por myTask1:

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

Os resultados são semelhantes à seguinte saída:

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

O comando az batch task file download baixa arquivo de saída para um diretório local. Execute o seguinte exemplo para baixar o arquivo stdout.txt:

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

Você pode exibir o conteúdo de um arquivo de saída padrão em um editor de texto. O exemplo a seguir mostra um arquivo stdout.txt típico. A saída padrão dessa tarefa mostra as variáveis de ambiente do Lote do Azure definidas no nó. Você pode consultar essas variáveis de ambiente em suas linhas de comando da tarefa de um trabalho do Lote e, nos aplicativos e scripts, as linhas de comando são executadas.

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

Limpar os recursos

Se você quiser continuar com os exemplos e tutoriais do Lote, você pode continuar a usar a conta do Lote e a conta de armazenamento vinculada criada neste guia de início rápido. Não há nenhuma cobrança pela conta do Lote em si.

Pools e nós incorrem em custos enquanto os nós estão em execução, mesmo que não estejam executando trabalhos. Quando você não precisar mais um pool, exclua-o com o comando az batch pool delete. Excluir um pool exclui todas as saídas de tarefa nos nós e os nós em si.

az batch pool delete --pool-id myPool

Quando você não precisar mais de nenhum dos recursos criados para este início rápido, poderá usar o comando az group delete para excluir o grupo de recursos e todos os seus recursos. Para excluir o grupo de recursos e a conta de armazenamento, a conta do Lote, os pools de nós e todos os recursos relacionados, execute o seguinte comando:

az group delete --name qsBatch

Próximas etapas

Neste início rápido, você criou uma conta e um pool do Lote, criou e executou um trabalho e tarefas do Lote e exibiu a saída da tarefa dos nós. Agora que você conhece os conceitos principais do serviço do Lote, está pronto para usá-lo com cargas de trabalho mais realistas em maior escala. Para saber mais sobre o Lote do Azure, prossiga para os tutoriais do Lote do Azure.