Gestione dei pool di Azure Batch con l'interfaccia della riga di comando di Azure

Questi script illustrano alcuni degli strumenti disponibili nell'interfaccia della riga di comando di Azure per creare e gestire pool di nodi di calcolo nel servizio Azure Batch.

Nota

I comandi in questo esempio creano macchine virtuali di Azure. L'esecuzione di macchine virtuali comporterà addebiti all'account. Per ridurre al minimo tali addebiti, eliminare le macchine virtuali dopo aver eseguito l'esempio. Vedere Eseguire la pulizia dei pool.

È possibile configurare i pool di Batch in due modi: con una configurazione Servizi cloud (solo Windows) o con una configurazoine Macchina virtuale (Windows e Linux). Gli script di esempio seguenti mostrano come creare pool con entrambe le configurazioni.

Prerequisiti

Script di esempio per un pool con configurazione Servizi cloud

#!/bin/bash

# Authenticate Batch account CLI session.
az batch account login -g myresourcegroup -n mybatchaccount

# We want to add an application package reference to the pool, so first
# we'll list the available applications.
az batch application summary list

# Create a new Windows cloud service platform pool with 3 Standard A1 VMs.
# The pool has an application package reference (taken from the output of the
# above command) and a start task that will copy the application files to a shared directory.
az batch pool create \
    --id mypool-windows \
    --os-family 4 \
    --target-dedicated 3 \
    --vm-size small \
    --start-task-command-line "cmd /c xcopy %AZ_BATCH_APP_PACKAGE_MYAPP% %AZ_BATCH_NODE_SHARED_DIR%" \
    --start-task-wait-for-success \
    --application-package-references myapp

# We can add some metadata to the pool.
az batch pool set --pool-id mypool-windows --metadata IsWindows=true VMSize=StandardA1

# Let's change the pool to enable automatic scaling of compute nodes.
# This autoscale formula specifies that the number of nodes should be adjusted according
# to the number of active tasks, up to a maximum of 10 compute nodes.
az batch pool autoscale enable \
    --pool-id mypool-windows \
    --auto-scale-formula "$averageActiveTaskCount = avg($ActiveTasks.GetSample(TimeInterval_Minute * 15));$TargetDedicated = min(10, $averageActiveTaskCount);"

# We can monitor the resizing of the pool.
az batch pool show --pool-id mypool-windows

# Once we no longer require the pool to automatically scale, we can disable it.
az batch pool autoscale disable --pool-id mypool-windows

Script di esempio per un pool con configurazione Macchina virtuale

#!/bin/bash

# Authenticate Batch account CLI session.
az batch account login -g myresource group -n mybatchaccount

# Retrieve a list of available images and node agent SKUs.
az batch pool node-agent-skus list

# Create a new Linux pool with a virtual machine configuration. The image reference 
# and node agent SKUs ID can be selected from the ouptputs of the above list command.
# The image reference is in the format: {publisher}:{offer}:{sku}:{version} where {version} is
# optional and will default to 'latest'.
az batch pool create \
    --id mypool-linux \
    --vm-size Standard_A1 \
    --image canonical:ubuntuserver:16.04.0-LTS \
    --node-agent-sku-id batch.node.ubuntu 16.04

# Now let's resize the pool to start up some VMs.
az batch pool resize --pool-id mypool-linux --target-dedicated 5

# We can check the status of the pool to see when it has finished resizing.
az batch pool show --pool-id mypool-linux

# List the compute nodes running in a pool.
az batch node list --pool-id mypool-linux

# If a particular node in the pool is having issues, it can be rebooted or reimaged.
# The ID of the node can be retrieved with the list command above.
# A typical node ID will be in the format 'tvm-xxxxxxxxxx_1-<timestamp>'.
az batch node reboot --pool-id mypool-linux --node-id tvm-123_1-20170316t000000z

# Alternatively, one or more compute nodes can be deleted from the pool, and any
# work already assigned to it can be re-allocated to another node.
az batch node delete \
    --pool-id mypool-linux \
    --node-list tvm-123_1-20170316t000000z tvm-123_2-20170316t000000z \
    --node-deallocation-option requeue

Eseguire la pulizia dei pool

Dopo aver eseguito lo script di esempio precedente, eseguire il comando seguente per eliminare i pool.

az batch pool delete --pool-id mypool-windows
az batch pool delete --pool-id mypool-linux

Spiegazione dello script

Questo script usa i comandi seguenti per creare e manipolare pool Batch. Ogni comando della tabella include collegamenti alla documentazione specifica del comando.

Comando Note
az batch account login Eseguire l'autenticazione con un account Batch.
az batch application summary list Elencare le applicazioni disponibili nell'account Batch.
az batch pool create Creare un pool di macchine virtuali.
az batch pool set Aggiornare le proprietà di un pool.
az batch pool node-agent-skus list Elencare gli SKU agente nodo disponibili e le informazioni dell'immagine.
az batch pool resize Ridimensionare il numero di macchine virtuali in esecuzione nel pool specificato.
az batch pool show Visualizzare le proprietà di un pool.
az batch pool delete Eliminare il pool specificato.
az batch pool autoscale enable Abilitare la scalabilità automatica in un pool e applicare una formula.
az batch pool autoscale disable Disabilitare la scalabilità automatica in un pool.
az batch node list Elencare tutti i nodi di calcolo nel pool specificato.
az batch node reboot Riavviare il nodo di calcolo specificato.
az batch node delete Eliminare i nodi elencati dal pool specificato.

Passaggi successivi

Per altre informazioni sull'interfaccia della riga di comando di Azure, vedere la documentazione sull'interfaccia della riga di comando di Azure.

Altri esempi di script dell'interfaccia della riga di comando di Batch sono disponibili nella documentazione dell'interfaccia della riga di comando di Azure Batch.