Exercício – Criar um trabalho em Lote do Azure na CLI para executar sua tarefa paralela

Concluído

A CLI do Azure permite criar e implantar recursos do Lote do Azure da linha de comando.

Como o arquiteto de soluções para a organização sem fins lucrativos, você deseja começar a criar uma solução do Lote para o cenário de OCR no Azure. Como uma primeira etapa, você vai testar a criação de uma conta do Lote, um pool de nós de trabalho, um trabalho e tarefas, tudo isso usando a CLI do Azure.

A CLI do Azure é uma linha de comando multiplataforma para criar e gerenciar recursos do Azure. Ela usa uma sintaxe az noun verb --properties consistente. Comandos da CLI para gerenciar o Lote do Azure seguem essa convenção, portanto, todos os comandos assumem a forma de az batch verb --properties.

Importante

Os exercícios neste módulo são opcionais. Para concluir os exercícios, você precisará ter uma assinatura própria do Azure.

Criar os recursos do Lote do Azure

Primeiro, você criará a conta de Lote do Azure e o pool de nós de trabalho para seu cenário de teste. Em seguida, criará um trabalho em Lotes e tarefas para execução no pool.

Criar um grupo de recursos

  1. Faça logon no Portal do Azure.

  2. Selecione Grupos de recursos no menu à esquerda.

  3. Selecione + Criar.

  4. Preencha o formulário para criar um novo grupo de recursos para o exercício e anote o nome.

Criar a conta do Lote do Azure

  1. No portal, abra o Cloud Shell selecionando o ícone do Cloud Shell (>_) no menu superior. Use o menu suspenso na parte superior da janela do terminal para garantir que você esteja no Bash.

  2. Crie variáveis de ambiente para o recurso de lote e o grupo de recursos.

    RESOURCE_GROUP=<your resource group>
    BATCH_ACCOUNT=batchaccount$RANDOM
    
  3. Execute o comando a seguir no Cloud Shell para criar uma conta do Lote do Azure. Escolha um dos seguintes locais:

    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. Execute o seguinte comando para entrar em sua conta do Lote do Azure:

    az batch account login \
     --name $BATCH_ACCOUNT \
     --resource-group $RESOURCE_GROUP \
     --shared-key-auth
    
  5. Crie um pool de três VMs A1 v2 Standard executando 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. Execute o comando a seguir para determinar periodicamente se os nós estão prontos:

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

    Quando esta consulta mostra que os nós são "estáveis", eles estão prontos para funcionar. Embora eles sejam mostrados como "redimensionando", na verdade eles estão sendo provisionados. Você poderá usar a tecla de seta para cima para repetir o comando mais recente no Cloud Shell se você quiser consultar o status dos nós mais de uma vez.

  7. Execute o seguinte comando para criar um trabalho em lotes, que é um agrupamento lógico para todas as tarefas que serão executadas em seus nós:

    az batch job create \
     --id myjob \
     --pool-id mypool
    
  8. Execute o comando a seguir para criar tarefas de Lote:

    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
    

    Esse loop cria uma série de tarefas de Lote numeradas, cada uma das quais gera informações sobre a ID da tarefa e a ID do nó envolvidas. Ao examinar o que está acontecendo em detalhes, você pode ver algumas características sobre a maneira como o Lote do Azure funciona. As tarefas são automaticamente agendadas para nós com capacidade disponível. No entanto, as variáveis de ambiente que estamos usando (AZ_BATCH_TASK_ID e AZ_BATCH_NODE_ID), para mostrar informações sobre qual tarefa está sendo executada em qual nó, só estão disponíveis no contexto do usuário da tarefa, uma conta padrão criada em cada nó para executar tarefas. Além disso, o argumento --command-line não é executado diretamente em um shell, portanto, você precisa invocar explicitamente o shell usando /bin/bash -c para usar comandos como printenv e grep.

    Esse loop conclui a implementação de trabalho em Lote do Azure. Vamos deixar a conta do Lote do Azure e o pool de nós de trabalho em vigor para uso no próximo módulo, mas vamos excluir o trabalho em lotes. Como o trabalho em Lotes atua como um contêiner para suas tarefas de Lote, as tarefas também serão excluídas.

  9. Execute o seguinte comando no Cloud Shell para excluir o trabalho em Lotes:

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