Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Con i cmdlet di PowerShell Azure Batch, è possibile eseguire lo script di molte attività di Batch comuni. Questa è un'introduzione rapida ai cmdlet che è possibile usare per gestire gli account Batch e usare le risorse batch, ad esempio pool, processi e attività.
Per un elenco completo dei cmdlet batch e della sintassi dettagliata dei cmdlet, vedere le informazioni di riferimento sui cmdlet di Azure Batch.
È consigliabile aggiornare spesso i moduli Azure PowerShell per sfruttare i vantaggi degli aggiornamenti e dei miglioramenti del servizio.
Prerequisiti
Installare e configurare il modulo Azure PowerShell. Per installare un modulo Azure Batch specifico, ad esempio un modulo non rilasciato, vedere il PowerShell Gallery.
Eseguire il cmdlet Connect-AzAccount per connettersi alla sottoscrizione (i cmdlet Azure Batch vengono forniti nel modulo Azure Resource Manager):
Connect-AzAccountRegistrarsi nel namespace del provider Batch. Questa operazione deve essere eseguita una sola volta per ogni sottoscrizione.
Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
Gestire gli account e le chiavi di Batch
Creare un account Batch
New-AzBatchAccount crea un account Batch in un gruppo di risorse specificato. Se non si ha già un gruppo di risorse, crearne uno eseguendo il cmdlet New-AzResourceGroup . Specificare una delle aree Azure nel parametro Location, ad esempio "Stati Uniti centrali". Per esempio:
New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"
Creare quindi un account Batch nel gruppo di risorse. Specificare un nome per l'account in <account_name> e il percorso e il nome del gruppo di risorse. La creazione dell'account Batch può richiedere del tempo. Per esempio:
New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>
Annotazioni
Il nome dell'account Batch deve essere univoco per l'area Azure per il gruppo di risorse, contenere tra 3 e 24 caratteri e usare solo lettere minuscole e numeri.
Ottenere le chiavi di accesso dell'account
Get-AzBatchAccountKeys mostra le chiavi di accesso associate a un account Azure Batch. Ad esempio, eseguire il comando seguente per ottenere le chiavi primarie e secondarie dell'account creato.
$Account = Get-AzBatchAccountKeys –AccountName <account_name>
$Account.PrimaryAccountKey
$Account.SecondaryAccountKey
Generare una nuova chiave di accesso
New-AzBatchAccountKey genera una nuova chiave dell'account primario o secondario per un account Azure Batch. Ad esempio, per generare una nuova chiave primaria per l'account Batch, digitare:
New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary
Annotazioni
Per generare una nuova chiave secondaria, specificare "Secondary" per il parametro KeyType . È necessario rigenerare separatamente le chiavi primarie e secondarie.
Eliminare un account Batch
Remove-AzBatchAccount elimina un account Batch. Per esempio:
Remove-AzBatchAccount -AccountName <account_name>
Quando richiesto, confermare di voler rimuovere l'account. Il completamento della rimozione dell'account può richiedere del tempo.
Creare un oggetto BatchAccountContext
È possibile eseguire l'autenticazione per gestire le risorse batch usando l'autenticazione con chiave condivisa o l'autenticazione Microsoft Entra. Per eseguire l'autenticazione usando i cmdlet di Batch PowerShell, creare prima di tutto un oggetto BatchAccountContext per archiviare le credenziali o l'identità dell'account. L'oggetto BatchAccountContext viene passato ai cmdlet che usano il parametro BatchContext .
Autenticazione con chiave condivisa
$context = Get-AzBatchAccountKeys -AccountName <account_name>
Annotazioni
Per impostazione predefinita, la chiave primaria dell'account viene usata per l'autenticazione, ma è possibile selezionare in modo esplicito la chiave da usare modificando la proprietà KeyInUse dell'oggetto BatchAccountContext: $context.KeyInUse = "Secondary".
Autenticazione Microsoft Entra
$context = Get-AzBatchAccount -AccountName <account_name>
Creare e modificare le risorse di Batch
Usare cmdlet come New-AzBatchPool, New-AzBatchJob e New-AzBatchTask per creare risorse in un account Batch. Sono disponibili cmdlet Get- e Set- corrispondenti per aggiornare le proprietà delle risorse esistenti e i cmdlet Remove- per rimuovere le risorse in un account Batch.
Quando si usano molti di questi cmdlet, oltre a passare un oggetto BatchContext, è necessario creare o passare oggetti che contengono impostazioni dettagliate delle risorse, come illustrato nell'esempio seguente. Per altri esempi, vedere la Guida dettagliata per ogni cmdlet.
Crea un pool Batch
Quando si crea o si aggiorna un pool di Batch, si specifica una configurazione. I pool devono essere in genere configurati con la configurazione della macchina virtuale, che consente di specificare una delle immagini di macchine virtuali Linux o Windows supportate elencate nel marketplace Macchine virtuali di Azure oppure fornire un'immagine personalizzata preparata. I pool di configurazione dei servizi cloud forniscono solo Windows nodi di calcolo e non supportano tutte le funzionalità di Batch.
Quando si esegue New-AzBatchPool, passare le impostazioni del sistema operativo in un oggetto PSVirtualMachineConfiguration o PSCloudServiceConfiguration. Il frammento di codice seguente, ad esempio, crea un pool di Batch con nodi di calcolo di dimensioni Standard_A1 nella configurazione della macchina virtuale. L'immagine viene creata con Ubuntu Server 20.04-LTS. In questo caso, il parametro VirtualMachineConfiguration specifica la variabile $configuration come oggetto PSVirtualMachineConfiguration. Il parametro BatchContext specifica una variabile definita in precedenza $context come oggetto 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
Il numero di destinazione dei nodi di calcolo nel nuovo pool viene calcolato da una formula di scalabilità automatica. In questo caso, la formula è semplicemente $TargetDedicated=4, a indicare che il numero di nodi di calcolo nel pool è 4 al massimo.
Esegui query su pool, processi, attività e altri dettagli
Usare cmdlet come Get-AzBatchPool, Get-AzBatchJob e Get-AzBatchTask per eseguire query per le entità create in un account Batch.
Eseguire query per ottenere dati
Ad esempio, usare Get-AzBatchPools per trovare i pool. Per impostazione predefinita, questa operazione interroga tutti i pool nel tuo account, supponendo che l'oggetto BatchAccountContext sia già stato archiviato in $context:
Get-AzBatchPool -BatchContext $context
Usare un filtro OData
È possibile fornire un filtro OData usando il parametro Filter per trovare solo gli oggetti a cui si è interessati. Ad esempio, è possibile trovare tutti i pool con ID che iniziano con "myPool":
$filter = "startswith(id,'myPool')"
Get-AzBatchPool -Filter $filter -BatchContext $context
Questo metodo non è flessibile come l'uso di "Where-Object" in una pipeline locale. Tuttavia, la query viene inviata direttamente al servizio Batch in modo che tutto il filtro avvenga sul lato server, risparmiando la larghezza di banda Internet.
Usare il parametro ID
Un'alternativa a un filtro OData consiste nell'usare il parametro Id . Per eseguire una query per un pool specifico con ID "myPool":
Get-AzBatchPool -Id "myPool" -BatchContext $context
Il parametro Id supporta solo la ricerca per ID completo; non caratteri jolly né filtri in stile OData.
Usare il parametro MaxCount
Per impostazione predefinita, ogni cmdlet restituisce un massimo di 1000 oggetti. Se si raggiunge questo limite, perfezionare il filtro per riportare meno oggetti o impostare in modo esplicito un valore massimo usando il parametro MaxCount . Per esempio:
Get-AzBatchTask -MaxCount 2500 -BatchContext $context
Per rimuovere il limite superiore, impostare MaxCount su 0 o meno.
Usare la pipeline di PowerShell
I cmdlet batch usano la pipeline di PowerShell per inviare dati tra i cmdlet. Questo ha lo stesso effetto di specificare un parametro, ma semplifica l'uso di più entità.
Ad esempio, trovare e visualizzare tutte le attività nell'account:
Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context
Riavviare (riavviare) ogni nodo di calcolo in un pool:
Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context
Gestione pacchetti dell'applicazione
I pacchetti dell'applicazione offrono un modo semplificato per distribuire le applicazioni nei nodi di calcolo nei pool. Con i cmdlet di Batch PowerShell, è possibile caricare e gestire i pacchetti dell'applicazione nell'account Batch e distribuire le versioni dei pacchetti nei nodi di calcolo.
Importante
Per usare i pacchetti dell'applicazione, è necessario collegare un account Archiviazione di Azure all'account Batch.
Creare un'applicazione:
New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
Aggiungere un pacchetto dell'applicazione:
New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip
Impostare la versione predefinita per l'applicazione:
Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"
Elencare i pacchetti di un'applicazione
$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
$application.ApplicationPackages
Eliminare un pacchetto dell'applicazione
Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"
Eliminare un'applicazione
Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"
Annotazioni
È necessario eliminare tutte le versioni del pacchetto dell'applicazione di un'applicazione prima di eliminare l'applicazione. Viene visualizzato un errore "Conflict" se si tenta di eliminare un'applicazione che attualmente contiene pacchetti applicativi.
Distribuire un pacchetto dell'applicazione
È possibile specificare uno o più pacchetti di applicazioni per la distribuzione quando si crea un pool. Quando si specifica un pacchetto al momento della creazione del pool, questo viene distribuito in ciascun nodo quando il nodo si unisce al pool. I pacchetti vengono distribuiti anche quando un nodo viene riavviato o viene reinstallata l'immagine.
Specificare l'opzione -ApplicationPackageReference quando si crea un pool per distribuire un pacchetto applicazione ai nodi del pool man mano che si aggiungono al pool. Creare innanzitutto un oggetto PSApplicationPackageReference e configurarlo con l'ID applicazione e la versione del pacchetto da distribuire nei nodi di calcolo del pool:
$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference
$appPackageReference.ApplicationId = "MyBatchApplication"
$appPackageReference.Version = "1.0"
Creare ora il pool e specificare l'oggetto di riferimento del pacchetto come argomento dell'opzione ApplicationPackageReferences:
New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference
Per altre informazioni sui pacchetti dell'applicazione, vedere Distribuire applicazioni nei nodi di calcolo con i pacchetti dell'applicazione Batch.
Aggiornare i pacchetti dell'applicazione di un pool
Per aggiornare le applicazioni assegnate a un pool esistente, creare prima di tutto un oggetto PSApplicationPackageReference con le proprietà desiderate (ID applicazione e versione del pacchetto):
$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference
$appPackageReference.ApplicationId = "MyBatchApplication"
$appPackageReference.Version = "2.0"
Ottenere quindi il pool da Batch, cancellare eventuali pacchetti esistenti, aggiungere il nuovo riferimento al pacchetto e aggiornare il servizio Batch con le nuove impostazioni del pool:
$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"
$pool.ApplicationPackageReferences.Clear()
$pool.ApplicationPackageReferences.Add($appPackageReference)
Set-AzBatchPool -BatchContext $context -Pool $pool
Hai appena aggiornato le proprietà del pool nel servizio Batch. Per distribuire effettivamente il nuovo pacchetto dell'applicazione nei nodi di calcolo nel pool, è tuttavia necessario riavviare o creare di nuovo l'immagine di tali nodi. È possibile riavviare ogni nodo in un pool con questo comando:
Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context
Tip
È possibile distribuire più pacchetti dell'applicazione nei nodi di calcolo in un pool. Se si vuole aggiungere un pacchetto dell'applicazione invece di sostituire i pacchetti attualmente distribuiti, omettere la $pool.ApplicationPackageReferences.Clear() riga precedente.
Passaggi successivi
- Esamina la documentazione di riferimento dei cmdlet di Azure Batch per informazioni dettagliate sulla sintassi dei cmdlet e sugli esempi.
- Informazioni su come distribuire applicazioni nei nodi di calcolo con i pacchetti dell'applicazione Batch.