Sdílet prostřednictvím


Správa prostředků Služby Batch pomocí příkazů PowerShellu

Pomocí rutin Azure Batch PowerShellu můžete provádět a skriptovat mnoho běžných úloh Batch. Toto je rychlý úvod k rutinám, které můžete použít ke správě účtů Batch a práci s prostředky služby Batch, jako jsou fondy, úlohy a úkoly.

Úplný seznam rutin Batch a podrobnou syntaxi rutin najdete v referenčních informacích k rutinám služby Azure Batch.

Doporučujeme, abyste moduly Azure PowerShellu aktualizovali často, abyste mohli využívat aktualizace a vylepšení služeb.

Požadavky

  • Nainstalujte a nakonfigurujte modul Azure PowerShellu. Pokud chcete nainstalovat konkrétní modul Azure Batch, například modul ve verzi před vydáním, podívejte se do PowerShell Gallery.

  • Spuštěním rutiny Connect-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 ve jmenném prostoru poskytovatele Batch. Tuto operaci musíte provést jenom 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 zatím nemáte skupinu prostředků, vytvořte ji spuštěním rutiny New-AzResourceGroup. V parametru Location zadejte jednu z oblastí Azure, například USA – střed. Například:

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

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

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

Poznámka:

Název účtu Batch musí být jedinečný pro oblast Azure pro skupinu prostředků, musí obsahovat 3 až 24 znaků a používat jenom malá písmena a číslice.

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

Get-AzBatchAccountKeys zobrazuje přístupové klíče přidružené k účtu Azure Batch. Například spuštěním následujícího příkazu získejte primární a sekundární klíče účtu, který jste vytvořili.

$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 pro účet Batch vygenerovat nový primární klíč, zadejte:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Poznámka:

Chcete-li vygenerovat nový sekundární klíč, zadejte "Secondary" pro parametr KeyType . Primární a sekundární klíče musíte zvlášť vygenerovat.

Odstranění účtu Batch

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

Remove-AzBatchAccount -AccountName <account_name>

Po zobrazení výzvy potvrďte, že chcete účet odebrat. Dokončení odebrání účtu může chvíli trvat.

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 autentizovat pomocí rutin PowerShellu služby Batch, nejprve vytvořte objekt BatchAccountContext pro uložení přihlašovacích údajů nebo identity vašeho účtu. Objekt BatchAccountContext předáte rutinám, které používají parametr BatchContext .

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

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Poznámka:

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

Ověřování Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Vytváření a úprava prostředků Batch

Pomocí rutin, jako jsou New-AzBatchPool, New-AzBatchJob a New-AzBatchTask , můžete vytvářet prostředky v rámci účtu Batch. K dispozici jsou odpovídající rutiny Get- a Set- pro aktualizaci vlastností existujících prostředků a rutin Remove- pro odebrání prostředků v rámci účtu Batch.

Při použití mnoha z těchto rutin je kromě předání objektu BatchContext potřeba vytvořit nebo předat objekty, které obsahují podrobné nastavení prostředků, jak je znázorněno v následujícím příkladu. Další příklady najdete v podrobné nápovědě pro každý cmdlet.

Vytvoření fondu Batch

Při vytváření nebo aktualizaci fondu Batch zadáte konfiguraci. Pooly by se měly obecně konfigurovat pomocí konfigurace virtuálního počítače, což vám umožní zadat jednu z podporovaných image virtuálních počítačů s Linuxem nebo Windows uvedených na Marketplace virtuálních počítačů Azure, nebo poskytnout vlastní image, kterou jste si 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. Například následující ukázka kódu vytvoří fond služby Batch s uzly výpočetní velikosti Standard_A1 v konfiguraci virtuálního počítače s obrazem Ubuntu Server 20.04-LTS. Parametr VirtualMachineConfiguration zde určuje proměnnou $configuration jako objekt PSVirtualMachineConfiguration. Parametr BatchContext určuje dříve definovanou proměnnou $context jako objekt BatchAccountContext.

$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ě je vzorec jednoduše $TargetDedicated=4, což znamená, že počet výpočetních uzlů ve fondu je maximálně 4.

Dotaz na bazény, úlohy 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 .

Dotaz na data

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

Get-AzBatchPool -BatchContext $context

Použití filtru OData

Filtr OData můžete zadat pomocí parametru Filter a najít pouze objekty, které vás zajímají. Můžete například najít všechny bazény s ID začínajícím na "myPool":

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Tato metoda není tak flexibilní jako použití Where-Object v místní rouře. Dotaz se ale odešle přímo do služby Batch, aby se veškeré filtrování stalo na straně serveru, což šetří šířku pásma internetu.

Použití parametru ID

Alternativou k filtru OData je použití parametru ID . Pro dotazování na konkrétní fond s 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í vrátí každá rutina maximálně 1 000 objektů. Pokud dosáhnete tohoto limitu, buď upřesněte filtr tak, aby vrátil méně objektů, nebo explicitně nastavte maximum pomocí parametru MaxCount . Například:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Pokud chcete horní mez odebrat, nastavte MaxCount na hodnotu 0 nebo méně.

Použití potrubí PowerShellu

Rutiny Batch používají kanál PowerShellu k odesílání dat mezi rutinami. To má stejný účinek jako zadání parametru, ale usnadňuje práci s více entitami.

Můžete například najít a zobrazit všechny úkoly v rámci vašeho účtu:

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

Restartujte (restartujte) každý výpočetní uzel v poolu:

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. Pomocí rutin prostředí PowerShell Batch můžete nahrávat a spravovat balíčky aplikací ve vašem účtu Batch a nasazovat verze balíčků na výpočetní uzly.

Důležité

Pokud chcete používat balíčky aplikací, musíte s účtem Batch propojit účet Azure Storage.

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 výchozí verzi aplikace:

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

Výpis balíčků aplikace

$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 je nutné odstranit všechny verze balíčků aplikací aplikace. Pokud se pokusíte odstranit aplikaci, která aktuálně obsahuje balíčky aplikací, zobrazí se chyba Konflikt.

Nasazení balíčku aplikace

Při vytváření fondu můžete zadat jeden nebo více balíčků aplikací pro nasazení. Když při vytváření fondu zadáte balíček, nasadí se do každého uzlu, jakmile se uzel připojí k fondu. Balíčky se také nasazují při restartování nebo obnovení uzlu.

-ApplicationPackageReference Při vytváření fondu určete možnost nasazení balíčku aplikace do uzlů fondu při jejich připojení k fondu. 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 určete odkaz na objekt balíčku jako argument pro volbu 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 fondových aplikačních balíčků

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

Nyní jste aktualizovali vlastnosti fondu ve službě Batch. Chcete-li skutečně nasadit nový balíček aplikace do výpočetních uzlů ve fondu, je však nutné tyto uzly restartovat nebo přeinstalovat. Pomocí tohoto příkazu můžete restartovat každý uzel ve fondu:

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

Návod

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