Sdílet prostřednictvím


Správa prostředků služby Batch pomocí rutin PowerShellu

Pomocí rutin Azure Batch PowerShellu můžete provádět a skriptovat mnoho běžných úloh Batch. Tento článek obsahuje rychlý úvod do rutin, s jejichž pomocí můžete spravovat účty Batch a pracovat s prostředky služby Batch, jako jsou fondy, úlohy a úkoly.

Úplný seznam rutin prostředí Batch a podrobný popis syntaxe rutin najdete v článku Rutiny služby Azure Batch – reference.

Moduly Azure PowerShellu doporučujeme pravidelně aktualizovat, abyste mohli využívat výhody, které vám přinášejí aktualizace a vylepšení služby.

Předpoklady

  • Nainstalujte a nakonfigurujte modul Azure PowerShellu. Pokud chcete nainstalovat konkrétní modul Azure Batch, například předběžnou verzi modulu, přejděte do Galerie prostředí PowerShell.

  • Spuštěním rutiny Připojení-AzAccount se připojte k vašemu předplatnému (rutiny Azure Batch se dodávají v modulu Azure Resource Manager):

    Connect-AzAccount
    
  • Zaregistrujte se u poskytovatele oboru názvů služby Batch. Tuto operaci stačí provést jen jednou pro každé předplatné.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Správa účtů a klíčů služby Batch

Vytvoření účtu služby Batch

New-AzBatchAccount vytvoří účet Batch v zadané skupině prostředků. Pokud skupinu prostředků ještě nemáte, vytvořte ji spuštěním rutiny New-AzResourceGroup . Do parametru Location zadejte některou oblast Azure, třeba „Střední USA“. Příklad:

New-AzResourceGroup –Name MyBatchResourceGroup –Location "Central US"

Potom ve skupině prostředků vytvořte účet Batch. Zadejte název účtu v <account_name> a umístění a název vaší skupiny prostředků. Vytváření účtu Batch může nějakou dobu trvat. Příklad:

New-AzBatchAccount –AccountName <account_name> –Location "Central US" –ResourceGroupName <res_group_name>

Poznámka:

Název účtu Batch musí být v dané oblasti Azure skupiny prostředků jedinečný, musí být tvořen 3 až 24 znaky a obsahovat pouze malá písmena a číslice.

Získání přístupových klíčů k účtu

Rutina Get-AzBatchAccountKeys zobrazuje přístupové klíče přidružené k účtu Azure Batch. Pokud například chcete získat primární a sekundární klíče vytvořeného účtu, spusťte následující rutinu:

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Vygenerování nového přístupového klíče

New-AzBatchAccountKey vygeneruje nový primární nebo sekundární klíč účtu pro účet Azure Batch. Pokud například chcete vygenerovat nový primární klíč pro účet Batch, zadejte:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Poznámka:

Pokud chcete vygenerovat nový sekundární klíč, zadejte jako parametr KeyType Secondary. Primární a sekundární klíče je nutné vygenerovat odděleně.

Odstranění účtu Batch

Remove-AzBatchAccount odstraní účet Batch. Příklad:

Remove-AzBatchAccount -AccountName <account_name>

Až k tomu budete vyzváni, potvrďte, že chcete odebrat účet. Odebrání účtu může trvat nějakou dobu.

Vytvoření objektu BatchAccountContext

Ke správě prostředků služby Batch můžete použít ověřování pomocí sdíleného klíče nebo ověřování Microsoft Entra. Pokud chcete provést ověření pomocí rutin PowerShellu pro službu Batch, vytvořte nejprve objekt BatchAccountContext, do kterého se uloží identita nebo přihlašovací údaje vašeho účtu. Objekt BatchAccountContext budete předávat rutinám, které pracují s parametrem BatchContext.

Ověřování pomocí sdíleného klíče

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Poznámka:

Ve výchozím nastavení se k ověřování používá primární klíč účtu, ale změnou hodnoty vlastnosti KeyInUse objektu BatchAccountContext lze klíč vybrat explicitně: $context.KeyInUse = "Secondary".

Ověřování Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Vytváření a úpravy prostředků služby Batch

Pomocí rutin, jako jsou New-AzBatchPool, New-AzBatchJob a New-AzBatchTask , můžete vytvářet prostředky v rámci účtu Batch. Pomocí rutin Get- a Set- lze aktualizovat vlastnosti existujících prostředků a pomocí rutin Remove- lze prostředky v účtu Batch odebírat.

Při použití řady těchto rutin musíte kromě předání objektu BatchContext navíc taky vytvořit nebo předat objekty, které obsahují podrobné nastavení prostředků, jak ukazuje následující příklad. Další příklady najdete v podrobné nápovědě k jednotlivým rutinám.

Vytvoření fondu Batch

Při vytváření nebo aktualizaci fondu Batch zadáte konfiguraci. Fondy by měly být obecně nakonfigurované pomocí konfigurace virtuálního počítače, což vám umožní zadat jednu z podporovaných imagí virtuálních počítačů s Linuxem nebo Windows uvedených na Marketplace virtuálních počítačů Azure nebo zadat vlastní image, kterou jste připravili. Fondy konfigurace cloudových služeb poskytují pouze výpočetní uzly Windows a nepodporují všechny funkce služby Batch.

Když spustíte New-AzBatchPool, předejte nastavení operačního systému v PSVirtualMachineConfiguration nebo PSCloudServiceConfiguration objektu. Následující fragment kódu například vytvoří fond služby Batch s velikostí Standard_A1 výpočetních uzlů v konfiguraci virtuálního počítače image s Ubuntu Serverem 20.04-LTS. Parametr VirtualMachineConfiguration tady určuje proměnnou $configuration jako objekt PSVirtualMachineConfiguration. Parametr BatchContext určuje jako objekt BatchAccountContext dříve definovanou proměnnou $context.

$imageRef = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSImageReference" -ArgumentList @("UbuntuServer","Canonical","20.04-LTS")

$configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSVirtualMachineConfiguration" -ArgumentList @($imageRef, "batch.node.ubuntu 20.04")

New-AzBatchPool -Id "mypspool" -VirtualMachineSize "Standard_a1" -VirtualMachineConfiguration $configuration -AutoScaleFormula '$TargetDedicated=4;' -BatchContext $context

Cílový počet výpočetních uzlů v novém fondu se vypočítá vzorcem automatického škálování. V tomto případě se používá jednoduchý vzorec $TargetDedicated=4, který značí, že maximální počet výpočetních uzlů ve fondu je 4.

Dotazy na fondy, úlohy, úkoly a další podrobnosti

K dotazování na entity vytvořené v rámci účtu Batch použijte rutiny, jako je Get-AzBatchPool, Get-AzBatchJob a Get-AzBatchTask .

Dotazy na data

Například k vyhledání fondů použijte Get-AzBatchPools . Tato rutina se ve výchozím nastavení dotazuje na všechny fondy v účtu, za předpokladu, že jste už uložili objekt BatchAccountContext do hodnoty $context:

Get-AzBatchPool -BatchContext $context

Použití filtru OData

Pomocí parametru Filter lze použít filtr OData a vyhledat pouze objekty, které vás zajímají. Můžete například najít všechny fondy s ID začínající na "myPool":

$filter = "startswith(id,'myPool')"

Get-AzBatchPool -Filter $filter -BatchContext $context

Tato metoda není tak účinná jako použití klauzule Where-Object v místním kanálu. Dotaz se však odešle do služby Batch přímo, takže se veškeré filtrování provede na straně serveru, což šetří šířku pásma připojení k internetu.

Použití parametru Id

Alternativou k použití filtru OData je použití parametru Id. Postup zadání dotazu na konkrétní fond s parametrem Id myPool

Get-AzBatchPool -Id "myPool" -BatchContext $context

Parametr ID podporuje pouze vyhledávání s úplným ID, ne zástupné čáry ani filtry ve stylu OData.

Použití parametru MaxCount

Ve výchozím nastavení každá rutina vrací maximálně 1 000 objektů. Pokud tento limit překročíte, můžete buď upřesnit filtr, aby vracel méně objektů, nebo explicitně nastavit maximální hodnotu pomocí parametru MaxCount. Příklad:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Pokud chcete horní omezení počtu zcela odebrat, nastavte parametr MaxCount na hodnotu 0 nebo menší.

Použití kanálu prostředí PowerShell

Rutiny Batch používají kanál PowerShellu k odesílání dat mezi rutinami. Výsledek je stejný, jako když zadáte parametr, ale zjednoduší se práce s více entitami.

Když chcete například najít a zobrazit všechny úlohy ve svém účtu:

Get-AzBatchJob -BatchContext $context | Get-AzBatchTask -BatchContext $context

Restartování všech výpočetních uzlů ve fondu:

Get-AzBatchComputeNode -PoolId "myPool" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Správa balíčků aplikací

Balíčky aplikací poskytují zjednodušený způsob nasazení aplikací do výpočetních uzlů ve fondech. Rutinami PowerShellu ve službě Batch můžete odesílat a spravovat balíčky aplikací v účtu Batch a nasazovat verze balíčků do výpočetních uzlů.

Důležité

Chcete-li používat balíčky aplikací, je třeba propojit účet Azure Storage s vaším účtem Batch.

Vytvoření aplikace:

New-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Přidání balíčku aplikace:

New-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0" -Format zip -FilePath package001.zip

Nastavte pro aplikaci výchozí verzi:

Set-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -DefaultVersion "1.0"

Výčet balíčků aplikací:

$application = Get-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

$application.ApplicationPackages

Odstranění balíčku aplikace:

Remove-AzBatchApplicationPackage -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication" -ApplicationVersion "1.0"

Odstranění aplikace

Remove-AzBatchApplication -AccountName <account_name> -ResourceGroupName <res_group_name> -ApplicationId "MyBatchApplication"

Poznámka:

Před odstraněním aplikace musíte odstranit všechny verze balíčků aplikace. Pokud se pokusíte odstranit aplikaci, která ještě má balíčky, zobrazí se chyba s informací o konfliktu.

Nasazení balíčku aplikace

Při vytváření fondu můžete zadat jeden nebo více balíčků aplikací, které budete nasazovat. Když určíte balíček při vytváření fondu, bude nasazen v každém uzlu při jeho přidání do fondu. Balíčky se také nasazují při restartování uzlu nebo jeho obnovení z image.

Pokud vytváříte fond pro nasazení balíčku aplikace na uzly fondu při jejich přidávání do fondu, zadejte parametr -ApplicationPackageReference. Nejprve vytvořte objekt PSApplicationPackageReference a nakonfigurujte ho s ID aplikace a verzí balíčku, které chcete nasadit do výpočetních uzlů fondu:

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Teď vytvořte fond a zadejte referenční objekt balíčku jako argument možnosti ApplicationPackageReferences:

New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -VirtualMachineConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference

Další informace o balíčcích aplikací najdete v tématu Nasazení aplikací do výpočetních uzlů pomocí balíčků aplikací Batch.

Aktualizace balíčků aplikací fondu

Pokud chcete aktualizovat aplikace přiřazené k existujícímu fondu, nejprve vytvořte objekt PSApplicationPackageReference s požadovanými vlastnostmi (ID aplikace a verze balíčku):

$appPackageReference = New-Object Microsoft.Azure.Commands.Batch.Models.PSApplicationPackageReference

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Dále získejte fond ze služby Batch, vymažte všechny existující balíčky, přidejte nový odkaz na balíček a aktualizujte službu Batch pomocí nového nastavení fondu:

$pool = Get-AzBatchPool -BatchContext $context -Id "PoolWithAppPackage"

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Aktualizovali jste vlastnosti fondu ve službě Batch. Pokud chcete nový balíček aplikace skutečně nasadit do výpočetních uzlů ve fondu, musíte příslušné uzly restartovat nebo je obnovit z image. K restartování všech uzlů ve fondu můžete použít tento příkaz:

Get-AzBatchComputeNode -PoolId "PoolWithAppPackage" -BatchContext $context | Restart-AzBatchComputeNode -BatchContext $context

Tip

Do výpočetních uzlů ve fondu můžete nasadit několik balíčků aplikací. Pokud chcete přidat balíček aplikace místo nahrazení aktuálně nasazených balíčků, vynecháte $pool.ApplicationPackageReferences.Clear() řádek výše.

Další kroky