Batch-erőforrások kezelése PowerShell-parancsmagokkal

A Azure Batch PowerShell-parancsmagokkal számos gyakori Batch-feladatot hajthat végre és szkriptelhet. Ez a cikk gyors ismertetést nyújt a Batch-fiókok felügyeletéhez és a Batch-erőforrásokkal, például készletekkel, feladatokkal és tevékenységekkel használható parancsmagokról.

A Batch-parancsmagok teljes listájáért és a parancsmagok részletes szintaxisáért lásd: Azure Batch-parancsmagok referenciája.

Ajánlott gyakran frissíteni az Azure PowerShell-modulokat a szolgáltatásfrissítések és -fejlesztések kihasználása érdekében.

Előfeltételek

  • Telepítse és konfigurálja az Azure PowerShell modul legújabb verzióját. Egy adott Azure Batch-modul, például egy kiadás előtti modul telepítésével kapcsolatban lásd a PowerShell-galériát ismertető cikket.

  • Futtassa az Csatlakozás-AzAccount parancsmagot az előfizetéshez való csatlakozáshoz (a Azure Batch parancsmagok az Azure Resource Manager modulban találhatók):

    Connect-AzAccount
    
  • Regisztráljon a Batch-szolgáltató névterével. Ezt a műveletet előfizetésenként csak egyszer kell elvégezni.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Batch-fiókok és kulcsok felügyelete

Batch-fiók létrehozása

A New-AzBatchAccount létrehoz egy Batch-fiókot egy megadott erőforráscsoportban. Ha még nem rendelkezik erőforráscsoporttal, hozzon létre egyet a New-AzResourceGroup parancsmag futtatásával. A Hely paraméternél adjon meg egy Azure régiót, például az „USA középső régiója”. Például:

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

Ezután hozzon létre egy Batch-fiókot az erőforráscsoportban. Adja meg a fiók <>nevét account_name, valamint az erőforráscsoport helyét és nevét. A Batch-fiókok létrehozása eltarthat egy ideig. Például:

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

Megjegyzés

A Batch-fiók nevének egyedinek kell lennie az erőforráscsoport Azure-régiójában, 3–24 karaktert kell tartalmaznia, és csak kisbetűkből és számokból állhat.

Fiók hívóbetűinek beszerzése

A Get-AzBatchAccountKeys megjeleníti az Azure Batch-fiókhoz társított hozzáférési kulcsokat. Például a következő futtatásával lekérheti a létrehozott fiók elsődleges és másodlagos hívóbetűit.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Új hívóbetű létrehozása

A New-AzBatchAccountKey létrehoz egy új elsődleges vagy másodlagos fiókkulcsot egy Azure Batch fiókhoz. Ha például új elsődleges hívóbetűt szeretne létrehozni a Batch-fiókhoz, írja be a következőt:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Megjegyzés

Új másodlagos hívóbetű létrehozásához adja meg a „Másodlagos” szöveget a KeyType paraméterhez. Az elsődleges és a másodlagos hívóbetűket külön kell újra létrehoznia.

Batch-fiók törlése

A Remove-AzBatchAccount töröl egy Batch-fiókot. Például:

Remove-AzBatchAccount -AccountName <account_name>

A felugró kérdésre erősítse meg, hogy valóban el kívánja távolítani a fiókot. A fiókeltávolítás eltarthat egy ideig.

BatchAccountContext objektum létrehozása

A Batch-erőforrások kezeléséhez szükséges hitelesítést elvégezheti megosztott kulcsos hitelesítéssel vagy Azure Active Directory-hitelesítéssel. A Batch PowerShell-parancsmagokkal végzett hitelesítéshez először hozzon létre egy BatchAccountContext objektumot, amely a fiók hitelesítő adatait vagy az identitást tárolja. A BatchAccountContext objektumot a BatchContext paramétert használó parancsmagokba adja át.

Megosztott kulcsos hitelesítés

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Megjegyzés

Alapértelmezés szerint a fiók elsődleges hívóbetűjét használja a hitelesítéshez, de explicit módon kiválaszthatja a használni kívánt betűt, ha módosítja a BatchAccountContext objektum KeyInUse tulajdonságát: $context.KeyInUse = "Secondary".

Hitelesítés Azure Active Directory-fiókkal

$context = Get-AzBatchAccount -AccountName <account_name>

Batch-erőforrások létrehozása és módosítása

A Batch-fiók erőforrásainak létrehozásához használjon olyan parancsmagokat, mint a New-AzBatchPool, a New-AzBatchJob és a New-AzBatchTask . Vannak megfelelő Get- és Set-parancsmagok a meglévő erőforrások tulajdonságainak frissítéséhez, a Remove- parancsmagok pedig a Batch-fiókban lévő erőforrások eltávolításához.

Sok parancsmag használatakor egy BatchContext objektum átadása mellett részletes erőforrás-beállításokat tartalmazó objektumok létrehozására vagy átadására is szükség van, ahogyan az a következő példában látható. További példákat az egyes parancsmagok részletes súgójában talál.

Batch-készlet létrehozása

Batch-készlet létrehozásakor vagy frissítésekor meg kell adnia egy konfigurációt. A készleteket általában virtuálisgép-konfigurációval kell konfigurálni, amely lehetővé teszi az Azure Virtual Machines Marketplace-en felsorolt támogatott Linux- vagy Windows virtuálisgép-rendszerképek egyikének megadását, vagy megadhat egy előkészített egyéni rendszerképet. Cloud Services konfigurációs készletek csak Windows számítási csomópontokat biztosítanak, és nem támogatják az összes Batch-funkciót.

A New-AzBatchPool futtatásakor adja meg az operációs rendszer beállításait egy PSVirtualMachineConfiguration vagy PSCloudServiceConfiguration objektumban. Az alábbi kódrészlet például létrehoz egy Batch-készletet, amelynek mérete Standard_A1 számítási csomópontok a virtuális gép konfigurációjában, az Ubuntu Server 18.04-LTS rendszerképével. Itt a VirtualMachineConfiguration paraméter a $configuration változót a PSVirtualMachineConfiguration objektumként határozza meg. A BatchContext paraméter egy korábban meghatározott $context változót ad meg a BatchAccountContext objektumként.

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

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

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

Az új készletben lévő számítási csomópontok célszámát egy automatikus skálázási képlettel számítja ki a rendszer. Ebben az esetben a képlet egyszerűen a $TargetDedicated=4, ami jelzi, hogy a készletben lévő számítási csomópontok száma legfeljebb 4.

Készletek, feladatok, tevékenységek és egyéb részletek lekérdezése

A Batch-fiókban létrehozott entitások lekérdezéséhez használjon olyan parancsmagokat, mint a Get-AzBatchPool, a Get-AzBatchJob és a Get-AzBatchTask .

Adatok lekérdezése

Példaként használja a Get-AzBatchPools parancsot a készletek megkereséséhez. Ez alapértelmezés szerint a fiók összes készletét lekérdezi, ha a BatchAccountContext objektumot már tárolta a $context helyen:

Get-AzBatchPool -BatchContext $context

OData-szűrő használata

Megadhat egy OData-szűrőt a Filter paraméterrel, ha csak a kívánt objektumokat szeretné megkeresni. Például megtalálhatja az összes olyan készletet, amelynek azonosítója a "myPool" kezdetű:

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Ez a módszer nem olyan rugalmas, mint a „Where-Object” használata a helyi folyamatokban. A lekérdezést azonban közvetlenül a Batch szolgáltatásnak küldi a rendszer, hogy minden szűrés a kiszolgálói oldalon történjen, így internetes sávszélesség takarítható meg.

Az Id paraméter használata

Az OData-szűrő alternatívája az Id paraméter használata. Egy „myPool” azonosítójú adott készlet lekérdezése:

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

Az Id paraméter csak a teljes azonosítójú keresést támogatja; nem helyettesítő karaktereket vagy OData-stílusú szűrőket.

A MaxCount paraméter használata

Alapértelmezés szerint mindegyik parancsmag maximum 1000 objektumot ad vissza. Ha eléri ezt a korlátot, pontosítsa a szűrőt, hogy kevesebb objektumot adjon vissza, vagy explicit módon állítson be maximális értéket a MaxCount paraméterrel. Például:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

A felső határ eltávolításához 0 vagy kisebb értéket adjon meg a MaxCount paraméternek.

A PowerShell-folyamat használata

A Batch-parancsmagok a PowerShell-folyamat használatával küldenek adatokat a parancsmagok között. Ennek ugyanaz a hatása, mint a paraméterek megadása, de megkönnyíti a több entitással való munkát.

Például keresse meg és jelenítse meg fiókjában az összes feladatot:

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

Indítsa újra a készlet összes számítási csomópontját:

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

Alkalmazáscsomagok kezelése

Az alkalmazáscsomagok leegyszerűsítik az alkalmazások üzembe helyezését a készletek számítási csomópontjaira. A Batch PowerShell-parancsmagjaival feltöltheti és kezelheti az alkalmazáscsomagokat a Batch-fiókban, valamint a számítási csomópontokban üzembe helyezheti a csomagverziókat.

Fontos

Az alkalmazáscsomagok használatához hozzá kell kapcsolnia egy Azure Storage-fiókot a Batch-fiókjához.

Alkalmazás létrehozása :

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

Alkalmazáscsomag hozzáadása:

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

Állítsa be az alkalmazás alapértelmezett verzióját :

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

Alkalmazás csomagjainak listázása

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

$application.ApplicationPackages

Alkalmazáscsomag törlése

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

Alkalmazás törlése

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

Megjegyzés

Az alkalmazás törlése előtt törölnie kell az alkalmazás összes alkalmazáscsomag-verzióját. Ha olyan alkalmazást próbál meg törölni, amely jelenleg rendelkezik alkalmazáscsomaggal, „Ütközés” hibaüzenetet fog kapni.

Alkalmazáscsomag üzembe helyezése

Készlet létrehozásakor megadhat egy vagy több alkalmazáscsomagot az üzembe helyezéshez. Ha a készlet létrehozásakor megad egy csomagot, az a csomópont készlethez való csatlakoztatásakor minden csomóponton üzembe lesz helyezve. A csomagok akkor is üzembe lesznek helyezve, ha a csomópontot újraindítják vagy alaphelyzetbe állítják.

Adja meg az -ApplicationPackageReference kapcsolót, ha készletet hoz létre egy alkalmazáscsomag üzembe helyezéséhez a készlet csomópontjain, amikor azok csatlakoznak a készlethez. Először hozzon létre egy PSApplicationPackageReference objektumot, és konfigurálja a készlet számítási csomópontjaira telepíteni kívánt alkalmazásazonosítóval és csomagverzióval:

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Ezután hozza létre a készletet, majd a csomag-referenciaobjektumot az ApplicationPackageReferences beállítás argumentumaként adja meg:

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

Az alkalmazáscsomagok használatával kapcsolatban további információkat a Batch-alkalmazáscsomagokkal számítási csomópontokra végzett alkalmazástelepítést ismertető cikkben talál.

Készlet alkalmazáscsomagjainak frissítése

A meglévő készlethez rendelt alkalmazások frissítéséhez először hozzon létre egy PSApplicationPackageReference objektumot a kívánt tulajdonságokkal (alkalmazásazonosító és csomagverzió):

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Ezután kérje le a készletet a Batchből, törölje a meglévő csomagokat, adja hozzá az új csomaghivatkozást, és frissítse a Batch szolgáltatást az új készletbeállításokkal:

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

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

A készlet tulajdonságainak frissítése megtörtént a Batch-szolgáltatásban. Ha azonban a készlet számítási csomópontjain szeretné üzembe helyezni az új alkalmazáscsomagot, újra kell indítania vagy alaphelyzetbe kell állítania az adott csomópontok rendszerképét. Az alábbi paranccsal újraindíthatja a készlet összes számítási csomópontját:

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

Tipp

A készlet számítási csomópontjain több alkalmazáscsomagot is üzembe helyezhet. Ha a jelenleg telepített csomagok cseréje helyett inkább hozzáadna egy alkalmazáscsomagot, hagyja ki a felső $pool.ApplicationPackageReferences.Clear() sort.

Következő lépések