Gerir os recursos do Batch com os cmdlets do PowerShell

Com os cmdlets do Azure Batch PowerShell, você pode executar e criar scripts para muitas tarefas comuns do Batch. Isto é uma introdução rápida aos cmdlets que pode utilizar para gerir as contas do Batch e trabalhar com os recursos do Batch, como conjuntos e tarefas.

Para obter uma lista completa de cmdlets do Batch e a sintaxe detalhada dos cmdlets, veja a Referência de cmdlets do Azure Batch.

Recomendamos que atualize frequentemente os módulos do Azure PowerShell para tirar partido das atualizações e melhoramentos do serviço.

Pré-requisitos

  • Instale e configure o módulo do Azure PowerShell. Para instalar um módulo específico do Azure Batch, como um módulo de pré-lançamento, veja a Galeria do PowerShell.

  • Execute o cmdlet Connect-AzAccount para se conectar à sua assinatura (os cmdlets do Lote do Azure são fornecidos no módulo Azure Resource Manager):

    Connect-AzAccount
    
  • Registe no espaço de nomes do fornecedor do Batch. Apenas tem de efetuar esta operação uma vez por subscrição.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Gerir contas e chaves do Batch

Criar uma conta do Batch

New-AzBatchAccount cria uma conta de lote em um grupo de recursos especificado. Se você ainda não tiver um grupo de recursos, crie um executando o cmdlet New-AzResourceGroup . Especifique uma das regiões do Azure no parâmetro Localização, por exemplo, “E.U.A. Central”. Por exemplo:

New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"

Em seguida, crie uma conta de lote no grupo de recursos. Especifique um nome para a conta no <account_name>, bem como a localização e o nome do seu grupo de recursos. Criar a conta do Batch pode demorar algum tempo a concluir. Por exemplo:

New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>

Nota

O nome da conta do Batch tem de ser exclusivo para a região do Azure do grupo de recursos, conter entre 3 e 24 carateres e utilizar apenas letras minúsculas e números.

Obter chaves de acesso à conta

Get-AzBatchAccountKeys mostra as chaves de acesso associadas a uma conta do Azure Batch. Por exemplo, execute o seguinte para obter as chaves primária e secundária da conta que criou.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Gerar uma nova chave de acesso

New-AzBatchAccountKey gera uma nova chave de conta primária ou secundária para uma conta do Azure Batch. Por exemplo, para gerar uma nova chave primária para a conta do Batch, escreva:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Nota

Para gerar uma nova chave secundária, especifique "Secondary" para o parâmetro KeyType. Tem de regenerar as chaves primária e secundária em separado.

Eliminar uma conta do Batch

Remove-AzBatchAccount exclui uma conta Batch. Por exemplo:

Remove-AzBatchAccount -AccountName <account_name>

Quando lhe for perguntado, confirme que pretende remover a conta. A remoção da conta pode demorar algum tempo a concluir.

Criar um objeto BatchAccountContext

Você pode autenticar para gerenciar recursos em lote usando a autenticação de chave compartilhada ou a autenticação do Microsoft Entra. Para autenticar com os cmdlets do PowerShell do Batch, crie primeiro um objeto BatchAccountContext para armazenar as credenciais ou a identidade da conta. O objeto BatchAccountContext é transmitido aos cmdlets que utilizam o parâmetro BatchContext.

Autenticação de chave partilhada

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Nota

Por predefinição, a chave primária da conta é utilizada na autenticação, mas pode selecionar explicitamente a chave a utilizar ao alterar a propriedade KeyInUse do objeto BatchAccountContext: $context.KeyInUse = "Secondary".

Autenticação do Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Criar e modificar recursos do Batch

Use cmdlets como New-AzBatchPool, New-AzBatchJob e New-AzBatchTask para criar recursos em uma conta Batch. Existem cmdlets Get- e Set- correspondentes para atualizar as propriedades dos recursos existentes e cmdlets Remove- para remover recursos numa conta do Batch.

Quando utiliza muitos destes cmdlets, além de transmitir um objeto de BatchContext, terá de criar ou passar objetos que contêm definições detalhadas de recursos, conforme mostrado no exemplo seguinte. Consulte a ajuda detalhada de cada cmdlet para obter exemplos adicionais.

Criar um conjunto do Batch

Ao criar ou atualizar um pool de lotes, você especifica uma configuração. Os pools geralmente devem ser configurados com a Configuração de Máquina Virtual, que permite especificar uma das imagens de VM Linux ou Windows com suporte listadas no Azure Virtual Machines Marketplace ou fornecer uma imagem personalizada que você preparou. Os pools de Configuração de Serviços de Nuvem fornecem apenas nós de computação do Windows e não suportam todos os recursos de lote.

Ao executar New-AzBatchPool, passe as configurações do sistema operacional em um objeto PSVirtualMachineConfiguration ou PSCloudServiceConfiguration. Por exemplo, o trecho a seguir cria um pool de lotes com tamanho Standard_A1 nós de computação na configuração da máquina virtual, criado com o Ubuntu Server 20.04-LTS. Neste caso, o parâmetro VirtualMachineConfiguration especifica a variável $configuration como o objeto PSVirtualMachineConfiguration. O parâmetro BatchContext especifica uma variável $context definida anteriormente como objeto BatchAccountContext.

$imageRef = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("UbuntuServer","Canonical","20.04-LTS")

$configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageRef, "batch.node.ubuntu 20.04")

New-AzBatchPool -Id "mypspool" -VirtualMachineSize "Standard_a1" -VirtualMachineConfiguration $configuration -AutoScaleFormula '$TargetDedicated=4;' -BatchContext $context

O número de destino de nós de computação no novo pool é calculado por uma fórmula de dimensionamento automático. Neste caso, a fórmula é simplesmente $TargetDedicated=4, que indica que o número de nós de computação no conjunto é, no máximo, 4.

Consulta para conjuntos, tarefas e outros detalhes

Use cmdlets como Get-AzBatchPool, Get-AzBatchJob e Get-AzBatchTask para consultar entidades criadas em uma conta Batch.

Consulta de dados

Como exemplo, use Get-AzBatchPools para localizar seus pools. Por predefinição, isto consulta todos os agrupamentos na sua conta, assumindo que já armazenou o objeto BatchAccountContext em $context:

Get-AzBatchPool -BatchContext $context

Utilizar um filtro OData

Pode fornecer um filtro OData utilizando o parâmetro Filter para localizar apenas os objetos que lhe interessam. Por exemplo, você pode encontrar todos os pools com IDs começando com "myPool":

$filter = "startswith(id,'myPool')"

Get-AzBatchPool -Filter $filter -BatchContext $context

Este método não é tão flexível como se utilizasse "Where-Object" num pipeline local. No entanto, a consulta é enviada diretamente para o serviço Batch para que todas as filtragens ocorram no lado do servidor, poupando a largura de banda da Internet.

Utilizar o parâmetro Id

Uma alternativa a um filtro OData é a utilização do parâmetro Id. Para consultar um agrupamento específico com o id "myPool":

Get-AzBatchPool -Id "myPool" -BatchContext $context

O parâmetro Id suporta apenas a pesquisa de ID completo, não curingas ou filtros no estilo OData.

Utilizar o parâmetro MaxCount

Por predefinição, cada cmdlet devolve um máximo de 1000 objetos. Se atingir este limite, refine o filtro para obter menos objetos ou defina explicitamente um limite máximo utilizando o parâmetro MaxCount. Por exemplo:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Para remover o limite superior, defina MaxCount como 0 ou menos.

Utilizar o pipeline do PowerShell

Os cmdlets em lote usam o pipeline do PowerShell para enviar dados entre cmdlets. Este procedimento tem o mesmo efeito que especificar um parâmetro, mas facilita o trabalho com várias entidades.

Por exemplo, localizar e apresentar todas as tarefas na sua conta:

Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context

Reinicie todos os nós de computação num conjunto:

Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Gestão de pacotes de aplicações

Os pacotes de aplicativos fornecem uma maneira simplificada de implantar aplicativos nos nós de computação em seus pools. Com os cmdlets do PowerShell do Batch, pode carregar e gerir pacotes de aplicações na sua conta do Batch e implementar versões de pacotes em nós de computação.

Importante

Tem de associar uma conta de armazenamento do Azure à sua conta do Batch para utilizar pacotes de aplicações.

Criar uma aplicação:

New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Adicionar um pacote de aplicações:

New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip

Definir a versão predefinida da aplicação:

Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"

Listar os pacotes de uma aplicação

$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

$application.ApplicationPackages

Eliminar um pacote de aplicação

Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"

Eliminar uma aplicação

Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Nota

Tem de eliminar todas as versões dos pacotes de aplicações de uma aplicação antes de eliminá-la. Se tentar eliminar uma aplicação que possua atualmente pacotes de aplicações, receberá um erro de “Conflito”.

Implementar um pacote de aplicações

Quando cria um conjunto, pode especificar um ou mais pacotes de aplicações para implementação. Quando especifica um pacote durante a criação de conjuntos, é implementado em cada nó no momento em que o nó é associado ao conjunto. Os pacotes também são implementados quando um nó é reiniciado ou recriado.

Especifique a opção -ApplicationPackageReference quando criar um conjunto para implementar pacotes de aplicações nos nós do conjunto à medida que são adicionados ao mesmo. Primeiro, crie um objeto PSApplicationPackageReference e configure-o com a ID do aplicativo e a versão do pacote que você deseja implantar nos nós de computação do pool:

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Em seguida, crie o conjunto e especifique o objeto de referência do pacote como argumento para a opção ApplicationPackageReferences:

New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference

Pode encontrar mais informações sobre pacotes de aplicações em Implementar aplicações em nós de computação com pacotes de aplicações do Batch.

Atualizar os pacotes de aplicações de um conjunto

Para atualizar os aplicativos atribuídos a um pool existente, primeiro crie um objeto PSApplicationPackageReference com as propriedades desejadas (ID do aplicativo e versão do pacote):

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Em seguida, obtenha o pool do Batch, limpe todos os pacotes existentes, adicione a nova referência de pacote e atualize o serviço Batch com as novas configurações do pool:

$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Atualizou as propriedades do conjunto no serviço Batch. Contudo, para implementar realmente o pacote de aplicação novo nos nós de computação no conjunto, tem de reiniciar ou recriar as imagens destes nós. Pode reiniciar todos os nós num conjunto com este comando:

Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Gorjeta

Pode implementar vários pacotes de aplicações nos nós de computação num conjunto. Se você quiser adicionar um pacote de aplicativo em vez de substituir os pacotes implantados atualmente, omita a $pool.ApplicationPackageReferences.Clear() linha acima.

Próximos passos