Usare il trasferimento di file e i modelli dell'interfaccia della riga di comando di Azure Batch

Avviso

L'estensione dell'interfaccia della riga di comando di Azure batch verrà ritirata il 30 settembre 2024. Disinstallare l'estensione con il comando az extension remove --name azure-batch-cli-extensions.

Usando un'estensione Batch per l'interfaccia della riga di comando di Azure, gli utenti possono eseguire processi Batch senza scrivere codice.

Creare e usare file modello JSON con l'interfaccia della riga di comando di Azure per creare pool, processi e attività di Batch. Usare i comandi di estensione dell'interfaccia della riga di comando per caricare facilmente i file di input dei processi nell'account di archiviazione associato all'account Batch e scaricare i file di output dei processi.

Nota

I file JSON non supportano le stesse funzionalità dei modelli di Azure Resource Manager e devono essere formattati come il corpo della richiesta REST non elaborato. L'estensione dell'interfaccia della riga di comando non modifica i comandi esistenti, ma dispone di un'opzione di modello simile che aggiunge in parte la funzionalità dei modelli di Azure Resource Manager. Vedere Estensioni per interfaccia della riga di comando di Azure Batch per Windows, Mac e Linux.

Panoramica

Un'estensione dell'interfaccia della riga di comando di Azure consente a utenti non sviluppatori di usare Batch end-to-end. Con i soli comandi dell'interfaccia della riga di comando, è possibile creare un pool, caricare dati di input, creare processi e attività associate e scaricare i dati di output risultanti. Non è necessario alcun codice aggiuntivo. Eseguire i comandi dell'interfaccia della riga di comando direttamente o integrarli negli script.

I modelli di Batch si basano sul supporto di Batch esistente nell'interfaccia della riga di comando di Azure per i file JSON e consentono di specificare i valori delle proprietà per la creazione di pool, processi, attività e altri elementi. I modelli di Batch aggiungono le funzionalità seguenti:

  • È possibile definire parametri. Quando viene usato il modello, per creare l'elemento vengono specificati solo i valori dei parametri, mentre gli altri valori delle proprietà dell'elemento sono specificati nel corpo del modello. Un utente che conosce Batch e le applicazioni che devono essere eseguite da Batch può creare modelli, specificando i valori delle proprietà di pool, processi e attività. Un utente che ha meno familiarità con Batch e/o con le applicazioni può specificare solo i valori per i parametri definiti.

  • Le factory delle attività di processo creano una o più attività associate a un processo, evitando di dover creare diverse definizioni di attività e semplificando così notevolmente l'invio di processi.

I processi in genere usano file di dati di input e producono file di dati di output. Un account di archiviazione è associato, per impostazione predefinita, ad ogni account Batch. È possibile trasferire file da e verso questo account di archiviazione usando l'interfaccia della riga di comando di Azure, senza codifica e senza credenziali di archiviazione.

Ad esempio, ffmpeg è una diffusa applicazione che elabora i file audio e video. Usando l'estensione dell'interfaccia della riga di comando di Azure Batch, è possibile rendere più semplice per un utente richiamare ffmpeg per transcodificare i file video di origine a risoluzioni diverse. Il processo potrebbe essere simile al seguente:

  • Creare un modello di pool. L'utente che crea il modello sa come chiamare l'applicazione ffmpeg e conosce i relativi requisiti. Specifica i valori appropriati per sistema operativo, dimensioni VM, modalità di installazione di ffmpeg (ad esempio da un pacchetto dell'applicazione o usando uno strumento di gestione pacchetti) e altri valori delle proprietà del pool. I parametri vengono creati in modo che quando il modello viene usato, è necessario specificare solo l'ID del pool e il numero di VM.
  • Creare un modello di processo. L'utente che crea il modello sa come si deve richiamare ffmpeg per eseguire la transcodifica di un video di origine in un file con una risoluzione diversa e specifica la riga di comando dell'attività. L'utente sa inoltre che è presente una cartella contenente i file video di origine, con un'attività necessaria per ogni file di input.
  • Un utente finale con un set di file video di cui eseguire la transcodifica deve prima di tutto creare un pool usando il modello di pool, specificando solo l'ID del pool e il numero di VM necessarie. Può quindi caricare i file di origine per la transcodifica. È quindi possibile inviare un processo usando il modello di processo, specificando solo l'ID del pool e il percorso dei file di origine caricati. Viene creato il processo di batch con un'attività per ogni file di input generato. Infine, i file di output transcodificati possono essere scaricati.

Installazione

Per installare l'estensione dell'interfaccia della riga di comando di Azure Batch, innanzitutto installare l'interfaccia della riga di comando di Azure 2.0 oppure eseguire l'interfaccia in Azure Cloud Shell.

Installare la versione più recente dell'estensione di Batch mediante il comando dell'interfaccia della riga di comando di Azure seguente:

az extension add --name azure-batch-cli-extensions

Per altre informazioni sulle estensioni dell'interfaccia della riga di comando Batch e per altre opzioni di installazione, consultare il repository GitHub.

Per usare le funzionalità di estensione dell'interfaccia della riga di comando, è necessario un account Azure Batch e, per i comandi che trasferiscono file da e verso una risorsa di archiviazione, un account di archiviazione collegato.

Per accedere a un account Batch con l'interfaccia della riga di comando di Azure, vedere Gestire le risorse di Batch con l'interfaccia della riga di comando di Azure.

Modelli

I modelli di Azure Batch sono simili ai modelli di Azure Resource Manager per quanto riguarda funzionalità e sintassi. Si tratta di file JSON contenenti nomi e valori delle proprietà degli elementi, ma con i seguenti importanti concetti aggiuntivi:

  • Parametri: consente di specificare i valori delle proprietà in una sezione del corpo, con solo i valori dei parametri che devono essere specificati quando viene usato il modello. È ad esempio possibile inserire la definizione completa di un pool nel corpo e definire un solo parametro per poolId. Per creare un pool deve quindi essere specificata solo una stringa di ID del pool. Il corpo del modello può essere creato da un utente che conosce Batch e le applicazioni che devono essere eseguite da Batch. Quando il modello viene usato, è necessario fornire solo i valori per i parametri definiti dall'autore. In questo modo gli utenti senza informazioni approfondite su Batch e/o sull'applicazione usano i modelli.
  • Variabili: consente di specificare valori di parametro semplici o complessi in un'unica posizione e usati in una o più posizioni nel corpo del modello. Le variabili possono semplificare il modello e ridurne le dimensioni, oltre che renderne più facile la gestione, grazie alla presenza di un'unica posizione per la modifica delle proprietà.
  • Costrutti di livello superiore: alcuni costrutti di livello superiore sono disponibili nel modello che non sono ancora disponibili nelle API Batch. È ad esempio possibile definire una factory di attività in un modello di processo che crea più attività per il processo usando una definizione di attività comune. Questi costrutti evitano la necessità di usare codice per creare dinamicamente più file JSON, ad esempio un file per ogni attività, oltre che di creare file di script per installare le applicazioni tramite uno strumento di gestione pacchetti.

Modelli di pool

I modelli di pool supportano le funzionalità standard di parametri e variabili dei modelli. Supportano anche i riferimenti ai pacchetti, che facoltativamente consentono di copiare il software nei nodi del pool usando le gestioni pacchetti. La gestione pacchetti e l'ID pacchetto vengono specificati nel riferimento al pacchetto. Dichiarando uno o più pacchetti, si evita di creare uno script che ottiene i pacchetti necessari, installare lo script ed eseguirlo in ogni nodo del pool.

Di seguito è riportato un esempio di un modello che crea un pool di macchine virtuali Linux con ffmpeg installato. Per usarlo, fornire solo una stringa di ID del pool e il numero di macchine virtuali nel pool:

{
    "parameters": {
        "nodeCount": {
            "type": "int",
            "metadata": {
                "description": "The number of pool nodes"
            }
        },
        "poolId": {
            "type": "string",
            "metadata": {
                "description": "The pool ID "
            }
        }
    },
    "pool": {
        "type": "Microsoft.Batch/batchAccounts/pools",
        "apiVersion": "2016-12-01",
        "properties": {
            "id": "[parameters('poolId')]",
            "virtualMachineConfiguration": {
                "imageReference": {
                    "publisher": "Canonical",
                    "offer": "UbuntuServer",
                    "sku": "20.04-LTS",
                    "version": "latest"
                },
                "nodeAgentSKUId": "batch.node.ubuntu 20.04"
            },
            "vmSize": "STANDARD_D3_V2",
            "targetDedicatedNodes": "[parameters('nodeCount')]",
            "enableAutoScale": false,
            "taskSlotsPerNode": 1,
            "packageReferences": [
                {
                    "type": "aptPackage",
                    "id": "ffmpeg"
                }
            ]
        }
    }
}

Se il nome del file del modello fosse pool-ffmpeg.json, richiamare il modello nel modo seguente:

az batch pool create --template pool-ffmpeg.json

L'interfaccia della riga di comando richiede di specificare i valori per i parametri poolId e nodeCount. È anche possibile indicare i parametri in un file JSON. Ad esempio:

{
  "poolId": {
    "value": "mypool"
  },
  "nodeCount": {
    "value": 2
  }
}

Se il nome del file JSON di parametri fosse pool-parameters.json, richiamare il modello nel modo seguente:

az batch pool create --template pool-ffmpeg.json --parameters pool-parameters.json

Modelli di processo

I modelli di processo supportano le funzionalità standard di parametri e variabili dei modelli. Supportano anche il costrutto task factory , che crea più attività per un processo da una definizione di attività. Sono supportati tre tipi di task factory: sweep parametrico, attività per file e raccolta di attività.

Di seguito è riportato un esempio di un modello che crea un processo per eseguire la transcodifica di file video MP4 in file con una di due risoluzioni inferiori usando ffmpeg. Viene creata un'attività per ogni file video di origine. Vedere Gruppi e trasferimenti di file per altre informazioni sui gruppi di file per l'input e l'output dei processi.

{
    "parameters": {
        "poolId": {
            "type": "string",
            "metadata": {
                "description": "The name of Azure Batch pool which runs the job"
            }
        },
        "jobId": {
            "type": "string",
            "metadata": {
                "description": "The name of Azure Batch job"
            }
        },
        "resolution": {
            "type": "string",
            "defaultValue": "428x240",
            "allowedValues": [
                "428x240",
                "854x480"
            ],
            "metadata": {
                "description": "Target video resolution"
            }
        }
    },
    "job": {
        "type": "Microsoft.Batch/batchAccounts/jobs",
        "apiVersion": "2016-12-01",
        "properties": {
            "id": "[parameters('jobId')]",
            "constraints": {
                "maxWallClockTime": "PT5H",
                "maxTaskRetryCount": 1
            },
            "poolInfo": {
                "poolId": "[parameters('poolId')]"
            },
            "taskFactory": {
                "type": "taskPerFile",
                "source": {
                    "fileGroup": "ffmpeg-input"
                },
                "repeatTask": {
                    "commandLine": "ffmpeg -i {fileName} -y -s [parameters('resolution')] -strict -2 {fileNameWithoutExtension}_[parameters('resolution')].mp4",
                    "resourceFiles": [
                        {
                            "blobSource": "{url}",
                            "filePath": "{fileName}"
                        }
                    ],
                    "outputFiles": [
                        {
                            "filePattern": "{fileNameWithoutExtension}_[parameters('resolution')].mp4",
                            "destination": {
                                "autoStorage": {
                                    "path": "{fileNameWithoutExtension}_[parameters('resolution')].mp4",
                                    "fileGroup": "ffmpeg-output"
                                }
                            },
                            "uploadOptions": {
                                "uploadCondition": "TaskSuccess"
                            }
                        }
                    ]
                }
            },
            "onAllTasksComplete": "terminatejob"
        }
    }
}

Se il nome del file del modello fosse job-ffmpeg.json, richiamare il modello nel modo seguente:

az batch job create --template job-ffmpeg.json

Come in precedenza, l'interfaccia della riga di comando richiede di specificare i valori per i parametri. È anche possibile indicare i parametri in un file JSON.

Usare i modelli in Batch Explorer

È possibile caricare un modello dell'interfaccia della riga di comando di Batch nell'applicazione desktop Batch Explorer per creare un pool o un processo batch. È anche possibile selezionare da pool e modelli di processi predefiniti nella raccolta di Batch Explorer.

Per caricare un modello:

  1. In Batch Explorer selezionare Raccolta>Modelli locali.
  2. Selezionare o trascinare un pool o un modello di processo locale.
  3. Selezionare Usa questo modello e seguire le istruzioni visualizzate.

Gruppi e trasferimenti di file

La maggior parte dei processi e delle attività richiede file di input e produce file di output. In genere, sia i file di input che i file di output devono essere trasferiti dal client al nodo o dal nodo al client. L'estensione dell'interfaccia della riga di comando di Azure Batch consente di evitare il trasferimento di file e usa l'account di archiviazione associabile a ogni account Batch.

Un gruppo di file equivale a un contenitore creato nell'account di archiviazione di Azure. Il gruppo di file può avere sottocartelle.

L'estensione dell'interfaccia della riga di comando di Batch fornisce comandi che consentono di caricare i file da un client a un gruppo di file specificato e di scaricare i file dal gruppo di file specificato a un client.

az batch file upload --local-path c:\source_videos\*.mp4
    --file-group ffmpeg-input

az batch file download --file-group ffmpeg-output --local-path
    c:\output_lowres_videos

I modelli di processo e di pool consentono di specificare che i file archiviati in gruppi di file vengano copiati nei nodi del pool o dai nodi del pool a un gruppo di file. Ad esempio, nel modello di processo specificato in precedenza, il filegroup ffmpeg-input viene specificato per la factory delle attività come il percorso dei file video di origine copiati nel nodo per la transcodifica. Il filegroup ffmpeg-output è la posizione in cui vengono copiati i file di output transcodificati dal nodo che esegue ogni attività.

Summary

Il supporto per i modelli e il trasferimento di file è stato attualmente aggiunto solo all'interfaccia della riga di comando di Azure. L'obiettivo è quello di allargare il numero di utenti che possono usare Batch, consentendone l'utilizzo anche a ricercatori e utenti IT che non hanno la necessità di sviluppare codice usando le API di Batch. Senza dover scrivere il codice, gli utenti che conoscono Azure Batch e le applicazioni che devono essere eseguite da Batch possono creare modelli per la creazione di pool e processi. Con i parametri dei modelli, gli utenti che non hanno una conoscenza approfondita di Batch e delle applicazioni possono usare i modelli.

Provare l'estensione Batch per l'interfaccia della riga di comando di Azure e inviare feedback o suggerimenti nella sezione Commenti dell'articolo o tramite il repository della community di Batch.

Passaggi successivi

  • Visualizzare la documentazione dettagliata sull'installazione e l'utilizzo, gli esempi e il codice sorgente nel repository GitHub di Azure.
  • Altre informazioni sull'uso di Batch Explorer per creare e gestire le risorse di Batch.