Dela via


Använda Azure Batch CLI-mallar och filöverföring

Varning

Batch Azure CLI-tillägget dras tillbaka den 30 september 2024. Avinstallera tillägget med kommandot az extension remove --name azure-batch-cli-extensions.

Med hjälp av ett Batch-tillägg till Azure CLI kan användarna köra Batch-jobb utan att skriva kod.

Skapa och använda JSON-mallfiler med Azure CLI för att skapa Batch-pooler, jobb och uppgifter. Använd CLI-tilläggskommandon för att enkelt ladda upp jobbindatafiler till lagringskontot som är associerat med Batch-kontot och ladda ned jobbutdatafiler.

Anteckning

JSON-filer stöder inte samma funktioner som Azure Resource Manager-mallar. De är avsedda att formateras som den råa REST-begärandetexten. CLI-tillägget ändrar inte några befintliga kommandon, men det har ett liknande mallalternativ som lägger till partiella funktioner i Azure Resource Manager mall. Se Azure Batch CLI-tillägg för Windows, Mac och Linux.

Översikt

Med ett tillägg till Azure CLI kan Batch användas från slutpunkt till slutpunkt av användare som inte är utvecklare. Med endast CLI-kommandon kan du skapa en pool, ladda upp indata, skapa jobb och associerade aktiviteter och ladda ned resulterande utdata. Ingen ytterligare kod krävs. Kör CLI-kommandona direkt eller integrera dem i skript.

Batch-mallar bygger på det befintliga Batch-stödet i Azure CLI för JSON-filer för att ange egenskapsvärden när du skapar pooler, jobb, uppgifter och andra objekt. Batch-mallar lägger till följande funktioner:

  • Parametrar kan definieras. När mallen används anges endast parametervärdena för att skapa objektet, med andra egenskapsvärden för objekt som anges i malltexten. En användare som förstår Batch och de program som ska köras av Batch kan skapa mallar, ange egenskapsvärden för pooler, jobb och aktiviteter. En användare som är mindre bekant med Batch och/eller programmen behöver bara ange värdena för de definierade parametrarna.

  • Jobbaktivitetsfabriker skapar en eller flera aktiviteter som är associerade med ett jobb, vilket förhindrar att många uppgiftsdefinitioner skapas och avsevärt förenklar jobböverföringen.

Jobb använder vanligtvis indatafiler och skapar utdatafiler. Ett lagringskonto är som standard associerat med varje Batch-konto. Du kan överföra filer till och från det här lagringskontot med hjälp av Azure CLI, utan kodning och inga autentiseringsuppgifter för lagring.

Till exempel är ffmpeg ett populärt program som bearbetar ljud- och videofiler. Med hjälp av Azure Batch CLI-tillägget kan du göra det enklare för en användare att anropa ffmpeg för att koda källvideofiler till olika upplösningar. Processen kan se ut så här:

  • Skapa en poolmall. Användaren som skapar mallen vet hur ffmpeg-programmet ska anropas och dess krav. de anger lämpligt operativsystem, VM-storlek, hur ffmpeg installeras (från ett programpaket eller med hjälp av till exempel en pakethanterare) och andra poolegenskapsvärden. Parametrar skapas så när mallen används behöver endast pool-ID och antal virtuella datorer anges.
  • Skapa en jobbmall. Användaren som skapar mallen vet hur ffmpeg måste anropas för att koda källvideon till en annan upplösning och anger aktivitetskommandoraden. De vet också att det finns en mapp som innehåller källvideofilerna, med en uppgift som krävs per indatafil.
  • En slutanvändare med en uppsättning videofiler som ska kodas skapar först en pool med hjälp av poolmallen och anger endast pool-ID:t och antalet virtuella datorer som krävs. De kan sedan ladda upp källfilerna för att omkoda. Ett jobb kan sedan skickas med hjälp av jobbmallen och endast ange pool-ID och plats för de uppladdade källfilerna. Batch-jobbet skapas med en aktivitet per indatafil som genereras. Slutligen kan de omkodade utdatafilerna laddas ned.

Installation

Om du vill installera Azure Batch CLI-tillägget installerar du först Azure CLI 2.0 eller kör Azure CLI i Azure Cloud Shell.

Installera den senaste versionen av Batch-tillägget med följande Azure CLI-kommando:

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

Mer information om Batch CLI-tillägget och ytterligare installationsalternativ finns på GitHub-lagringsplatsen.

Om du vill använda CLI-tilläggsfunktionerna behöver du ett Azure Batch-konto och för de kommandon som överför filer till och från lagring ett länkat lagringskonto.

Information om hur du loggar in på ett Batch-konto med Azure CLI finns i Hantera Batch-resurser med Azure CLI.

Mallar

Azure Batch mallar liknar Azure Resource Manager mallar, i funktioner och syntax. De är JSON-filer som innehåller objektegenskapsnamn och -värden, men lägger till följande huvudbegrepp:

  • Parametrar: Tillåt att egenskapsvärden anges i ett brödtextavsnitt, där endast parametervärden behöver anges när mallen används. Den fullständiga definitionen för en pool kan till exempel placeras i brödtexten och endast en parameter definieras för poolId. Endast en pool-ID-sträng behöver därför anges för att skapa en pool. Malltexten kan skapas av någon med kunskap om Batch och de program som ska köras av Batch. endast värden för de författardefinierade parametrarna måste anges när mallen används. På så sätt kan användare utan djupgående Batch- och/eller programkunskaper använda mallarna.
  • Variabler: Tillåt att enkla eller komplexa parametervärden anges på en plats och används på en eller flera platser i malltexten. Variabler kan förenkla och minska mallens storlek, samt göra den mer underhållsbar genom att ha en plats där du kan ändra egenskaper.
  • Konstruktioner på högre nivå: Vissa konstruktioner på högre nivå är tillgängliga i mallen som ännu inte är tillgängliga i Batch-API:erna. En aktivitetsfabrik kan till exempel definieras i en jobbmall som skapar flera aktiviteter för jobbet med hjälp av en gemensam uppgiftsdefinition. Dessa konstruktioner undviker behovet av att koda för att dynamiskt skapa flera JSON-filer, till exempel en fil per uppgift, samt skapa skriptfiler för att installera program via en pakethanterare.

Poolmallar

Poolmallar stöder standardmallens funktioner för parametrar och variabler. De stöder också paketreferenser, som om du vill tillåta att programvara kopieras till poolnoder med hjälp av pakethanterare. Pakethanteraren och paket-ID anges i paketreferensen. Genom att deklarera ett eller flera paket undviker du att skapa ett skript som hämtar nödvändiga paket, installerar skriptet och kör skriptet på varje poolnod.

Följande är ett exempel på en mall som skapar en pool med virtuella Linux-datorer med ffmpeg installerat. Om du vill använda den anger du endast en pool-ID-sträng och antalet virtuella datorer i poolen:

{
    "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"
                }
            ]
        }
    }
}

Om mallfilen hette pool-ffmpeg.json anropar du mallen på följande sätt:

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

CLI uppmanar dig att ange värden för parametrarna poolId och nodeCount . Du kan också ange parametrarna i en JSON-fil. Exempel:

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

Om JSON-parameterfilen heter pool-parameters.json anropar du mallen på följande sätt:

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

Jobbmallar

Jobbmallar stöder standardmallens funktioner för parametrar och variabler. De har också stöd för konstruktionen aktivitetsfabrik , som skapar flera aktiviteter för ett jobb från en aktivitetsdefinition. Tre typer av aktivitetsfabrik stöds: parametrisk svepning, aktivitet per fil och uppgiftssamling.

Följande är ett exempel på en mall som skapar ett jobb för att omkoda MP4-videofiler med ffmpeg till en av två lägre upplösningar. Den skapar en uppgift per källvideofil. Mer information om filgrupper för jobbindata och utdata finns i Filgrupper och filöverföring .

{
    "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"
        }
    }
}

Om mallfilen hette job-ffmpeg.json anropar du mallen på följande sätt:

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

Precis som tidigare uppmanar CLI dig att ange värden för parametrarna. Du kan också ange parametrarna i en JSON-fil.

Använda mallar i Batch Explorer

Du kan ladda upp en Batch CLI-mall till Batch Explorer-skrivbordsprogrammet för att skapa en Batch-pool eller ett jobb. Du kan också välja bland fördefinierade pool- och jobbmallar i Batch Explorer-galleriet.

Så här laddar du upp en mall:

  1. I Batch Explorer väljer du Galleri>Lokala mallar.
  2. Markera eller dra och släpp en lokal pool eller jobbmall.
  3. Välj Använd den här mallen och följ anvisningarna på skärmen.

Filgrupper och filöverföring

De flesta jobb och uppgifter kräver indatafiler och skapar utdatafiler. Vanligtvis överförs indatafiler och utdatafiler, antingen från klienten till noden eller från noden till klienten. CLI-tillägget Azure Batch abstraherar bort filöverföringen och använder det lagringskonto som du kan associera med varje Batch-konto.

En filgrupp motsvarar en container som skapas i Azure-lagringskontot. Filgruppen kan ha undermappar.

Batch CLI-tillägget innehåller kommandon för att ladda upp filer från klienten till en angiven filgrupp och ladda ned filer från den angivna filgruppen till en klient.

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

Med pool- och jobbmallar kan filer som lagras i filgrupper anges för kopiering till poolnoder eller från poolnoder tillbaka till en filgrupp. I jobbmallen som angavs tidigare anges till exempel filgruppen ffmpeg-input för aktivitetsfabriken som platsen för källvideofilerna som kopierades ned till noden för omkodning. Filgruppen ffmpeg-output är den plats där de omkodade utdatafilerna kopieras från noden som kör varje aktivitet.

Sammanfattning

Stöd för mallar och filöverföringar har för närvarande bara lagts till i Azure CLI. Målet är att utöka målgruppen som kan använda Batch till användare som inte behöver utveckla kod med hjälp av Batch-API:er, till exempel forskare och IT-användare. Utan kodning kan användare med kunskap om Azure, Batch och de program som ska köras av Batch skapa mallar för pool och jobbskapande. Med mallparametrar kan användare utan detaljerad kunskap om Batch och programmen använda mallarna.

Prova Batch-tillägget för Azure CLI och ge oss feedback eller förslag, antingen i kommentarerna för den här artikeln eller via Batch Community-lagringsplatsen.

Nästa steg