Partilhar via


Gerir recursos Batch com cmdlets do PowerShell

Com os cmdlets do Azure Batch PowerShell, pode executar e automatizar muitas tarefas comuns de Batch. Esta é uma breve introdução aos cmdlets que pode usar para gerir as suas contas Batch e trabalhar com os seus recursos Batch, como pools, tarefas e trabalhos.

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

Recomendamos que atualize frequentemente os seus módulos do Azure PowerShell para tirar proveito das atualizações e melhorias dos serviços.

Pré-requisitos

  • Install and configure the Azure PowerShell module. To install a specific Azure Batch module, such as a pre-release module, see the PowerShell Gallery.

  • Execute o cmdlet Connect-AzAccount para se conectar à sua subscrição (os cmdlets do Azure Batch estão incluídos no módulo Azure Resource Manager).

    Connect-AzAccount
    
  • Registar com o namespace do fornecedor Batch. Só precisa de realizar esta operação uma vez por subscrição.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Manage Batch accounts and keys

Criar uma conta do Batch

New-AzBatchAccount creates a Batch account in a specified resource group. Se 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, como "Central EUA". Por exemplo:

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

Then, create a Batch account in the resource group. Indique um nome para a conta em <account_name>, e a localização e o nome do seu grupo de recursos. Creating the Batch account can take some time to complete. Por exemplo:

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

Observação

O nome da conta Batch deve ser exclusivo na região do Azure para o grupo de recursos, conter entre 3 e 24 caracteres e usar apenas letras minúsculas e números.

Obter as chaves de acesso da conta

Get-AzBatchAccountKeys mostra as chaves de acesso associadas a uma conta Azure Batch. For example, run the following to get the primary and secondary keys of the account you created.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Gerar uma nova chave de acesso

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

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Observação

To generate a new secondary key, specify "Secondary" for the KeyType parameter. Deve regenerar as chaves primária e secundária separadamente.

Delete a Batch account

Remove-AzBatchAccount elimina uma conta Batch. Por exemplo:

Remove-AzBatchAccount -AccountName <account_name>

Quando solicitado, confirme que deseja remover a conta. A remoção da conta pode levar algum tempo para ser concluída.

Crie um objeto BatchAccountContext

Pode autenticar-se para gerir recursos do Batch utilizando a autenticação por chave partilhada ou a autenticação Microsoft Entra. Para autenticar usando os cmdlets do PowerShell do Batch, primeiro crie um objeto BatchAccountContext para armazenar as credenciais ou identidade da sua conta. Você passa o objeto BatchAccountContext para os cmdlets que usam o parâmetro BatchContext.

Autenticação por chave compartilhada

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Observação

Por padrão, a chave primária da conta é usada para autenticação, mas pode selecionar explicitamente a chave a utilizar alterando a propriedade KeyInUse do objeto BatchAccountContext: $context.KeyInUse = "Secondary".

Autenticação Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Criar e modificar recursos de lote

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

Quando usar muitos destes cmdlets, além de passar um objeto BatchContext, é necessário criar ou passar objetos que contenham configurações detalhadas de recursos, como mostrado no exemplo seguinte. Consulte a ajuda detalhada para cada cmdlet para exemplos adicionais.

Criar um pool de lotes

When creating or updating a Batch pool, you specify a configuration. Pools should generally be configured with Virtual Machine Configuration, which lets you either specify one of the supported Linux or Windows VM images listed in the Azure Virtual Machines Marketplace, or provide a custom image that you have prepared. Os pools de configuração de serviços na nuvem fornecem apenas nós de computação Windows e não suportam todas as funcionalidades do Batch.

Ao executar New-AzBatchPool, forneça as configurações do sistema operativo num objeto PSVirtualMachineConfiguration ou PSCloudServiceConfiguration. For example, the following snippet creates a Batch pool with size Standard_A1 compute nodes in the virtual machine configuration, imaged with Ubuntu Server 20.04-LTS. Here, the VirtualMachineConfiguration parameter specifies the $configuration variable as the PSVirtualMachineConfiguration object. The BatchContext parameter specifies a previously defined variable $context as the BatchAccountContext object.

$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

The target number of compute nodes in the new pool is calculated by an autoscaling formula. In this case, the formula is simply $TargetDedicated=4, indicating the number of compute nodes in the pool is 4 at most.

Query for pools, jobs, tasks, and other details

Utilize cmdlets como Get-AzBatchPool, Get-AzBatchJob e Get-AzBatchTask para consultar as entidades criadas sob uma conta Batch.

Consulta de dados

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

Get-AzBatchPool -BatchContext $context

Use um filtro OData

You can supply an OData filter using the Filter parameter to find only the objects you’re interested in. For example, you can find all pools with IDs starting with “myPool”:

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Este método não é tão flexível quanto usar "Where-Object" num pipeline local. However, the query gets sent to the Batch service directly so that all filtering happens on the server side, saving Internet bandwidth.

Use o parâmetro "Id"

Uma alternativa a um filtro OData é usar o parâmetro Id. Para consultar um pool específico com o id "myPool":

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

The Id parameter supports only full-ID search; not wildcards or OData-style filters.

Utilize o parâmetro MaxCount

Por predefinição, cada cmdlet retorna um máximo de 1000 objetos. If you reach this limit, either refine your filter to bring back fewer objects, or explicitly set a maximum using the MaxCount parameter. Por exemplo:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

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

Use the PowerShell pipeline

Os cmdlets de lote utilizam o pipeline do PowerShell para enviar dados entre cmdlets. This has the same effect as specifying a parameter, but makes working with multiple entities easier.

Por exemplo, encontre e exiba todas as tarefas da sua conta.

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

Reiniciar (reinicializar) cada nó de computação num conjunto:

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

Gestão de pacotes de aplicações

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

Importante

You must link an Azure Storage account to your Batch account to use application packages.

Criar uma aplicação:

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

Adicionar um pacote de aplicação:

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

Defina a versão padrão 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

Delete an application package

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"

Observação

You must delete all of an application's application package versions before you delete the application. You will receive a 'Conflict' error if you try to delete an application that currently has application packages.

Deploy an application package

Pode especificar um ou mais pacotes de aplicação para implantação ao criar um grupo. Quando especifica um pacote no momento da criação do pool, ele é implantado em cada nó à medida que o nó se junta ao pool. Os pacotes também são implantados quando um nó é reiniciado ou reimaginado.

Especifique a opção -ApplicationPackageReference ao criar um grupo para distribuir um pacote de aplicação para os nós do grupo à medida que se juntam ao grupo. Primeiro, crie um objeto PSApplicationPackageReference e configure-o com o ID da aplicação e a versão do pacote que 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"

Now create the pool, and specify the package reference object as the argument to the ApplicationPackageReferences option:

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

You can find more information on application packages in Deploy applications to compute nodes with Batch application packages.

Atualizar os pacotes de aplicativos de um pool

Para atualizar as aplicações atribuídas a um pool existente, primeiro crie um objeto PSApplicationPackageReference com as propriedades desejadas (ID da aplicação 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, remova quaisquer 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

Agora, atualizaste as propriedades do pool no serviço Batch. Para efetivamente implementar o novo pacote de aplicação nos nós de computação da pool, no entanto, deve reiniciar ou reinstalar esses nós. Pode reiniciar cada nó num pool com este comando:

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

Tip

Pode implementar múltiplos pacotes de aplicação nos nós de computação de um conjunto. Caso pretenda adicionar um pacote de aplicações em vez de substituir os pacotes atualmente implementados, omita a linha $pool.ApplicationPackageReferences.Clear() acima.

Próximos passos