Udostępnij za pośrednictwem


Zarządzanie zasobami usługi Batch za pomocą poleceń cmdlet programu PowerShell

Za pomocą poleceń cmdlet programu PowerShell usługi Azure Batch można wykonywać i wykonywać skrypty wielu typowych zadań usługi Batch. Oto krótkie wprowadzenie do poleceń cmdlet, których można używać do zarządzania kontami usługi Batch oraz pracy z zasobami usługi Batch, np. pulami i zadaniami.

Pełna lista poleceń cmdlet w usłudze Batch oraz szczegółowa składnia poleceń cmdlet znajdują się w dokumentacji dotyczącej poleceń cmdlet w usłudze Azure Batch.

Zaleca się częstą aktualizację modułów programu Azure PowerShell, aby mieć możliwość korzystania z aktualizacji i rozszerzeń usługi.

Wymagania wstępne

  • Zainstaluj i skonfiguruj moduł programu Azure PowerShell. Aby zainstalować określony moduł usługi Azure Batch, na przykład moduł w wersji wstępnej, zobacz Galerię programu PowerShell.

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

    Connect-AzAccount
    
  • Zarejestruj się w przestrzeni nazw dostawcy usługi Batch. Tę operację wystarczy wykonać raz w całym okresie obowiązywania subskrypcji.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Zarządzanie kontami i kluczami usługi Batch

Tworzenie konta usługi Batch

Polecenie New-AzBatchAccount umożliwia utworzenie konta usługi Batch w określonej grupie zasobów. Jeśli nie masz jeszcze grupy zasobów, utwórz ją, uruchamiając polecenie cmdlet New-AzResourceGroup. W parametrze Location określ jeden z regionów świadczenia usługi Azure, na przykład „Środkowe stany USA”. 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ąć nieco 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 Azure dla grupy zasobów, zawierać od 3 do 24 znaków i tylko małe litery i cyfry.

Pobieranie kluczy dostępu do konta

Polecenie Get-AzBatchAccountKeys umożliwia wyświetlenie kluczy dostępu powiązanych z kontem usługi Azure Batch. Na przykład uruchom następujące polecenia, aby pobrać klucz podstawowy i klucz pomocniczy do utworzonego konta.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Generowanie nowego klucza dostępu

Polecenie New-AzBatchAccountKey umożliwia generowanie nowego klucza podstawowego lub klucza pomocniczego do konta usługi Azure Batch. Na przykład, aby wygenerować nowy klucz podstawowy do konta usługi Batch, wpisz:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Uwaga

Aby wygenerować nowy klucz pomocniczy, wpisz „Secondary” dla parametru KeyType. Ponowne generowanie klucza podstawowego i klucza pomocniczego należy wykonywać oddzielnie.

Usuwanie konta usługi Batch

Polecenie Remove-AzBatchAccount umożliwia usunięcie konta usługi Batch. Przykład:

Remove-AzBatchAccount -AccountName <account_name>

Po wyświetleniu monitu potwierdź, że chcesz usunąć konto. Usunięcie konta może potrwać 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 uwierzytelniać się przy użyciu poleceń cmdlet programu PowerShell w usłudze Batch, najpierw utwórz obiekt BatchAccountContext do przechowywania poświadczeń konta lub tożsamości. Obiekt BatchAccountContext zostaje przeniesiony do poleceń cmdlet, które używają parametru BatchContext.

Uwierzytelnianie klucza wspólnego

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Uwaga

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

Uwierzytelnianie Microsoft Entra

$context = Get-AzBatchAccount -AccountName <account_name>

Tworzenie i modyfikowanie zasobów usługi Batch

Do tworzenia zasobów w ramach konta usługi Batch służą takie polecenia cmdlet jak New-AzBatchPool, New-AzBatchJob oraz New-AzBatchTask. Istnieją odpowiednie polecenia cmdlet Get- i Set- do aktualizacji właściwości istniejących zasobów oraz polecenia cmdlet Remove- do usuwania zasobów w ramach konta usługi Batch.

Podczas korzystania z wielu tych poleceń cmdlet oprócz przekazywania obiektu BatchContext należy utworzyć lub przekazać obiekty, które zawierają szczegółowe ustawienia zasobów, jak pokazano w poniższym przykładzie. Dodatkowe przykłady zamieszczono w szczegółowych plikach pomocy każdego polecenia cmdlet.

Tworzenie puli usługi 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ę usługi Batch o rozmiarze Standard_A1 węzłach obliczeniowych w konfiguracji maszyny wirtualnej z obrazem z systemem Ubuntu Server 20.04-LTS. W tym miejscu parametr VirtualMachineConfiguration określa zmienną $configuration jako obiekt PSVirtualMachineConfiguration. Parametr BatchContext określa uprzednio 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 wygląda po prostu w taki sposób — $TargetDedicated=4, co oznacza, że liczba węzłów obliczeniowych w puli nie przekracza 4.

Zapytania dotyczące puli, zadań, podzadań oraz innych szczegółów

Takie polecenia cmdlet jak Get-AzBatchPool, Get-AzBatchJob i Get-AzBatchTask służą do przesyłania zapytań dotyczących jednostek utworzonych w ramach konta usługi Batch.

Zapytania dotyczące danych

Przykładowo polecenie Get-AzBatchPools służy do znajdowania pul. Domyślnie umożliwia to przesłanie zapytań dotyczących wszystkich pul w ramach konta, zakładając, że obiekt BatchAccountContext został już zapisany w zmiennej $context:

Get-AzBatchPool -BatchContext $context

Korzystanie z filtru OData

Można skonfigurować filtr OData przy użyciu parametru Filtr w taki sposób, by znajdowane były tylko obiekty, które interesują użytkownika. Np. można znaleźć wszystkie pule z identyfikatorami zaczynającymi się od „myPool”:

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Ta metoda nie jest tak elastyczna jak w przypadku korzystania z parametru „Where-Object” w lokalnym potoku. Jednak zapytanie zostaje przesłane bezpośrednio do usługi Batch, więc całe filtrowanie odbywa się po stronie serwera, co pozwala na oszczędność przepustowości internetowej.

Korzystanie z parametru Id

Alternatywą dla filtru OData jest użycie parametru Id. Aby przesłać zapytanie dotyczące określonej puli o identyfikatorze „myPool”:

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

Parametr Id obsługuje tylko wyszukiwanie pełnych identyfikatorów, a nie symboli wieloznacznych czy filtrów typu OData.

Korzystanie z parametru MaxCount

Domyślnie każde polecenie cmdlet zwraca maksymalnie 1000 obiektów. W przypadku osiągnięcia tego limitu zmień ustawienia filtru w taki sposób, aby zwracał mniej obiektów, lub jawnie ustaw wartość maksymalną przy użyciu parametru MaxCount (Maksymalna liczba). Przykład:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

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

Korzystanie z potoku programu PowerShell

Polecenia cmdlet usługi Batch używają potoku programu PowerShell do przesyłania danych między poleceniami cmdlet. Powoduje to taki sam skutek co określenie parametru, ale sprawia, że praca z wieloma jednostkami jest łatwiejsza.

Na przykład znalezienie i wyświetlenie wszystkich zadań na Twoim koncie:

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

Ponowne uruchomienie (ponowny rozruch) każdego węzła obliczeniowego w puli:

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

Zarządzanie pakietem aplikacji

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

Ważne

Najpierw połącz konto usługi Azure Storage z kontem usługi Batch, aby użyć pakietów aplikacji.

Tworzenie aplikacji:

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

Dodawanie pakietu aplikacji:

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

Ustaw wersję domyślną 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 musisz usunąć wszystkie wersje pakietu aplikacji. Jeśli spróbujesz usunąć aplikację, która zawiera obecnie pakiety aplikacji, zostanie wyświetlony komunikat o błędzie „Konflikt”.

Wdrażanie pakietu aplikacji

Podczas tworzenia puli możesz określić co najmniej jeden pakiet aplikacji dla wdrożenia. Jeśli określisz pakiet w czasie tworzenia puli, zostanie wdrożony w każdym węźle w przypadku dołączenia węzła do puli. Pakiety są też wdrażane, gdy węzeł zostaje uruchomiony ponownie lub odtworzony z obrazu.

Określ opcję -ApplicationPackageReference podczas tworzenia puli, aby wdrożyć pakiet aplikacji do węzłów dołączanych do puli. Najpierw utwórz obiekt PSApplicationPackageReference i skonfiguruj go, używając identyfikatora aplikacji i wersji pakietu, który chcesz wdrożyć do węzłów 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 dotyczących pakietów aplikacji można znaleźć w temacie Deploy applications to compute nodes with Batch application packages (Wdrażanie aplikacji w węzłach obliczeniowych za pomocą pakietów aplikacji usługi Batch).

Aktualizowanie pakietów aplikacji puli

Aby zaktualizować aplikacje przypisane do istniejącej puli, najpierw utwórz obiekt PSApplicationPackageReference z żądanymi właściwościami (identyfikatorem aplikacji oraz wersją 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

Właściwości puli w usłudze Batch zostały zaktualizowane. Jednak aby rzeczywiście wdrożyć nowy pakiet aplikacji do węzłów obliczeniowych w puli, musisz uruchomić ponownie te węzły lub odtworzyć je z obrazu. Każdy węzeł w puli możesz uruchomić ponownie za pomocą tego polecenia:

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

Napiwek

Do węzłów obliczeniowych w puli możesz 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