Exercício – Criar um trabalho em Lote do Azure na CLI para executar sua tarefa paralela
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
Faça logon no Portal do Azure.
Selecione Grupos de recursos no menu à esquerda.
Selecione + Criar.
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
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.
Crie variáveis de ambiente para o recurso de lote e o grupo de recursos.
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
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>
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
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"
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.
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
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
eAZ_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 comoprintenv
egrep
.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.
Execute o seguinte comando no Cloud Shell para excluir o trabalho em Lotes:
az batch job delete --job-id myjob -y