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. Caricare facilmente i file di input dei processi nell'account di archiviazione associato all'account Batch e scaricare i file di output dei processi.Easily upload job input files to the storage account associated with the Batch account, and download job output files.

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. 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.With only CLI commands, you can create a pool, upload input data, create jobs and associated tasks, and download the resulting output data. Non è necessario alcun codice aggiuntivo.No additional code is required. Eseguire i comandi dell'interfaccia della riga di comando direttamente o integrarli negli script.Run the CLI commands directly or integrate them into scripts.

I modelli di Batch sono basati 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.Batch templates build on the existing Batch support in the Azure CLI for JSON files to specify property values when creating 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.

I processi in genere usano file di dati di input e producono file di dati di output.Jobs typically use input data files and produce output data files. Un account di archiviazione è associato, per impostazione predefinita, ad ogni account Batch.A storage account is associated, by default, with each Batch account. È possibile trasferire i file da e verso questo account di archiviazione usando l'interfaccia della riga di comando, senza alcun codice e senza credenziali di archiviazione.Transfer files to and from this storage account using the CLI, with no coding and no storage credentials.

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. Di seguito è illustrata la procedura con l'interfaccia della riga di comando di Azure Batch per richiamare ffmpeg per la transcodifica di file video di origine in file con risoluzioni diverse.Here are steps with the Azure Batch CLI to invoke ffmpeg to transcode source video files to different resolutions.

  • Creare un modello di pool.Create a pool template. 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.

  • Creare un modello di processo.Create a job template. 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 downloaded.

InstallazioneInstallation

Installare un'estensione dell'interfaccia della riga di comando di Azure Batch per usare il modello e le funzionalità di trasferimento di file.Install an Azure Batch CLI extension to use the template and file transfer capabilities.

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 aver installato l'interfaccia della riga di comando di Azure, 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, install the latest version of the Batch extension using the following CLI command:

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

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 renderne più facile la gestione, grazie alla presenza di un'unica posizione per la modifica delle proprietà.Variables can simplify and reduce the size of the template, as well as make it more maintainable by having one location to change properties.
  • 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 di creare file di script per installare le applicazioni tramite uno strumento di gestione pacchetti.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.

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

Modelli di poolPool templates

I modelli di pool supportano le funzionalità standard di parametri e variabili dei modelli.Pool templates support the standard template capabilities of parameters and variables. Supportano anche il costrutto di livello superiore seguente:They also support the following higher-level construct:

  • 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. 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.By declaring one or more packages, you avoid creating a script that gets the required packages, installing the script, and running the script on each pool node.

Di seguito è riportato un esempio di un modello che crea un pool di macchine virtuali Linux con ffmpeg installato.The following is an example of a template that creates a pool of Linux VMs with ffmpeg installed. Per usarlo, fornire solo una stringa di ID del pool e il numero di macchine virtuali nel pool:To use it, supply only a pool ID string and the number of VMs in the 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": "16.04-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, richiamare il modello nel modo seguente:If the template file was named pool-ffmpeg.json, then invoke the template as follows:

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

Modelli di processoJob templates

I modelli di processo supportano le funzionalità standard di parametri e variabili dei modelli.Job templates support the standard template capabilities of parameters and variables. Supportano anche il costrutto di livello superiore seguente:They also support the following higher-level construct:

  • 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 per eseguire la transcodifica di file video MP4 in file con una di due risoluzioni inferiori usando ffmpeg.The following is an example of a template that creates a job to transcode MP4 video files with ffmpeg to one of two lower resolutions. Viene creata un'attività per ogni file video di origine:It creates one task 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, richiamare il modello nel modo seguente:If the template file was named job-ffmpeg.json, then invoke the template 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. In genere, sia i file di input che i file di output devono essere trasferiti dal client al nodo o dal nodo al client.Usually, input files and output files are 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 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.The Batch CLI extension provides commands to upload files from client to a specified file group and download 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" costituisce la 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 the location where the transcoded output files are copied to from the node running each task.

SummarySummary

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 inviare feedback o suggerimenti nella sezione Commenti dell'articolo o tramite il repository della community di 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 Batch Community repo.

Passaggi successiviNext steps