Gérer les ressources Batch avec les applets de commande PowerShellManage Batch resources with PowerShell cmdlets

Avec les cmdlets Azure Batch PowerShell, vous pouvez effectuer la plupart des tâches réalisées avec les API Batch, le Portail Azure et l’interface de ligne de commande Azure, et en écrire les scripts.With the Azure Batch PowerShell cmdlets, you can perform and script many of the tasks you carry out with the Batch APIs, the Azure portal, and the Azure Command-Line Interface (CLI). Il s’agit d’une présentation rapide des applets de commande que vous pouvez utiliser pour gérer vos comptes Batch et travailler avec des ressources Batch telles que les pools, les travaux et les tâches.This is a quick introduction to the cmdlets you can use to manage your Batch accounts and work with your Batch resources such as pools, jobs, and tasks.

Pour obtenir une liste complète des applets de commande Batch et la syntaxe détaillée des applets de commande, consultez Référence d’applet de commande Azure Batch.For a complete list of Batch cmdlets and detailed cmdlet syntax, see the Azure Batch cmdlet reference.

Cet article est basé sur les applets de commande du module Az Batch 1.0.0.This article is based on cmdlets in Az Batch module 1.0.0. Nous vous recommandons de mettre à jour vos modules Azure PowerShell fréquemment pour tirer parti des améliorations et des mises à jour de service.We recommend that you update your Azure PowerShell modules frequently to take advantage of service updates and enhancements.

PrérequisPrerequisites

  • Installez and configurez le module Azure PowerShell.Install and configure the Azure PowerShell module. Pour installer un module Azure Batch spécifique, comme un module en pré-mise en production, consultez PowerShell Gallery.To install a specific Azure Batch module, such as a pre-release module, see the PowerShell Gallery.

  • Exécutez l’applet de commande Connect-AzAccount pour vous connecter à votre abonnement (les applets de commande Azure Batch font partie du module Azure Resource Manager) :Run the Connect-AzAccount cmdlet to connect to your subscription (the Azure Batch cmdlets ship in the Azure Resource Manager module):

    Connect-AzAccount
    
  • Inscrivez-vous dans l’espace de noms de fournisseur Batch.Register with the Batch provider namespace. Vous devez effectuer cette opération une fois par abonnement uniquement.You only need to perform this operation once per subscription.

    Register-AzResourceProvider -ProviderNamespace Microsoft.Batch
    

Gestion des clés et des comptes BatchManage Batch accounts and keys

Création d’un compte BatchCreate a Batch account

New-AzBatchAccount crée un compte Batch dans un groupe de ressources spécifié.New-AzBatchAccount creates a Batch account in a specified resource group. Si vous ne disposez pas d’un groupe de ressources, créez-en un en exécutant l’applet de commande New-AzResourceGroup.If you don't already have a resource group, create one by running the New-AzResourceGroup cmdlet. Spécifiez une des régions Azure dans le paramètre Emplacement, « USA Centre » par exemple.Specify one of the Azure regions in the Location parameter, such as "Central US". Par exemple :For example:

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

Ensuite, créez un compte Batch dans le groupe de ressources.Then, create a Batch account in the resource group. Spécifiez un nom pour le compte dans <nom_compte>, puis l’emplacement et le nom de votre groupe de ressources.Specify a name for the account in <account_name>, and the location and name of your resource group. La procédure de création du compte Batch peut prendre un certain temps.Creating the Batch account can take some time to complete. Par exemple :For example:

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

Nota

Le nom du compte Batch doit être unique dans la région Azure du groupe de ressources, contenir entre 3 et 24 caractères, et utiliser des minuscules et des chiffres uniquement.The Batch account name must be unique to the Azure region for the resource group, contain between 3 and 24 characters, and use lowercase letters and numbers only.

Obtenir les clés d'accès au compteGet account access keys

Get-AzBatchAccountKeys affiche les clés d’accès associées à un compte Azure Batch.Get-AzBatchAccountKeys shows the access keys associated with an Azure Batch account. Par exemple, exécutez la commande suivante pour obtenir les clés primaires et secondaires du compte que vous avez créé.For example, run the following to get the primary and secondary keys of the account you created.

$Account = Get-AzBatchAccountKeys –AccountName <account_name>

$Account.PrimaryAccountKey

$Account.SecondaryAccountKey

Générer une nouvelle clé d'accèsGenerate a new access key

New-AzBatchAccountKey génère une nouvelle clé de compte primaire ou secondaire pour un compte Azure Batch.New-AzBatchAccountKey generates a new primary or secondary account key for an Azure Batch account. Par exemple, pour générer une nouvelle clé primaire pour votre compte Batch, tapez :For example, to generate a new primary key for your Batch account, type:

New-AzBatchAccountKey -AccountName <account_name> -KeyType Primary

Nota

Pour générer une nouvelle clé secondaire, spécifiez « Secondary » pour le paramètre KeyType .To generate a new secondary key, specify "Secondary" for the KeyType parameter. Vous devez régénérer les clés primaires et secondaires séparément.You have to regenerate the primary and secondary keys separately.

Suppression d’un compte BatchDelete a Batch account

Remove-AzBatchAccount supprime un compte Batch.Remove-AzBatchAccount deletes a Batch account. Par exemple :For example:

Remove-AzBatchAccount -AccountName <account_name>

Quand vous y êtes invité, confirmez que vous voulez supprimer le compte.When prompted, confirm you want to remove the account. La suppression du compte peut prendre un certain temps.Account removal can take some time to complete.

Créer un objet BatchAccountContextCreate a BatchAccountContext object

Vous pouvez vous authentifier pour gérer les ressources Batch à l’aide de l’authentification de clé partagée ou de l’authentification Azure Active Directory.You can authenticate to manage Batch resources using either shared key authentication or Azure Active Directory authentication. Pour vous authentifier à l’aide des cmdlets Batch PowerShell, commencez par créer un objet BatchAccountContext pour stocker vos informations d’identification de compte ou votre identité.To authenticate using the Batch PowerShell cmdlets, first create a BatchAccountContext object to store your account credentials or identity. Vous passez l’objet BatchAccountContext dans les applets de commande utilisant le paramètre BatchContext .You pass the BatchAccountContext object into cmdlets that use the BatchContext parameter.

Authentification par clé partagéeShared key authentication

$context = Get-AzBatchAccountKeys -AccountName <account_name>

Nota

Par défaut, la clé primaire du compte est utilisée pour l’authentification, mais vous pouvez sélectionner explicitement la clé à utiliser en modifiant la propriété KeyInUse de votre objet BatchAccountContext : $context.KeyInUse = "Secondary".By default, the account's primary key is used for authentication, but you can explicitly select the key to use by changing your BatchAccountContext object’s KeyInUse property: $context.KeyInUse = "Secondary".

Authentification Azure Active DirectoryAzure Active Directory authentication

$context = Get-AzBatchAccount -AccountName <account_name>

Créer et modifier les ressources BatchCreate and modify Batch resources

Utilisez les applets de commande telles que New-AzBatchPool, New-AzBatchJob et New-AzBatchTask pour créer des ressources sous un compte Batch.Use cmdlets such as New-AzBatchPool, New-AzBatchJob, and New-AzBatchTask to create resources under a Batch account. Il existe des applets de commande Get- et Set- correspondantes pour mettre à jour les propriétés des ressources existantes, et des applets de commande Remove- pour supprimer des ressources sous un compte Batch.There are corresponding Get- and Set- cmdlets to update the properties of existing resources, and Remove- cmdlets to remove resources under a Batch account.

Si vous utilisez plusieurs de ces applets de commande, en plus de transmettre un objet BatchContext, vous devez créer ou transmettre les objets qui contiennent des paramètres de ressources détaillés, comme illustré dans l’exemple suivant.When using many of these cmdlets, in addition to passing a BatchContext object, you need to create or pass objects that contain detailed resource settings, as shown in the following example. Pour obtenir d’autres exemples, consultez l’aide détaillée de chaque applet de commande.See the detailed help for each cmdlet for additional examples.

Créer un pool BatchCreate a Batch pool

Lors de la création ou de la mise à jour d’un pool Batch, sélectionnez une configuration de services cloud ou une configuration de machine virtuelle correspondant au système d’exploitation dans les nœuds de calcul (voir Nœuds et pools).When creating or updating a Batch pool, you select either the cloud services configuration or the virtual machine configuration for the operating system on the compute nodes (see Nodes and pools). En spécifiant la configuration des services cloud, vos nœuds de calcul sont mis en image avec l’une des versions de système d’exploitation invité d’Azure.If you specify the cloud services configuration, your compute nodes are imaged with one of the Azure Guest OS releases. En spécifiant la configuration de la machine virtuelle, vous pouvez spécifier l’image d’une des machines virtuelles Linux ou Windows qui figurent dans la Place de marché de machines virtuelles Azure, ou bien fournir une image personnalisée que vous aurez préparée.If you specify the virtual machine configuration, you can either specify one of the supported Linux or Windows VM images listed in the Azure Virtual Machines Marketplace, or provide a custom image that you have prepared.

Si vous exécutez New-AzBatchPool, passez les paramètres du système d’exploitation dans un objet PSCloudServiceConfiguration ou PSVirtualMachineConfiguration.When you run New-AzBatchPool, pass the operating system settings in a PSCloudServiceConfiguration or PSVirtualMachineConfiguration object. Par exemple, l’extrait de code suivant crée un pool Batch avec des nœuds de calcul de taille Standard_A1 dans la configuration de machine virtuelle, dont l’image est créée avec Ubuntu Server 18.04-LTS.For example, the following snippet creates a Batch pool with size Standard_A1 compute nodes in the virtual machine configuration, imaged with Ubuntu Server 18.04-LTS. Ici, le paramètre VirtualMachineConfiguration spécifie la variable $configuration comme objet PSVirtualMachineConfiguration.Here, the VirtualMachineConfiguration parameter specifies the $configuration variable as the PSVirtualMachineConfiguration object. Le paramètre BatchContext spécifie une variable $context définie au préalable en tant qu’objet BatchAccountContext.The BatchContext parameter specifies a previously defined variable $context as the BatchAccountContext object.

$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

Le nombre cible de nœuds de calcul dans le nouveau pool est calculé à partir d’une formule de mise à l’échelle automatique.The target number of compute nodes in the new pool is calculated by an autoscaling formula. Dans ce cas, la formule est simplement $TargetDedicated = 4, ce qui indique que le nombre de nœuds de calcul dans le pool est de 4 au maximum.In this case, the formula is simply $TargetDedicated=4, indicating the number of compute nodes in the pool is 4 at most.

Requête relative aux pools, aux travaux, aux tâches et autres détailsQuery for pools, jobs, tasks, and other details

Utilisez les applets de commande telles que Get-AzBatchPool, Get-AzBatchJob et Get-AzBatchTask pour interroger les entités créées sous un compte Batch.Use cmdlets such as Get-AzBatchPool, Get-AzBatchJob, and Get-AzBatchTask to query for entities created under a Batch account.

Interrogation des donnéesQuery for data

Par exemple, utilisez Get-AzBatchPools pour rechercher vos pools.As an example, use Get-AzBatchPools to find your pools. Par défaut, cette demande interroge tous les pools sous votre compte, en supposant que vous avez déjà stocké l’objet BatchAccountContext dans $context:By default this queries for all pools under your account, assuming you already stored the BatchAccountContext object in $context:

Get-AzBatchPool -BatchContext $context

Utilisation d’un filtre ODataUse an OData filter

Vous pouvez fournir un filtre OData à l'aide du paramètre Filter pour rechercher uniquement les objets qui vous intéressent.You can supply an OData filter using the Filter parameter to find only the objects you’re interested in. Par exemple, vous pouvez rechercher tous les pools dont l’identificateur commence par « myPool » :For example, you can find all pools with IDs starting with “myPool”:

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

Get-AzBatchPool -Filter $filter -BatchContext $context

Cette méthode n'est pas aussi flexible que l'utilisation de « Where-Object » dans un pipeline local.This method is not as flexible as using “Where-Object” in a local pipeline. Toutefois, la requête est envoyée au service Batch directement pour que tout le filtrage se produise côté serveur et économise ainsi la bande passante Internet.However, the query gets sent to the Batch service directly so that all filtering happens on the server side, saving Internet bandwidth.

Utilisation du paramètre IdUse the Id parameter

Une alternative au filtre OData consiste à utiliser le paramètre Id .An alternative to an OData filter is to use the Id parameter. Pour rechercher un pool spécifique présentant l’identificateur « myPool » :To query for a specific pool with id "myPool":

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

Le paramètre Id prend uniquement en charge la recherche de l’identificateur complet. Il ne prend pas en charge les caractères génériques ni les filtres de style OData.The Id parameter supports only full-ID search; not wildcards or OData-style filters.

Utilisation du paramètre MaxCountUse the MaxCount parameter

Par défaut, chaque applet de commande retourne un maximum de 1 000 objets.By default, each cmdlet returns a maximum of 1000 objects. Si vous atteignez cette limite, affinez votre filtration pour limiter le nombre d’objets retournés, ou définissez explicitement une utilisation maximale à l’aide du paramètre MaxCount .If you reach this limit, either refine your filter to bring back fewer objects, or explicitly set a maximum using the MaxCount parameter. Par exemple :For example:

Get-AzBatchTask -MaxCount 2500 -BatchContext $context

Pour supprimer la limite supérieure, définissez MaxCount sur 0 ou une valeur inférieure.To remove the upper bound, set MaxCount to 0 or less.

Utilisation du pipeline PowerShellUse the PowerShell pipeline

Les applets de commande Batch utilisent le pipeline PowerShell pour envoyer des données vers les autres applets de commande.Batch cmdlets use the PowerShell pipeline to send data between cmdlets. Cela a le même effet que la spécification d’un paramètre, mais permet d’utiliser plus facilement plusieurs entités.This has the same effect as specifying a parameter, but makes working with multiple entities easier.

Par exemple, recherchez et affichez toutes les tâches sous votre compte :For example, find and display all tasks under your account:

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

Redémarrez chaque nœud de calcul dans un pool :Restart (reboot) every compute node in a pool:

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

Gestion des packages d’applicationApplication package management

Les packages d’application permettent de déployer facilement des applications vers les nœuds de calcul dans vos pools.Application packages provide a simplified way to deploy applications to the compute nodes in your pools. Grâce aux applets de commande PowerShell pour Batch, vous pouvez télécharger et gérer des packages d’application dans votre compte Batch, et déployer des versions de package sur des nœuds de calcul.With the Batch PowerShell cmdlets, you can upload and manage application packages in your Batch account, and deploy package versions to compute nodes.

Créez une application :Create an application:

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

Ajoutez un package d’application :Add an application package:

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

Définissez la version par défaut pour l’application :Set the default version for the application:

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

Répertorier les packages d’une applicationList an application's packages

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

$application.ApplicationPackages

Supprimer un package d’applicationDelete an application package

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

Supprimer une applicationDelete an application

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

Nota

Vous devez supprimer toutes les versions de packages d’application d’une application avant de supprimer l’application.You must delete all of an application's application package versions before you delete the application. Vous recevrez une erreur « Conflit » si vous essayez de supprimer une application qui possède des packages d’applications.You will receive a 'Conflict' error if you try to delete an application that currently has application packages.

Déployer un package d’applicationDeploy an application package

Vous pouvez spécifier un ou plusieurs packages d’application pour le déploiement lorsque vous créez un pool.You can specify one or more application packages for deployment when you create a pool. Lorsque vous spécifiez un package lors de la création du pool, il est déployé sur chaque nœud lorsque le nœud rejoint le pool.When you specify a package at pool creation time, it is deployed to each node as the node joins pool. Les packages sont également déployés lorsqu’un nœud est redémarré ou réinitialisé.Packages are also deployed when a node is rebooted or reimaged.

Spécifiez l’option -ApplicationPackageReference lors de la création d’un pool pour déployer un package d’application sur les nœuds du pool dès qu’ils rejoignent le pool.Specify the -ApplicationPackageReference option when creating a pool to deploy an application package to the pool's nodes as they join the pool. Commencez par créer un objet PSApplicationPackageReference, puis configurez-le avec l’ID d’application et la version du package que vous souhaitez déployer sur les nœuds de calcul du pool :First, create a PSApplicationPackageReference object, and configure it with the application ID and package version you want to deploy to the pool's compute nodes:

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "1.0"

Créez maintenant la configuration et le pool.Now create the configuration and pool. Cet exemple utilise le paramètre CloudServiceConfiguration avec un objet de type PSCloudServiceConfiguration initialisé dans $configuration, qui définit OSFamily sur 6 pour « Windows Server 2019 » et OSVersion sur *.This example uses the CloudServiceConfiguration parameter with a PSCloudServiceConfiguration type object initialized in $configuration, which sets the OSFamily to 6 for 'Windows Server 2019' and OSVersion to *. Spécifiez l’objet de référence du package comme argument dans l’option ApplicationPackageReferences :Specify the package reference object as the argument to the ApplicationPackageReferences option:

$configuration = New-Object -TypeName "Microsoft.Azure.Commands.Batch.Models.PSCloudServiceConfiguration" -ArgumentList @(6,"*")  # 6 = OSFamily 'Windows Server 2019'
New-AzBatchPool -Id "PoolWithAppPackage" -VirtualMachineSize "Small" -CloudServiceConfiguration $configuration -BatchContext $context -ApplicationPackageReferences $appPackageReference

Pour plus d’informations sur les packages d’applications, consultez Déployer des applications sur les nœuds avec des packages d’applications Batch.You can find more information on application packages in Deploy applications to compute nodes with Batch application packages.

Importante

Pour utiliser les packages d’application, vous devez commencer par lier un compte de stockage Azure à votre compte Batch.You must link an Azure Storage account to your Batch account to use application packages.

Mise à jour des packages d’applications d’un poolUpdate a pool's application packages

Pour mettre à jour les applications associées à un pool existant, commencez par créer un objet PSApplicationPackageReference avec les propriétés souhaitées (ID d’application et version de package) :To update the applications assigned to an existing pool, first create a PSApplicationPackageReference object with the desired properties (application ID and package version):

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

$appPackageReference.ApplicationId = "MyBatchApplication"

$appPackageReference.Version = "2.0"

Obtenez ensuite le pool dans Batch, effacez tous les packages existants, ajoutez notre nouvelle référence de package, puis mettez à jour le service Batch avec les nouveaux paramètres de pool :Next, get the pool from Batch, clear out any existing packages, add our new package reference, and update the Batch service with the new pool settings:

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

$pool.ApplicationPackageReferences.Clear()

$pool.ApplicationPackageReferences.Add($appPackageReference)

Set-AzBatchPool -BatchContext $context -Pool $pool

Vous avez mis à jour les propriétés du pool dans le service Batch.You've now updated the pool's properties in the Batch service. Pour déployer réellement le nouveau package d’application sur des nœuds de calcul dans le pool, vous devez redémarrer ou réinitialiser ces nœuds.To actually deploy the new application package to compute nodes in the pool, however, you must restart or reimage those nodes. Vous pouvez redémarrer tous les nœuds dans un pool avec la commande suivante :You can restart every node in a pool with this command:

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

Sugerencia

Vous pouvez déployer plusieurs packages d’application sur les nœuds de calcul dans un pool.You can deploy multiple application packages to the compute nodes in a pool. Si vous souhaitez ajouter un package d’application au lieu de remplacer les packages actuellement déployés, omettez la ligne $pool.ApplicationPackageReferences.Clear() ci-dessus.If you'd like to add an application package instead of replacing the currently deployed packages, omit the $pool.ApplicationPackageReferences.Clear() line above.

Étapes suivantesNext steps