Aracılığıyla paylaş


PowerShell cmdlet'leri ile Batch kaynaklarını yönetme

Azure Batch PowerShell cmdlet'leri ile birçok yaygın Batch görevini gerçekleştirebilir ve betik oluşturabilirsiniz. Bu, Batch hesaplarınızı yönetmek ve havuzlar, işler ve görevler gibi Batch kaynaklarınızla çalışmak için kullanabileceğiniz cmdlet'lere hızlı bir giriştir.

Batch cmdlet'lerinin tam listesi ve ayrıntılı cmdlet sözdizimi için lütfen Azure Batch cmdlet referansına bakın.

Hizmet güncelleştirmelerinden ve geliştirmelerinden yararlanmak için Azure PowerShell modüllerinizi sık sık güncelleştirmenizi öneririz.

Önkoşullar

  • Azure PowerShell modülünü yükleyin ve yapılandırın. Yayın öncesi modül gibi belirli bir Azure Batch modülünü yüklemek için bkz. PowerShell Galerisi.

  • Aboneliğinize bağlanmak için Connect-AzAccount cmdlet'ini çalıştırın (Azure Batch cmdlet'leri Azure Resource Manager modülünde gönderilir):

    Connect-AzAccount
    
  • Batch sağlayıcısı ad alanına kaydolun. Bu işlemi abonelik başına yalnızca bir kez gerçekleştirmeniz gerekir.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Batch hesaplarını ve anahtarlarını yönetme

Batch hesabı oluştur.

New-AzBatchAccount , belirtilen kaynak grubunda bir Batch hesabı oluşturur. Henüz bir kaynak grubunuz yoksa , New-AzResourceGroup cmdlet'ini çalıştırarak bir tane oluşturun. Konum parametresinde "Orta ABD" gibi Azure bölgelerinden birini belirtin. Örneğin:

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

Ardından kaynak grubunda bir Batch hesabı oluşturun. < hesap > için bir ad ve kaynak grubunuzun konumunu ve adını belirtin. Batch hesabının oluşturulması biraz zaman alabilir. Örneğin:

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

Uyarı

Batch hesabı adı, kaynak grubu için Azure bölgesine özel olmalı, 3 ile 24 karakter arasında olmalı ve yalnızca küçük harf ve sayı kullanmalıdır.

Hesap erişim anahtarlarını alma

Get-AzBatchAccountKeys , bir Azure Batch hesabıyla ilişkili erişim anahtarlarını gösterir. Örneğin, oluşturduğunuz hesabın birincil ve ikincil anahtarlarını almak için aşağıdakileri çalıştırın.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Yeni erişim anahtarı oluşturma

New-AzBatchAccountKey , bir Azure Batch hesabı için yeni bir birincil veya ikincil hesap anahtarı oluşturur. Örneğin, Batch hesabınız için yeni bir birincil anahtar oluşturmak için şunu yazın:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Uyarı

Yeni bir ikincil anahtar oluşturmak için KeyType parametresi için "İkincil" değerini belirtin. Birincil ve ikincil anahtarları ayrı ayrı yeniden oluşturmanız gerekir.

Batch hesabını silme

Remove-AzBatchAccount bir Batch hesabını siler. Örneğin:

Remove-AzBatchAccount -AccountName <account_name>

İstendiğinde hesabı kaldırmak istediğinizi onaylayın. Hesabı kaldırma işleminin tamamlanması biraz zaman alabilir.

BatchAccountContext nesnesi oluşturma

Paylaşılan anahtar kimlik doğrulamasını veya Microsoft Entra kimlik doğrulamasını kullanarak Batch kaynaklarını yönetmek için kimlik doğrulaması yapabilirsiniz. Batch PowerShell cmdlet'lerini kullanarak kimlik doğrulaması yapmak için önce hesap kimlik bilgilerinizi veya kimliğinizi depolamak için bir BatchAccountContext nesnesi oluşturun. BatchAccountContext nesnesini BatchContext parametresini kullanan cmdlet'lere geçirirsiniz.

Paylaşılan anahtar kimlik doğrulaması

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Uyarı

Varsayılan olarak, hesabın birincil anahtarı kimlik doğrulaması için kullanılır, ancak BatchAccountContext nesnenizin KeyInUse özelliğini değiştirerek kullanılacak anahtarı açıkça seçebilirsiniz: $context.KeyInUse = "Secondary".

Microsoft Entra kimlik doğrulama

$context = Get-AzBatchAccount -AccountName <account_name>

Batch kaynaklarını oluşturma ve değiştirme

Batch hesabı altında kaynak oluşturmak için New-AzBatchPool, New-AzBatchJob ve New-AzBatchTask gibi cmdlet'leri kullanın. Mevcut kaynakların özelliklerini güncelleştirmek için karşılık gelen Get- ve Set- cmdlet'leri ve Batch hesabı altındaki kaynakları kaldırmak için Remove- cmdlet'leri vardır.

Bu cmdlet'lerin birçoğu kullanılırken, BatchContext nesnesini geçirmenin yanı sıra, aşağıdaki örnekte gösterildiği gibi ayrıntılı kaynak ayarları içeren nesneler oluşturmanız veya geçirmeniz gerekir. Ek örnekler için her cmdlet için ayrıntılı yardım bölümüne bakın.

Batch havuzu oluşturun

Batch havuzu oluştururken veya güncelleştirirken bir yapılandırma belirtirsiniz. Havuzlar genellikle Azure Sanal Makineler Marketi'nde listelenen desteklenen Linux veya Windows VM görüntülerinden birini belirtmenize veya hazırladığınız özel bir görüntü sağlamanıza olanak tanıyan Sanal Makine Yapılandırması ile yapılandırılmalıdır. Cloud Services Yapılandırma havuzları yalnızca Windows işlem düğümleri sağlar ve tüm Batch özelliklerini desteklemez.

New-AzBatchPool'u çalıştırdığınızda, işletim sistemi ayarlarını bir PSVirtualMachineConfiguration veya PSCloudServiceConfiguration nesnesine geçirin. Örneğin, aşağıdaki kod parçacığı, Ubuntu Server 20.04-LTS ile görüntülenmiş sanal makine yapılandırmasında Standard_A1 boyutunda işlem düğümlerine sahip bir Batch havuzu oluşturur. Burada VirtualMachineConfiguration parametresi $configuration değişkenini PSVirtualMachineConfiguration nesnesi olarak belirtir. BatchContext parametresi, BatchAccountContext nesnesi olarak önceden tanımlanmış bir değişken $context belirtir.

$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

Yeni havuzdaki işlem düğümlerinin hedef sayısı otomatik ölçeklendirme formülüyle hesaplanır. Bu durumda formül, havuzdaki işlem düğümlerinin sayısının en fazla 4 olduğunu gösteren $TargetDedicated=4'tür.

Havuzları, işleri, görevleri ve diğer ayrıntıları sorgula

Batch hesabı altında oluşturulan varlıkları sorgulamak için Get-AzBatchPool, Get-AzBatchJob ve Get-AzBatchTask gibi cmdlet'leri kullanın.

Veri sorgulama işlemi

Örnek olarak, havuzlarınızı bulmak için Get-AzBatchPools kullanın. BatchAccountContext nesnesini zaten $context depoladığınız varsayıldığında, bu sorgu varsayılan olarak hesabınızın altındaki tüm havuzlar için sorgular:

Get-AzBatchPool -BatchContext $context

OData filtresi kullanma

Yalnızca ilgilendiğiniz nesneleri bulmak için Filter parametresini kullanarak bir OData filtresi sağlayabilirsiniz. Örneğin, "myPool" ile başlayan kimliklere sahip tüm havuzları bulabilirsiniz:

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Bu yöntem, yerel işlem hattında "Where-Object" kullanmak kadar esnek değildir. Ancak sorgu doğrudan Batch servisine gönderilir, böylece tüm filtrelemeler sunucu tarafında gerçekleşir ve İnternet bant genişliği tasarruf edilir.

Id parametresini kullanma

OData filtresinin alternatifi , Id parametresini kullanmaktır. "myPool" kimliğine sahip belirli bir havuzu sorgulamak için:

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

Id parametresi yalnızca tam kimlik aramasını destekler; joker karakterler veya OData stili filtreler değildir.

MaxCount parametresini kullanma

Varsayılan olarak, her cmdlet en fazla 1000 nesne döndürür. Bu sınıra ulaşırsanız, daha az nesne geri getirmek için filtrenizi daraltın veya MaxCount parametresini kullanarak açıkça bir maksimum değer ayarlayın. Örneğin:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Üst sınırı kaldırmak için MaxCount değerini 0 veya daha az olarak ayarlayın.

PowerShell işlem hattını kullanma

Batch cmdlet'leri, cmdlet'ler arasında veri göndermek için PowerShell işlem hattını kullanır. Bu, parametre belirtmeyle aynı etkiye sahiptir, ancak birden çok varlıkla çalışmayı kolaylaştırır.

Örneğin, hesabınızın altındaki tüm görevleri bulun ve görüntüleyin:

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

Havuzdaki her işlem düğümünü yeniden başlatın (yeniden başlatın):

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

Uygulama paketi yönetimi

Uygulama paketleri , havuzlarınızdaki işlem düğümlerine uygulama dağıtmak için basitleştirilmiş bir yol sağlar. Batch PowerShell cmdlet'leri ile Batch hesabınızda uygulama paketlerini karşıya yükleyip yönetebilir ve paket sürümlerini işlem düğümlerine dağıtabilirsiniz.

Önemli

Uygulama paketlerini kullanmak için Batch hesabınıza bir Azure Depolama hesabı bağlamanız gerekir.

Uygulama oluşturma:

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

Uygulama paketi ekleme:

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

Uygulama için varsayılan sürümü ayarlayın:

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

Uygulamanın paketlerini listeleme

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

$application.ApplicationPackages

Uygulama paketini silme

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

Uygulamayı silme

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

Uyarı

Uygulamayı silmeden önce uygulamanın tüm uygulama paketi sürümlerini silmeniz gerekir. Şu anda uygulama paketleri olan bir uygulamayı silmeye çalışırsanız 'Çakışma' hatası alırsınız.

Uygulama paketi dağıtma

Havuz oluştururken dağıtım için bir veya daha fazla uygulama paketi belirtebilirsiniz. Havuz oluşturma zamanında bir paket belirttiğinizde, düğüm havuza katıldığında her düğüme dağıtılır. Bir düğüm yeniden başlatıldığında veya yeniden görüntülendiğinde paketler de dağıtılır.

Bir havuz oluştururken, uygulama paketini havuzun düğümlerine dağıtmak için -ApplicationPackageReference seçeneğini, düğümler havuza katıldıkça belirtin. İlk olarak bir PSApplicationPackageReference nesnesi oluşturun ve havuzun işlem düğümlerine dağıtmak istediğiniz uygulama kimliği ve paket sürümüyle yapılandırın:

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Şimdi havuzu oluşturun ve ApplicationPackageReferences seçeneği için bağımsız değişken olarak paket referans nesnesini belirtin.

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

Batch uygulama paketleriyle işlem düğümlerine uygulama dağıtma bölümünde uygulama paketleri hakkında daha fazla bilgi bulabilirsiniz.

Havuzun uygulama paketlerini güncelleştirme

Mevcut bir havuza atanan uygulamaları güncelleştirmek için önce istenen özelliklere (uygulama kimliği ve paket sürümü) sahip bir PSApplicationPackageReference nesnesi oluşturun:

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Ardından Batch'ten havuzu alın, mevcut paketleri temizleyin, yeni paket başvurusunu ekleyin ve Batch hizmetini yeni havuz ayarlarıyla güncelleştirin:

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

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Şimdi Batch hizmetinde havuzun özelliklerini güncelleştirdiniz. Ancak yeni uygulama paketini havuzdaki işlem düğümlerine dağıtmak için bu düğümleri yeniden başlatmanız veya yeniden oluşturmanız gerekir. Havuzdaki her düğümü şu komutla yeniden başlatabilirsiniz:

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

Tavsiye

Bir havuzdaki işlem düğümlerine birden çok uygulama paketi dağıtabilirsiniz. Şu anda dağıtılan paketleri değiştirmek yerine bir uygulama paketi eklemek isterseniz yukarıdaki satırı atlayın $pool.ApplicationPackageReferences.Clear() .

Sonraki adımlar