Udostępnij za pomocą


Zarządzanie zasobami usługi Batch przy użyciu poleceń cmdlet programu PowerShell

Za pomocą cmdletów PowerShell w Azure Batch można wykonywać wiele typowych zadań usługi Batch oraz tworzyć do nich skrypty. Jest to krótkie wprowadzenie do poleceń cmdlet, których można użyć do zarządzania kontami usługi Batch i pracy z zasobami usługi Batch, takimi jak pule, prace i podzadania.

Aby uzyskać pełną listę poleceń cmdlet usługi Batch i szczegółową składnię poleceń cmdlet, zobacz dokumentację poleceń cmdlet usługi Azure Batch.

Zalecamy częste aktualizowanie modułów programu Azure PowerShell w celu korzystania z aktualizacji i ulepszeń usługi.

Wymagania wstępne

  • Zainstaluj i skonfiguruj moduł Azure PowerShell. Aby zainstalować konkretny moduł usługi Azure Batch, taki jak moduł wersji wstępnej, zobacz galerię programu PowerShell.

  • Uruchom cmdlet Connect-AzAccount, aby połączyć się z subskrypcją (cmdlety usługi Azure Batch są dostarczane w module Azure Resource Manager).

    Connect-AzAccount
    
  • Zarejestruj się w przestrzeni nazw dostawcy usługi Batch. Tę operację należy wykonać tylko raz w ramach subskrypcji.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Zarządzanie kontami i kluczami usługi Batch

Tworzenie konta usługi Batch

New-AzBatchAccount tworzy konto usługi Batch w określonej grupie zasobów. Jeśli nie masz jeszcze grupy zasobów, utwórz grupę zasobów, uruchamiając polecenie cmdlet New-AzResourceGroup . Określ jeden z regionów świadczenia usługi Azure w parametrze Lokalizacja , na przykład "Środkowe stany USA". Na przykład:

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

Następnie utwórz konto usługi Batch w grupie zasobów. Określ nazwę konta w <account_name> oraz lokalizację i nazwę grupy zasobów. Tworzenie konta usługi Batch może zająć trochę czasu. Na przykład:

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

Uwaga

Nazwa konta usługi Batch musi być unikatowa dla regionu świadczenia usługi Azure dla grupy zasobów, zawierać od 3 do 24 znaków i używać tylko małych liter i cyfr.

Uzyskiwanie kluczy dostępu do konta

Polecenie Get-AzBatchAccountKeys pokazuje klucze dostępu skojarzone z kontem usługi Azure Batch. Uruchom na przykład następujące polecenie, aby pobrać klucze podstawowe i pomocnicze utworzonego konta.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Generowanie nowego klucza dostępu

Polecenie New-AzBatchAccountKey generuje nowy klucz konta podstawowego lub pomocniczego dla konta usługi Azure Batch. Na przykład aby wygenerować nowy klucz podstawowy dla konta usługi Batch, wpisz:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Uwaga

Aby wygenerować nowy klucz pomocniczy, określ wartość "Pomocnicza" dla parametru KeyType . Należy ponownie wygenerować klucze podstawowe i pomocnicze oddzielnie.

Usuń konto usługi Batch

Polecenie Remove-AzBatchAccount usuwa konto Batch. Na przykład:

Remove-AzBatchAccount -AccountName <account_name>

Po wyświetleniu monitu potwierdź, że chcesz usunąć konto. Usunięcie konta może zająć trochę czasu.

Tworzenie obiektu BatchAccountContext

Możesz uwierzytelnić się w celu zarządzania zasobami usługi Batch przy użyciu uwierzytelniania za pomocą klucza współużytkowanego lub uwierzytelniania entra firmy Microsoft. Aby uwierzytelnić się za pomocą poleceń cmdlet PowerShella dla usługi Batch, najpierw utwórz obiekt o nazwie BatchAccountContext, aby przechowywać poświadczenia konta lub tożsamość. Obiekt BatchAccountContext przekazujesz do poleceń cmdlet, które korzystają z parametru BatchContext.

Uwierzytelnianie za pomocą klucza współużytkowanego

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Uwaga

Domyślnie klucz podstawowy konta jest używany do uwierzytelniania, ale można jawnie wybrać klucz do użycia, zmieniając właściwość KeyInUse obiektu BatchAccountContext: $context.KeyInUse = "Secondary".

Uwierzytelnianie usługi Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Tworzenie i modyfikowanie zasobów usługi Batch

Użyj poleceń cmdlet, takich jak New-AzBatchPool, New-AzBatchJob i New-AzBatchTask , aby utworzyć zasoby w ramach konta usługi Batch. Istnieją odpowiednie polecenia cmdlet Get- i Set- , aby zaktualizować właściwości istniejących zasobów i polecenia cmdlet Remove- , aby usunąć zasoby na koncie usługi Batch.

W przypadku korzystania z wielu z tych poleceń cmdlet oprócz przekazywania obiektu BatchContext należy utworzyć lub przekazać obiekty zawierające szczegółowe ustawienia zasobów, jak pokazano w poniższym przykładzie. Aby uzyskać dodatkowe przykłady, zobacz szczegółową pomoc dotyczącą każdego polecenia cmdlet.

Utwórz pulę Batch

Podczas tworzenia lub aktualizowania puli usługi Batch należy określić konfigurację. Pule powinny być zwykle konfigurowane przy użyciu konfiguracji maszyny wirtualnej, co pozwala określić jeden z obsługiwanych obrazów maszyn wirtualnych z systemem Linux lub Windows wymienionych w witrynie Azure Virtual Machines Marketplace lub udostępnić przygotowany obraz niestandardowy. Pule konfiguracji usług Cloud Services udostępniają tylko węzły obliczeniowe systemu Windows i nie obsługują wszystkich funkcji usługi Batch.

Po uruchomieniu polecenia New-AzBatchPool przekaż ustawienia systemu operacyjnego w obiekcie PSVirtualMachineConfiguration lub PSCloudServiceConfiguration. Na przykład poniższy fragment kodu tworzy pulę w usłudze Batch z węzłami obliczeniowymi o rozmiarze Standard_A1 w konfiguracji maszyny wirtualnej z obrazem systemu Ubuntu Server 20.04-LTS. W tym miejscu parametr VirtualMachineConfiguration określa zmienną $configuration jako obiekt PSVirtualMachineConfiguration. Parametr BatchContext określa wcześniej zdefiniowaną zmienną $context jako obiekt 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

Docelowa liczba węzłów obliczeniowych w nowej puli jest obliczana przez formułę skalowania automatycznego. W takim przypadku formuła jest po prostu $TargetDedicated=4, co oznacza, że liczba węzłów obliczeniowych w puli wynosi co najwyżej 4.

Wykonywanie zapytań dotyczących pul, zadań, zadań i innych szczegółów

Użyj poleceń cmdlet, takich jak Get-AzBatchPool, Get-AzBatchJob i Get-AzBatchTask , aby wykonywać zapytania dotyczące jednostek utworzonych w ramach konta usługi Batch.

Wykonywanie zapytań o dane

Na przykład użyj polecenia PowerShell Get-AzBatchPools, aby znaleźć pule. Domyślnie to zapytanie dotyczy wszystkich pul w ramach konta, zakładając, że obiekt BatchAccountContext jest już przechowywany w $context:

Get-AzBatchPool -BatchContext $context

Korzystanie z filtru OData

Filtr OData można podać przy użyciu parametru Filter , aby znaleźć tylko interesujące Cię obiekty. Na przykład, możesz znaleźć wszystkie pule, których identyfikatory zaczynają się od "myPool":

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Ta metoda nie jest tak elastyczna, jak użycie metody "Where-Object" w potoku lokalnym. Jednak zapytanie jest wysyłane bezpośrednio do usługi Batch, aby wszystkie filtrowanie odbywało się po stronie serwera, co pozwala zaoszczędzić przepustowość internetową.

Użyj parametru Id

Alternatywą dla filtru OData jest użycie parametru Id . Aby wysłać zapytanie o określoną pulę o identyfikatorze "myPool":

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

Parametr Id obsługuje tylko wyszukiwanie pełnego identyfikatora; nie symboli wieloznacznych ani filtrów w stylu OData.

Używanie parametru MaxCount

Domyślnie każde polecenie cmdlet zwraca maksymalnie 1000 obiektów. Jeśli osiągniesz ten limit, uściślij filtr, aby przywrócić mniej obiektów lub jawnie ustawić wartość maksymalną przy użyciu parametru MaxCount . Na przykład:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Aby usunąć górną granicę, ustaw wartość MaxCount na wartość 0 lub mniejszą.

Korzystanie z potoku programu PowerShell

Polecenia cmdlet usługi Batch wykorzystują potok programu PowerShell do przesyłania danych między poleceniami cmdlet. Ma to taki sam efekt jak określenie parametru, ale ułatwia pracę z wieloma jednostkami.

Na przykład znajdź i wyświetl wszystkie zadania w ramach konta:

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

Uruchom ponownie każdy węzeł obliczeniowy w puli:

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

Zarządzanie pakietami aplikacji

Pakiety aplikacji zapewniają uproszczony sposób wdrażania aplikacji w węzłach obliczeniowych w pulach. Za pomocą poleceń cmdlet programu PowerShell usługi Batch można przekazywać pakiety aplikacji i zarządzać nimi na koncie usługi Batch oraz wdrażać wersje pakietów w węzłach obliczeniowych.

Ważne

Aby używać pakietów aplikacji, musisz połączyć konto usługi Azure Storage z kontem usługi Batch.

Tworzenie aplikacji:

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

Dodaj pakiet aplikacji:

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

Ustaw domyślną wersję aplikacji:

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

Wyświetlanie listy pakietów aplikacji

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

$application.ApplicationPackages

Usuwanie pakietu aplikacji

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

Usuwanie aplikacji

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

Uwaga

Przed usunięciem aplikacji należy usunąć wszystkie wersje pakietu aplikacji. Jeśli spróbujesz usunąć aplikację, która ma obecnie pakiety aplikacji, zostanie wyświetlony błąd "Konflikt".

Wdrażanie pakietu aplikacji

Podczas tworzenia puli można określić co najmniej jeden pakiet aplikacji do wdrożenia. Po określeniu pakietu podczas tworzenia puli, jest on wdrażany na każdym węźle w momencie dołączenia węzła do puli. Pakiety są również wdrażane po ponownym uruchomieniu węzła lub ponownym przywróceniu jego obrazu systemu.

Określ opcję -ApplicationPackageReference podczas tworzenia puli, aby wdrożyć pakiet aplikacji na węzłach puli w miarę ich dołączania. Najpierw utwórz obiekt PSApplicationPackageReference i skonfiguruj go przy użyciu identyfikatora aplikacji i wersji pakietu, którą chcesz wdrożyć w węzłach obliczeniowych puli:

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Teraz utwórz pulę i określ obiekt odwołania do pakietu jako argument opcji ApplicationPackageReferences :

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

Więcej informacji na temat pakietów aplikacji można znaleźć w temacie Wdrażanie aplikacji w węzłach obliczeniowych przy użyciu pakietów aplikacji usługi Batch.

Aktualizuj pakiety aplikacji puli

Aby zaktualizować aplikacje przypisane do istniejącej puli, najpierw utwórz obiekt PSApplicationPackageReference z żądanymi właściwościami (identyfikator aplikacji i wersja pakietu):

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Następnie pobierz pulę z usługi Batch, wyczyść wszystkie istniejące pakiety, dodaj nowe odwołanie do pakietu i zaktualizuj usługę Batch przy użyciu nowych ustawień puli:

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

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Teraz zaktualizowałeś właściwości puli w usłudze Batch. Aby faktycznie wdrożyć nowy pakiet aplikacji na węzłach obliczeniowych w puli, należy ponownie uruchomić lub odtworzyć te węzły. Za pomocą tego polecenia możesz ponownie uruchomić każdy węzeł w puli:

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

Wskazówka

W węzłach obliczeniowych w puli można wdrożyć wiele pakietów aplikacji. Jeśli chcesz dodać pakiet aplikacji zamiast zastąpić aktualnie wdrożone pakiety, pomiń $pool.ApplicationPackageReferences.Clear() wiersz powyżej.

Następne kroki