Exercício – Criar uma tarefa do Azure Batch na CLI para executar a tarefa paralela
A CLI do Azure permite-lhe criar e implementar recursos do Azure Batch a partir da linha de comandos.
Como o arquiteto de soluções da organização sem fins lucrativos, quer começar a criar uma solução do Batch para o cenário de OCR do Azure. Como primeiro passo, vai testar a criação de uma conta do Batch, de um conjunto de nós de trabalho, de uma tarefa e de tarefas com a CLI do Azure.
A CLI do Azure é a linha de comandos de várias plataformas para a criação e a gestão dos recursos do Azure. Utiliza uma sintaxe az noun verb --properties
consistente. Os comandos da CLI para gerir o Azure Batch seguem esta convenção, pelo que 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á de sua própria assinatura do Azure.
Criar recursos do Azure Batch
Em primeiro lugar, vai criar a conta do Azure Batch e o conjunto de nós de trabalho para o seu cenário de teste. Em seguida, vai criar uma tarefa do Batch e tarefas para serem executadas no conjunto.
Criar um novo grupo de recursos
Inicie sessão 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 tome nota do nome.
Criar a conta do Azure Batch
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 se certificar de que você está no Bash.
Crie variáveis de ambiente para o grupo de recursos e o recurso de lote.
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
Execute o seguinte comando no Cloud Shell para criar uma conta do Azure Batch. Selecione uma das localizações a seguir:
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 iniciar sessão na sua conta do Azure Batch:
az batch account login \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --shared-key-auth
Crie um pool de três VMs Standard A1 v2 executando o 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 seguinte comando para determinar periodicamente se os nós estão prontos:
az batch pool show --pool-id mypool \ --query "allocationState"
Quando essa consulta mostra que os nós estão "estáveis", eles estão prontos para funcionar. Embora apareçam como "redimensionamento", na verdade estão sendo provisionados. Pode utilizar a tecla de seta para cima para repetir o comando mais recente no Cloud Shell, caso pretenda consultar o estado dos nós mais de uma vez.
Execute o seguinte comando para criar um trabalho em lote, 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 seguinte comando para criar as tarefas do Batch:
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
Este ciclo cria várias tarefas do Batch numeradas, cada uma das quais produz informações sobre o ID da tarefa e o ID do nó envolvido. Ao examinar atentamente o que acontece aqui, pode ver algumas características da forma como o Azure Batch 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 não é executado diretamente sob um shell, então você precisa invocar explicitamente o--command-line
shell usando/bin/bash -c
para usar comandos comoprintenv
egrep
.Este ciclo conclui a implementação da tarefa do Azure Batch. Deixaremos a conta do Lote do Azure e o pool de nós de trabalho no local para uso no próximo módulo, mas excluiremos o trabalho em lote. Uma vez que a tarefa do Batch age como um contentor para as respetivas tarefas do Batch, estas tarefas também são eliminadas.
Execute o seguinte comando no Cloud Shell para eliminar a tarefa do Batch:
az batch job delete --job-id myjob -y