Compartilhar via


Gerenciar recursos de Lote com cmdlets do PowerShell

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

Para obter uma lista completa de cmdlets de Lote e a sintaxe detalhada dos cmdlets, confira a Referência de cmdlet do Lote do Azure.

Recomendamos que você atualize seus módulos do Azure PowerShell com frequência para aproveitar as atualizações e melhorias de serviço.

Pré-requisitos

  • Instale e configure o módulo do Azure PowerShell. Para instalar um módulo específico do Lote do Azure, como um módulo de pré-lançamento, consulte 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 do Azure Resource Manager):

    Connect-AzAccount
    
  • Registrar com o namespace do provedor de Lote. Você só precisa executar essa operação uma vez por assinatura.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Gerenciar contas e chaves do Lote

Criar uma conta do Batch

New-AzBatchAccount cria uma conta de Batch 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 Location , como "EUA Central". Por exemplo:

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

Em seguida, crie uma conta Batch no grupo de recursos. Especifique um nome para a conta em <account_name> e o local e o nome do grupo de recursos. A criação da conta Batch pode levar algum tempo para ser concluída. Por exemplo:

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

Observação

O nome da conta do Lote deve ser exclusivo para a 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 chaves de acesso da 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árias e secundárias da conta que você 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 sua conta de Batch, digite:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Observação

Para gerar uma nova chave secundária, especifique "Secundário" para o parâmetro KeyType . Você precisa regenerar as chaves primária e secundária separadamente.

Excluir uma conta do Lote

Remove-AzBatchAccount exclui uma Batch account. Por exemplo:

Remove-AzBatchAccount -AccountName <account_name>

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

Criar um objeto BatchAccountContext

Você pode autenticar para gerenciar recursos do Batch usando tanto a autenticação por chave compartilhada quanto a autenticação do Microsoft Entra. Para autenticar usando os cmdlets do PowerShell do Lote, primeiro crie um objeto BatchAccountContext para armazenar suas credenciais ou identidade. Você passa o objeto BatchAccountContext para cmdlets que usam o parâmetro BatchContext .

Autenticação de chave compartilhada

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Observação

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

autenticação do Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Criar e modificar recursos de Processamento em Lote

Use cmdlets como New-AzBatchPool, New-AzBatchJob e New-AzBatchTask para criar recursos em uma conta do Lote. Há cmdlets correspondentes Get- e Set- para atualizar as propriedades de recursos existentes e cmdlets Remove- para remover recursos em uma conta do Lote.

Ao usar muitos desses cmdlets, além de passar um objeto BatchContext, você precisa criar ou passar objetos que contenham configurações de recurso detalhadas, conforme mostrado no exemplo a seguir. Consulte a ajuda detalhada para cada cmdlet para obter exemplos adicionais.

Criar um pool do Lote

Ao criar ou atualizar um pool do Batch, especifique uma configuração. Os pools geralmente devem ser configurados com a Configuração de Máquina Virtual, o que permite especificar uma das imagens de VM do Linux ou windows com suporte listadas no Marketplace de Máquinas Virtuais do Azure 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 dão suporte a todos os recursos do 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 do Lote com nós de computação de tamanho Standard_A1 na configuração de máquina virtual, com imagem do Ubuntu Server 20.04-LTS. Aqui, o parâmetro VirtualMachineConfiguration especifica a variável $configuration como o objeto PSVirtualMachineConfiguration. O parâmetro BatchContext especifica uma variável definida anteriormente $context como o 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. Nesse caso, a fórmula é simplesmente $TargetDedicated=4, indicando que o número de nós de computação no pool é 4 no máximo.

Consultar pools, trabalhos, tarefas e outros detalhes

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

Consultar dados

Por exemplo, use Get-AzBatchPools para encontrar seus pools. Por padrão, essa consulta retorna todos os pools da conta, assumindo que você já armazenou o objeto BatchAccountContext em $context:

Get-AzBatchPool -BatchContext $context

Usar um filtro OData

Você pode fornecer um filtro OData usando o parâmetro Filter para localizar apenas os objetos nos quais você está interessado. Por exemplo, você pode encontrar todos os pools com IDs começando com "myPool":

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Esse método não é tão flexível quanto usar "Where-Object" em um pipeline local. No entanto, a consulta é enviada diretamente ao serviço do Lote para que toda a filtragem ocorra no lado do servidor, salvando a largura de banda da Internet.

Usar o parâmetro Id

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

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

O parâmetro Id dá suporte apenas à pesquisa de ID completa; não a curingas ou filtros de estilo OData.

Usar o parâmetro MaxCount

Por padrão, cada cmdlet retorna um máximo de 1000 objetos. Se você atingir esse limite, refinar o filtro para trazer menos objetos ou definir explicitamente um máximo usando o parâmetro MaxCount . Por exemplo:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

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

Usar o pipeline do PowerShell

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

Por exemplo, localize e exiba todas as tarefas em sua conta:

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

Reiniciar (reboot) todos os nós de computação em um pool:

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

Gerenciamento de pacotes de aplicativos

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 Lote, você pode carregar e gerenciar pacotes de aplicativos na sua conta do Lote e implantar versões de pacotes em nós de computação.

Importante

Você deve vincular uma conta de Armazenamento do Microsoft Azure à sua conta do Lote para usar pacotes de aplicativos.

Criar um aplicativo:

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

Adicione um pacote de aplicativos:

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 para o aplicativo:

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

Listar os pacotes de um aplicativo

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

$application.ApplicationPackages

Excluir um pacote de aplicativos

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

Excluir um aplicativo

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

Observação

Você deve excluir todas as versões do pacote de aplicativos de um aplicativo antes de excluir o aplicativo. Você receberá um erro de 'Conflito' se tentar excluir um aplicativo que atualmente tenha pacotes de aplicativos.

Implantar um pacote de aplicativos

Você pode especificar um ou mais pacotes de aplicativos para implantação ao criar um pool. Quando você especifica um pacote no momento da criação do pool, ele é implantado em cada nó à medida que o nó entra no pool. Os pacotes também são implantados quando um nó é reiniciado ou tem a imagem refeita.

Especifique a opção -ApplicationPackageReference ao criar um pool para implantar um pacote de aplicativos nos nós do pool à medida que eles ingressam no pool. 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"

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

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

Você pode encontrar mais informações sobre pacotes de aplicativos em Implantar pacotes de aplicativos em nós de computação com o Batch.

Atualizar os pacotes de aplicativos de um pool

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 Lote, limpe todos os pacotes existentes, adicione a nova referência de pacote e atualize o serviço do Lote com as novas configurações de pool:

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

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Agora, você atualizou as propriedades do pool no serviço do Lote. No entanto, para implantar o novo pacote de aplicativos em nós de computação no pool, você deve reiniciar ou refazer a imagem desses nós. Você pode reiniciar todos os nós em um pool com este comando:

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

Dica

Você pode implantar vários pacotes de aplicativos nos nós de computação em um pool. Se você quiser adicionar um pacote de aplicativos em vez de substituir os pacotes implantados no momento, omita a $pool.ApplicationPackageReferences.Clear() linha acima.

Próximas etapas