Usare il trasferimento di file e i modelli dell'interfaccia della riga di comando di Azure Batch (anteprima)Use Azure Batch CLI Templates and File Transfer (Preview)

Usando l'interfaccia della riga di comando di Azure è possibile eseguire processi di Batch senza scrittura del codice.Using the Azure CLI it is possible to run Batch jobs without writing code.

Creare e usare file modello con l'interfaccia della riga di comando di Azure per creare pool, processi e attività di Batch.Create and use template files with the Azure CLI to create Batch pools, jobs, and tasks. I file di input dei processi possono essere caricati facilmente nell'account di archiviazione associato all'account Batch. È inoltre possibile scaricare i file di output dei processi.Job input files can be easily uploaded to the storage account associated with the Batch account and job output files downloaded.

PanoramicaOverview

Un'estensione dell'interfaccia della riga di comando di Azure consente a utenti non sviluppatori di usare Batch end-to-end.An extension to the Azure CLI enables Batch to be used end-to-end by users who are not developers. È possibile creare un pool, caricare i dati di input, creare processi e attività associate e scaricare i dati di output risultanti senza necessità di codice, usando direttamente l'interfaccia della riga di comando o integrandola in script.A pool can be created, input data uploaded, jobs and associated tasks created, and the resulting output data downloaded – no code required, the CLI being used directly or being integrated into scripts.

I modelli di Batch sono basati sul supporto di Batch esistente nell'interfaccia della riga di comando di Azure, che consente ai file JSON di specificare i valori delle proprietà per la creazione di pool, processi, attività e altri elementi.Batch templates build on the existing Batch support in the Azure CLI that allows JSON files to specify property values for the creation of pools, jobs, tasks, and other items. Con i modelli di Batch, vengono aggiunte le funzionalità seguenti a ciò che è possibile fare con i file JSON:With Batch templates, the following capabilities are added over what is possible with the JSON files:

  • È possibile definire parametri.Parameters can be defined. 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.When the template is used, only the parameter values are specified to create the item, with other item property values being specified in the template body. 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à.A user who understands Batch and the applications to be run by Batch can create templates, specifying pool, job, and task property values. Un utente che ha meno familiarità con Batch e/o con le applicazioni può specificare solo i valori per i parametri definiti.A user less familiar with Batch and/or the applications only needs to specify the values for the defined parameters.

  • 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.Job task factories create one or more tasks associated with a job, avoiding the need for many task definitions to be created and significantly simplifying job submission.

È necessario fornire file di dati di input per i processi e spesso vengono generati file di dati di output.Input data files need to be supplied for jobs and output data files are often produced. Per impostazione predefinita, a ogni account Batch è associato un account di archiviazione e i file possono essere facilmente trasferiti da e verso questo account di archiviazione usando l'interfaccia della riga di comando, senza necessità di codici o credenziali di archiviazione.A storage account is associated, by default, with each Batch account and files can be easily transferred to and from this storage account using the CLI, with no coding and no storage credentials required.

Ad esempio, ffmpeg è una diffusa applicazione che elabora i file audio e video.For example, ffmpeg is a popular application that processes audio and video files. L'interfaccia della riga di comando di Azure Batch può essere usata per richiamare ffmpeg per la transcodifica di file video di origine in file con risoluzioni diverse.The Azure Batch CLI can be used to invoke ffmpeg to transcode source video files to different resolutions.

  • Viene creato un modello di pool.A pool template is created. 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.The user creating the template knows how to call the ffmpeg application and its requirements; they specify the appropriate OS, VM size, how ffmpeg is installed (from an application package or using a package manager, for example), and other pool property values. I parametri vengono creati in modo che quando il modello viene usato, è necessario specificare solo l'ID del pool e il numero di VM.Parameters are created so when the template is used, only the pool ID and number of VMs need to be specified.

  • Viene creato un modello di processo.A job template is created. 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.The user creating the template knows how ffmpeg needs to be invoked to transcode source video to a different resolution and specifies the task command line; they also know that there is a folder containing the source video files, with a task required per input file.

  • 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.An end user with a set of video files to transcode first creates a pool using the pool template, specifying only the pool ID and number of VMs required. Può quindi caricare i file di origine per la transcodifica.They can then upload the source files to transcode. È quindi possibile inviare un processo usando il modello di processo, specificando solo l'ID del pool e il percorso dei file di origine caricati.A job can then be submitted using the job template, specifying only the pool ID and location of the source files uploaded. Viene creato il processo di batch con un'attività per ogni file di input generato.The Batch job is created, with one task per input file being generated. Infine, i file di output transcodificati possono essere scaricati.Finally, the transcoded output files can be download.

InstallareInstallation

Il modello e le funzionalità di trasferimento di file richiedono l'installazione di un'estensione.The template and file transfer capabilities require an extension to be installed.

Per istruzioni su come installare l'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure 2.0.For instructions on how to install the Azure CLI see Install Azure CLI 2.0.

Dopo avere installato l'interfaccia della riga di comando di Azure, è possibile installare la versione più recente dell'estensione di Batch mediante il comando dell'interfaccia della riga di comando seguente:Once the Azure CLI has been installed, the latest version of the Batch extension can be installed using the following CLI command:

az extension add --source https://github.com/Azure/azure-batch-cli-extensions/releases/download/azure-batch-cli-extensions-2.0.0/azure_batch_cli_extensions-2.0.0-py2.py3-none-any.whl

Per ulteriori informazioni sull'estensione del Batch, vedere Estensioni per interfaccia della riga di comando Batch di Microsoft Azure per Windows, Mac e Linux.For more information about the Batch extension, see Microsoft Azure Batch CLI Extensions for Windows, Mac and Linux.

ModelliTemplates

L'interfaccia della riga di comando di Azure Batch consente la creazione di elementi, come pool, processi e attività, specificando un file JSON contenente valori e nomi di proprietà.The Azure Batch CLI allows items such as pools, jobs, and tasks to be created by specifying a JSON file containing property names and values. ad esempio:For example:

az batch pool create –-json-file AppPool.json

I modelli di Azure Batch sono simili ai modelli di Azure Resource Manager per quanto riguarda funzionalità e sintassi.Azure Batch templates are similar to Azure Resource Manager templates, in functionality and syntax. Si tratta di file JSON contenenti nomi e valori delle proprietà degli elementi, ma con i seguenti importanti concetti aggiuntivi:They are JSON files that contain item property names and values, but add the following main concepts:

  • ParametersParameters

    • I valori delle proprietà possono essere specificati in una sezione del corpo, in modo che quando il modello viene usato sia necessario fornire solo i valori dei parametri.Allow property values to be specified in a body section, with only parameter values needing to be supplied when the template is used. È ad esempio possibile inserire la definizione completa di un pool nel corpo e definire un solo parametro come ID del pool. Per creare un pool deve quindi essere fornita solo una stringa di ID del pool.For example, the complete definition for a pool could be placed in the body and only one parameter defined for pool id; only a pool ID string therefore needs to be supplied to create a 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.The template body can be authored by someone with knowledge of Batch and the applications to be run by Batch; only values for the author-defined parameters must be supplied when the template is used. Un utente senza conoscenza approfondita di Batch e/o delle applicazioni può quindi usare i modelli.A user without the in-depth Batch and/or application knowledge can therefore use the templates.

  • VariabiliVariables

    • È possibile specificare valori dei parametri semplici o complessi in un'unica posizione e usarli in una o più posizioni nel corpo del modello.Allow simple or complex parameter values to be specified in one place and used in one or more places in the template body. Le variabili possono semplificare il modello e ridurne le dimensioni, oltre che rendere più facile la sua gestione, grazie alla presenza di un'unica posizione per modificare le proprietà il cui valore può cambiare.Variables can simplify and reduce the size of the template, as well as make it more maintainable by having one location to change properties whose value may change.
  • Costrutti di livello superioreHigher-level constructs

    • Nel modello sono disponibili alcuni costrutti di livello superiore che non sono ancora disponibili nelle API di Batch.Some higher-level constructs are available in the template that are not yet available in the Batch APIs. È 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.For example, a task factory can be defined in a job template that creates multiple tasks for the job using a common task definition. Questi costrutti evitano la necessità di usare codice per creare dinamicamente più file JSON, ad esempio un file per ogni attività, oltre che creare file di script per installare le applicazioni tramite uno strumento di gestione pacchetti, ad esempio.These constructs avoid the need to code to dynamically create multiple JSON files, such as one file per task, as well as create script files to install applications via a package manager, for example.

    • A un certo punto, dove applicabile, questi costrutti possono essere aggiunti al servizio Batch e disponibili nelle API, nell'interfaccia utente e in altre posizioni di Batch.At some point, where applicable, these constructs may be added to the Batch service and available in the Batch APIs, UIs, etc.

Modelli di poolPool templates

Oltre alle funzionalità standard di parametri e variabili dei modelli, il modello di pool supporta i costrutti di livello superiore seguenti:In addition to the standard template capabilities of parameters and variables, the following higher-level constructs are supported by the pool template:

  • Riferimenti ai pacchettiPackage references

    • Facoltativamente, è possibile copiare il software in nodi del pool usando strumenti di gestione dei pacchetti.Optionally allows software to be copied to pool nodes by using package managers. Vengono specificati lo strumento di gestione dei pacchetti e l'ID del pacchetto.The package manager and package ID are specified. La possibilità di dichiarare uno o più pacchetti evita la necessità di creare uno script che ottiene i pacchetti necessari, installare lo script ed eseguire lo script in ogni nodo del pool.Being able to declare one or more packages avoids the need to create a script that gets the required packages, install the script, and run the script on each pool node.

Di seguito è riportato un esempio di un modello che crea un pool di VM Linux con l'applicazione ffmpeg installata e richiede solo una stringa di ID del pool e il numero di VM da fornire:The following is an example of a template that creates a pool of Linux VMs with ffmpeg installed and only requires a pool ID string and the number of VMs to be supplied to use:

{
    "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": "16.04.0-LTS",
                    "version": "latest"
                },
                "nodeAgentSKUId": "batch.node.ubuntu 16.04"
            },
            "vmSize": "STANDARD_D3_V2",
            "targetDedicatedNodes": "[parameters('nodeCount')]",
            "enableAutoScale": false,
            "maxTasksPerNode": 1,
            "packageReferences": [
                {
                    "type": "aptPackage",
                    "id": "ffmpeg"
                }
            ]
        }
    }
}

Se il nome del file del modello fosse pool-ffmpeg.json, sarebbe possibile richiamare il modello nel modo seguente:If the template file was named pool-ffmpeg.json, then the template would be invoked as follows:

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

Modelli di processoJob templates

Oltre alle funzionalità standard di parametri e variabili dei modelli, il modello di processo supporta i costrutti di livello superiore seguenti:In addition to the standard template capabilities of parameters and variables, the following higher-level constructs are supported by the job template:

  • Factory di attivitàTask factory

    • Vengono create più attività per un processo da una definizione di attività.Creates multiple tasks for a job from one task definition. Sono supportati tre tipi di factory di attività: processo parametrico di organizzazione, attività per file e raccolta di attività.Three types of task factory are supported – parametric sweep, task per file, and task collection.

Di seguito è riportato un esempio di un modello che crea un processo che usa ffmpeg per eseguire la transcodifica di file video MP4 in file con una di due risoluzioni inferiori, con un'attività creata per ogni file video di origine:The following is an example of a template that creates a job that uses ffmpeg to transcode MP4 video files to one of two lower resolutions, with one task created per source video file:

{
    "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, sarebbe possibile richiamare il modello nel modo seguente:If the template file was named job-ffmpeg.json, then the template would be invoked as follows:

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

Gruppi e trasferimenti di fileFile groups and file transfer

La maggior parte dei processi e delle attività richiede file di input e produce file di output.Most jobs and tasks require input files and produce output files. Sia i file di input che i file di output in genere devono essere trasferiti dal client al nodo o dal nodo al client.Both input files and output files typically need to be transferred, either from the client to the node, or from the node to the 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 creato per impostazione predefinita per ogni account Batch.The Azure Batch CLI extension abstracts away file transfer and utilizes the storage account that is created by default for each Batch account.

Un gruppo di file equivale a un contenitore creato nell'account di archiviazione di Azure.A file group equates to a container that is created in the Azure storage account. Il gruppo di file può avere sottocartelle.The file group may have subfolders.

L’estensione per interfaccia della riga di comando 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.The Batch CLI extension provides commands for uploading files from client to a specified file group and downloading files from the specified file group to a 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.Pool and job templates allow files stored in file groups to be specified for copy onto pool nodes or off pool nodes back to a file group. Nel modello di processo illustrato in precedenza, ad esempio, viene specificato il gruppo di file "ffmpeg-input" per la factory di attività come posizione dei file video di origine copiati nel nodo per la transcodifica. Il gruppo di file "ffmpeg-output" viene usato come posizione in cui vengono copiati i file di output transcodificati dal nodo che esegue ogni attività.For example, in the job template specified previously, the file group “ffmpeg-input” is specified for the task factory as the location of the source video files copied down onto the node for transcoding; the file group “ffmpeg-output” is used as the location where the transcoded output files are copied to from the node running each task.

RiepilogoSummary

Il supporto per i modelli e il trasferimento di file è stato attualmente aggiunto solo all'interfaccia della riga di comando di Azure.Template and file transfer support have currently been added only to the Azure CLI. L'obiettivo è quello di allargare il numero di utenti che possono usare Batch, consentendone l'utilizzo anche a ricercatori, utenti IT e così via che non hanno la necessità di sviluppare codice usando le API di Batch.The goal is to expand the audience that can use Batch to users who do not need to develop code using the Batch APIs, such as researchers, IT users, and so on. 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.Without coding, users with knowledge of Azure, Batch, and the applications to be run by Batch can create templates for pool and job creation. Con i parametri dei modelli, gli utenti che non hanno una conoscenza approfondita di Batch e delle applicazioni possono usare i modelli.With template parameters, users without detailed knowledge of Batch and the applications can use the templates.

Provare l'estensione Batch per l'interfaccia della riga di comando di Azure e fornire feedback o suggerimenti nella sezione Commenti dell'articolo o tramite il forum di Azure Batch.Try out the Batch extension for the Azure CLI and provide us with any feedback or suggestions, either in the comments for this article or via the Azure Batch forum.

Passaggi successiviNext steps