Share via


Cli-sjablonen en bestandsoverdracht Azure Batch gebruiken

Waarschuwing

De Batch Azure CLI-extensie wordt op 30 september 2024 buiten gebruik gesteld. Verwijder de extensie met de opdracht az extension remove --name azure-batch-cli-extensions.

Door een Batch-extensie voor Azure CLI te gebruiken, kunnen gebruikers Batch-taken uitvoeren zonder code te schrijven.

JSON-sjabloonbestanden maken en gebruiken met Azure CLI om Batch-pools, -taken en -taken te maken. Gebruik CLI-extensieopdrachten om eenvoudig taakinvoerbestanden te uploaden naar het opslagaccount dat is gekoppeld aan het Batch-account en taakuitvoerbestanden te downloaden.

Notitie

JSON-bestanden bieden niet dezelfde functionaliteit als Azure Resource Manager-sjablonen. Ze zijn bedoeld om te worden opgemaakt als de onbewerkte REST-aanvraagbody. De CLI-extensie wijzigt geen bestaande opdrachten, maar heeft wel een vergelijkbare sjabloonoptie waarmee gedeeltelijke azure-Resource Manager-sjabloonfunctionaliteit wordt toegevoegd. Zie Azure Batch CLI-extensies voor Windows, Mac en Linux.

Overzicht

Met een uitbreiding van de Azure CLI kan Batch end-to-end worden gebruikt door gebruikers die geen ontwikkelaars zijn. Met alleen CLI-opdrachten kunt u een pool maken, invoergegevens uploaden, taken en bijbehorende taken maken en de resulterende uitvoergegevens downloaden. Er is geen aanvullende code vereist. Voer de CLI-opdrachten rechtstreeks uit of integreer ze in scripts.

Batch-sjablonen bouwen voort op de bestaande Batch-ondersteuning in de Azure CLI voor JSON-bestanden om eigenschapswaarden op te geven bij het maken van pools, taken, taken en andere items. Batch-sjablonen voegen de volgende mogelijkheden toe:

  • Parameters kunnen worden gedefinieerd. Wanneer de sjabloon wordt gebruikt, worden alleen de parameterwaarden opgegeven om het item te maken, met andere itemeigenschapswaarden die zijn opgegeven in de hoofdtekst van de sjabloon. Een gebruiker die Inzicht heeft in Batch en de toepassingen die door Batch moeten worden uitgevoerd, kan sjablonen maken, waarbij waarden voor pool-, taak- en taakeigenschap worden opgegeven. Een gebruiker die minder bekend is met Batch en/of de toepassingen hoeft alleen de waarden voor de gedefinieerde parameters op te geven.

  • Taaktaakfactory's maken een of meer taken die aan een taak zijn gekoppeld, waardoor er niet veel taakdefinities hoeven te worden gemaakt en het indienen van taken aanzienlijk wordt vereenvoudigd.

Taken gebruiken doorgaans invoergegevensbestanden en produceren uitvoergegevensbestanden. Aan elk Batch-account is standaard een opslagaccount gekoppeld. U kunt bestanden overdragen van en naar dit opslagaccount met behulp van Azure CLI, zonder codering en zonder opslagreferenties.

ffmpeg is bijvoorbeeld een populaire toepassing die audio- en videobestanden verwerkt. Met behulp van de Azure Batch CLI-extensie kunt u het eenvoudiger maken voor een gebruiker om ffmpeg aan te roepen om bronvideobestanden te transcoderen naar verschillende resoluties. Het proces kan er als volgt uitzien:

  • Een poolsjabloon maken. De gebruiker die de sjabloon maakt, weet hoe de ffmpeg-toepassing en de bijbehorende vereisten moeten worden aangeroepen; Ze geven het juiste besturingssysteem, vm-grootte, hoe ffmpeg wordt geïnstalleerd (bijvoorbeeld vanuit een toepassingspakket of met behulp van pakketbeheer) en andere waarden voor pooleigenschappen. Parameters worden gemaakt, dus wanneer de sjabloon wordt gebruikt, hoeven alleen de groeps-id en het aantal VM's te worden opgegeven.
  • Een taaksjabloon maken. De gebruiker die de sjabloon maakt, weet hoe ffmpeg moet worden aangeroepen om de broncode te transcoderen naar een andere resolutie en geeft de opdrachtregel van de taak op; Ze weten ook dat er een map is met de bronvideobestanden, met een taak die per invoerbestand is vereist.
  • Een eindgebruiker met een set videobestanden die eerst moet worden getranscodeerd, maakt een pool met behulp van de poolsjabloon, waarbij alleen de pool-id en het aantal vereiste VM's worden opgegeven. Ze kunnen vervolgens de bronbestanden uploaden om te transcoderen. Een taak kan vervolgens worden ingediend met behulp van de taaksjabloon, waarbij alleen de pool-id en locatie van de geüploade bronbestanden worden opgegeven. De Batch-taak wordt gemaakt, waarbij één taak per invoerbestand wordt gegenereerd. Ten slotte kunnen de getranscodeerde uitvoerbestanden worden gedownload.

Installatie

Als u de Azure Batch CLI-extensie wilt installeren, installeert u eerst de Azure CLI 2.0 of voert u de Azure CLI uit in Azure Cloud Shell.

Installeer de nieuwste versie van de Batch-extensie met behulp van de volgende Azure CLI-opdracht:

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

Zie de GitHub-opslagplaats voor meer informatie over de Batch CLI-extensie en aanvullende installatieopties.

Als u de CLI-extensiefuncties wilt gebruiken, hebt u een Azure Batch-account nodig en voor de opdrachten waarmee bestanden van en naar de opslag worden overgebracht, een gekoppeld opslagaccount.

Zie Batch-resources beheren met Azure CLI om u aan te melden bij een Batch-account met de Azure CLI.

Sjablonen

Azure Batch sjablonen zijn qua functionaliteit en syntaxis vergelijkbaar met Azure Resource Manager-sjablonen. Dit zijn JSON-bestanden die namen en waarden van itemeigenschappen bevatten, maar de volgende hoofdconcepten toevoegen:

  • Parameters: hiermee staat u toe dat eigenschapswaarden worden opgegeven in een hoofdtekstsectie, waarbij alleen parameterwaarden hoeven te worden opgegeven wanneer de sjabloon wordt gebruikt. De volledige definitie voor een pool kan bijvoorbeeld in de hoofdtekst worden geplaatst en slechts één parameter is gedefinieerd voor poolId; daarom hoeft alleen een pool-id-tekenreeks te worden opgegeven om een pool te maken. De hoofdtekst van de sjabloon kan worden gemaakt door iemand met kennis van Batch en de toepassingen die door Batch moeten worden uitgevoerd; alleen waarden voor de door de auteur gedefinieerde parameters moeten worden opgegeven wanneer de sjabloon wordt gebruikt. Hierdoor kunnen gebruikers zonder diepgaande kennis van Batch en/of toepassing de sjablonen gebruiken.
  • Variabelen: hiermee staat u toe dat eenvoudige of complexe parameterwaarden op één plaats worden opgegeven en op een of meer plaatsen in de hoofdtekst van de sjabloon worden gebruikt. Variabelen kunnen de grootte van de sjabloon vereenvoudigen en verkleinen en de sjabloon beter onderhouden door één locatie te hebben om eigenschappen te wijzigen.
  • Constructies op een hoger niveau: sommige constructies op een hoger niveau zijn beschikbaar in de sjabloon die nog niet beschikbaar zijn in de Batch-API's. Een taakfactory kan bijvoorbeeld worden gedefinieerd in een taaksjabloon die meerdere taken voor de taak maakt, met behulp van een algemene taakdefinitie. Met deze constructies hoeft u niet te coderen om dynamisch meerdere JSON-bestanden te maken, zoals één bestand per taak, en hoeft u ook scriptbestanden te maken om toepassingen te installeren via pakketbeheer.

Poolsjablonen

Poolsjablonen ondersteunen de standaardsjabloonmogelijkheden van parameters en variabelen. Ze ondersteunen ook pakketverwijzingen, waarmee software eventueel kan worden gekopieerd naar poolknooppunten met behulp van pakketbeheerders. De pakketbeheerder en pakket-id worden opgegeven in de pakketreferentie. Door een of meer pakketten te declareren, voorkomt u dat u een script maakt waarmee de vereiste pakketten worden opgehaald, het script installeert en het script uitvoert op elk poolknooppunt.

Hier volgt een voorbeeld van een sjabloon waarmee een pool van Virtuele Linux-machines wordt gemaakt waarop ffmpeg is geïnstalleerd. Als u deze wilt gebruiken, geeft u alleen een pool-id-tekenreeks en het aantal VM's in de groep op:

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

Als het sjabloonbestand de naam pool-ffmpeg.json heeft, roept u de sjabloon als volgt aan:

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

De CLI vraagt u om waarden op te geven voor de poolId parameters en nodeCount . U kunt ook de parameters in een JSON-bestand opgeven. Bijvoorbeeld:

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

Als het JSON-bestand parameters de naam pool-parameters.json heeft, roept u de sjabloon als volgt aan:

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

Taaksjablonen

Taaksjablonen ondersteunen de standaardsjabloonmogelijkheden van parameters en variabelen. Ze ondersteunen ook de taakfactory-constructie , waarmee meerdere taken voor een taak worden gemaakt op basis van één taakdefinitie. Er worden drie typen takenfactory's ondersteund: parametrisch opruimen, taak per bestand en taakverzameling.

Hier volgt een voorbeeld van een sjabloon waarmee een taak wordt gemaakt om MP4-videobestanden met ffmpeg te transcoderen naar een van de twee lagere resoluties. Er wordt één taak per bronvideobestand gemaakt. Zie Bestandsgroepen en bestandsoverdracht voor meer informatie over bestandsgroepen voor taakinvoer en -uitvoer.

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

Als het sjabloonbestand de naam job-ffmpeg.json heeft, roept u de sjabloon als volgt aan:

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

Net als voorheen vraagt de CLI u om waarden op te geven voor de parameters. U kunt ook de parameters in een JSON-bestand opgeven.

Sjablonen gebruiken in Batch Explorer

U kunt een Batch CLI-sjabloon uploaden naar de Batch Explorer-bureaubladtoepassing om een Batch-pool of -taak te maken. U kunt ook kiezen uit vooraf gedefinieerde pool- en taaksjablonen in de Batch Explorer-galerie.

Een sjabloon uploaden:

  1. Selecteer In Batch Explorer de optie Galerie>Lokale sjablonen.
  2. Selecteer of sleep een lokale pool of taaksjabloon.
  3. Selecteer Deze sjabloon gebruiken en volg de aanwijzingen op het scherm.

Bestandsgroepen en bestandsoverdracht

Voor de meeste taken en taken zijn invoerbestanden en uitvoerbestanden vereist. Invoerbestanden en uitvoerbestanden worden meestal overgedragen van de client naar het knooppunt of van het knooppunt naar de client. De Azure Batch CLI-extensie abstraheert bestandsoverdracht en maakt gebruik van het opslagaccount dat u aan elk Batch-account kunt koppelen.

Een bestandsgroep is gelijk aan een container die is gemaakt in het Azure-opslagaccount. De bestandsgroep kan submappen bevatten.

De Batch CLI-extensie biedt opdrachten voor het uploaden van bestanden van de client naar een opgegeven bestandsgroep en het downloaden van bestanden van de opgegeven bestandsgroep naar een 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

Met pool- en taaksjablonen kunnen bestanden die zijn opgeslagen in bestandsgroepen worden opgegeven voor kopiëren naar poolknooppunten of externe poolknooppunten terug naar een bestandsgroep. In de eerder opgegeven taaksjabloon wordt bijvoorbeeld de bestandsgroep ffmpeg-input opgegeven voor de taakfactory als de locatie van de bronvideobestanden die naar het knooppunt zijn gekopieerd voor transcodering. De bestandsgroep ffmpeg-output is de locatie waar de getranscodeerde uitvoerbestanden worden gekopieerd van het knooppunt waarop elke taak wordt uitgevoerd.

Samenvatting

Ondersteuning voor sjabloon- en bestandsoverdracht is momenteel alleen toegevoegd aan de Azure CLI. Het doel is om de doelgroep uit te breiden die Batch kan gebruiken voor gebruikers die geen code hoeven te ontwikkelen met behulp van de Batch-API's, zoals onderzoekers en IT-gebruikers. Zonder codering kunnen gebruikers met kennis van Azure, Batch en de toepassingen die door Batch moeten worden uitgevoerd, sjablonen maken voor het maken van pools en taken. Met sjabloonparameters kunnen gebruikers zonder gedetailleerde kennis van Batch en de toepassingen de sjablonen gebruiken.

Probeer de Batch-extensie voor de Azure CLI en geef ons feedback of suggesties, in de opmerkingen voor dit artikel of via de Batch Community-opslagplaats.

Volgende stappen

  • Bekijk gedetailleerde installatie- en gebruiksdocumentatie, voorbeelden en broncode in de Azure GitHub-opslagplaats.
  • Meer informatie over het gebruik van Batch Explorer voor het maken en beheren van Batch-resources.