JobManagerTask interface
La tâche du Gestionnaire de travaux est automatiquement démarrée lors de la création du travail. Le service Batch tente de planifier la tâche du Gestionnaire de travaux avant toute autre tâche du travail. Lors de la réduction d’un pool, le service Batch tente de conserver les nœuds dans lesquels les tâches du Gestionnaire de travaux s’exécutent aussi longtemps que possible (autrement dit, les nœuds de calcul exécutant des tâches « normales » sont supprimées avant que les nœuds de calcul n’exécutent les tâches du Gestionnaire de travaux). Lorsqu’une tâche du Gestionnaire de travaux échoue et doit être redémarrée, le système tente de le planifier en priorité la plus élevée. S’il n’existe aucun nœud de calcul inactif disponible, le système peut mettre fin à l’une des tâches en cours d’exécution dans le pool et le retourner à la file d’attente pour que la tâche du Gestionnaire de travaux redémarre. Notez qu’une tâche du Gestionnaire de travaux dans un travail n’a pas de priorité sur les tâches dans d’autres travaux. Parmi les travaux, seules les priorités au niveau du travail sont observées. Par exemple, si un gestionnaire de travaux dans une priorité 0 travail doit être redémarré, il ne déplace pas les tâches d’un travail prioritaire 1. Batch réessaye les tâches lorsqu’une opération de récupération est déclenchée sur un nœud. Les exemples d’opérations de récupération incluent (mais ne sont pas limités) lorsqu’un nœud non sain est redémarré ou qu’un nœud de calcul a disparu en raison d’une défaillance de l’hôte. Les nouvelles tentatives en raison d’opérations de récupération sont indépendantes et ne sont pas comptabilisées par rapport au maxTaskRetryCount. Même si maxTaskRetryCount est 0, une nouvelle tentative interne en raison d’une opération de récupération peut se produire. En raison de cela, toutes les tâches doivent être idempotentes. Cela signifie que les tâches doivent tolérer l’interruption et le redémarrage sans provoquer d’altération ou de doublon des données. La meilleure pratique pour les tâches longues consiste à utiliser une forme de point de contrôle.
Propriétés
| allow |
Indique si la tâche du Gestionnaire de travaux peut s’exécuter sur un nœud de calcul de faible priorité. La valeur par défaut est true. |
| application |
Liste des packages d’application que le service Batch déploie sur le nœud de calcul avant d’exécuter la ligne de commande. Les packages d’application sont téléchargés et déployés dans un répertoire partagé, et non dans le répertoire de travail des tâches. Par conséquent, si un package d’application référencé est déjà sur le nœud de calcul et qu’il est à jour, il n’est pas redéployé ; la copie existante sur le nœud de calcul est utilisée. Si un package d’application référencé ne peut pas être installé, par exemple parce que le package a été supprimé ou parce que le téléchargement a échoué, la tâche échoue. |
| authentication |
Paramètres d’un jeton d’authentification que la tâche peut utiliser pour effectuer des opérations de service Batch. Si cette propriété est définie, le service Batch fournit à la tâche un jeton d’authentification qui peut être utilisé pour authentifier les opérations de service Batch sans nécessiter de clé d’accès au compte. Le jeton est fourni via la variable d’environnement AZ_BATCH_AUTHENTICATION_TOKEN. Les opérations que la tâche peut effectuer à l’aide du jeton dépendent des paramètres. Par exemple, une tâche peut demander des autorisations de travail pour ajouter d’autres tâches au travail, ou vérifier l’état du travail ou d’autres tâches sous le travail. |
| command |
Ligne de commande de la tâche du Gestionnaire de travaux. La ligne de commande ne s’exécute pas sous un interpréteur de commandes et ne peut donc pas tirer parti des fonctionnalités de l’interpréteur de commandes telles que l’extension de variable d’environnement. Si vous souhaitez tirer parti de ces fonctionnalités, vous devez appeler l’interpréteur de commandes dans la ligne de commande, par exemple en utilisant « cmd /c MyCommand » dans Windows ou « /bin/sh -c MyCommand » dans Linux. Si la ligne de commande fait référence à des chemins de fichier, elle doit utiliser un chemin relatif (par rapport au répertoire de travail de tâche) ou utiliser la variable d’environnement fournie par Batch (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables). |
| constraints | Contraintes qui s’appliquent à la tâche du Gestionnaire de travaux. |
| container |
Paramètres du conteneur sous lequel la tâche du Gestionnaire de travaux s’exécute. Si le pool qui exécutera cette tâche a un conteneurConfiguration défini, il doit également être défini. Si le pool qui exécutera cette tâche n’a pas de conteneurConfiguration défini, il ne doit pas être défini. Lorsque cela est spécifié, tous les répertoires sont récursifs sous le AZ_BATCH_NODE_ROOT_DIR (la racine des répertoires Azure Batch sur le nœud) sont mappés dans le conteneur, toutes les variables d’environnement de tâche sont mappées au conteneur et la ligne de commande Task est exécutée dans le conteneur. Les fichiers produits dans le conteneur en dehors de AZ_BATCH_NODE_ROOT_DIR peuvent ne pas être répercutés sur le disque hôte, ce qui signifie que les API de fichier Batch ne pourront pas accéder à ces fichiers. |
| display |
Nom complet de la tâche du Gestionnaire de travaux. Il n’a pas besoin d’être unique et peut contenir des caractères Unicode pouvant atteindre une longueur maximale de 1024. |
| environment |
Liste des paramètres de variable d’environnement pour la tâche du Gestionnaire de travaux. |
| id | Chaîne qui identifie de façon unique la tâche du Gestionnaire de travaux dans le travail. L’ID peut contenir n’importe quelle combinaison de caractères alphanumériques, y compris des traits d’union et des traits de soulignement et ne peut pas contenir plus de 64 caractères. |
| kill |
Indique si l’achèvement de la tâche du Gestionnaire de travaux signifie l’achèvement de l’intégralité du travail. Si la valeur est true, lorsque la tâche du Gestionnaire de travaux est terminée, le service Batch marque le travail comme terminé. Si des tâches sont toujours en cours d’exécution pour l’instant (autres que la version du travail), ces tâches sont arrêtées. Si la valeur est false, l’achèvement de la tâche du Gestionnaire de travaux n’affecte pas l’état du travail. Dans ce cas, vous devez utiliser l’attribut onAllTasksComplete pour terminer le travail, ou avoir un client ou un utilisateur terminant explicitement le travail. Par exemple, si le Gestionnaire de travaux crée un ensemble de tâches, mais ne prend pas de rôle supplémentaire dans son exécution. La valeur par défaut est true. Si vous utilisez les attributs onAllTasksComplete et onTaskFailure pour contrôler la durée de vie du travail et que vous utilisez la tâche du Gestionnaire de travaux uniquement pour créer les tâches pour le travail (pas pour surveiller la progression), il est important de définir killJobOnCompletion sur false. |
| output |
Liste des fichiers que le service Batch charge à partir du nœud de calcul après avoir exécuté la ligne de commande. Pour les tâches multi-instances, les fichiers sont chargés uniquement à partir du nœud de calcul sur lequel la tâche principale est exécutée. |
| required |
Nombre d’emplacements de planification nécessaires à l’exécution de la tâche. La valeur par défaut est 1. Une tâche peut uniquement être planifiée pour s’exécuter sur un nœud de calcul si le nœud dispose de suffisamment d’emplacements de planification gratuits disponibles. Pour les tâches multi-instances, il doit s’agir de 1. |
| resource |
Liste des fichiers que le service Batch télécharge sur le nœud de calcul avant d’exécuter la ligne de commande. Les fichiers répertoriés sous cet élément se trouvent dans le répertoire de travail de la tâche. Il existe une taille maximale pour la liste des fichiers de ressources. Lorsque la taille maximale est dépassée, la requête échoue et le code d’erreur de réponse est RequestEntityTooLarge. Si cela se produit, la collection de ResourceFiles doit être réduite en taille. Pour ce faire, vous pouvez utiliser des fichiers .zip, des packages d’application ou des conteneurs Docker. |
| run |
Indique si la tâche du Gestionnaire de travaux nécessite une utilisation exclusive du nœud de calcul où elle s’exécute. Si la valeur est true, aucune autre tâche ne s’exécute sur le même nœud tant que le Gestionnaire de travaux est en cours d’exécution. Si la valeur est false, d’autres tâches peuvent s’exécuter simultanément avec le Gestionnaire de travaux sur un nœud de calcul. La tâche du Gestionnaire de travaux compte normalement par rapport à la limite de tâches simultanées du nœud de calcul. Cela n’est donc pertinent que si le nœud de calcul autorise plusieurs tâches simultanées. La valeur par défaut est true. |
| user |
Identité de l’utilisateur sous laquelle la tâche du Gestionnaire de travaux s’exécute. Si elle est omise, la tâche s’exécute en tant qu’utilisateur non administratif unique à la tâche. |
Détails de la propriété
allowLowPriorityNode
Indique si la tâche du Gestionnaire de travaux peut s’exécuter sur un nœud de calcul de faible priorité. La valeur par défaut est true.
allowLowPriorityNode?: boolean
Valeur de propriété
boolean
applicationPackageReferences
Liste des packages d’application que le service Batch déploie sur le nœud de calcul avant d’exécuter la ligne de commande. Les packages d’application sont téléchargés et déployés dans un répertoire partagé, et non dans le répertoire de travail des tâches. Par conséquent, si un package d’application référencé est déjà sur le nœud de calcul et qu’il est à jour, il n’est pas redéployé ; la copie existante sur le nœud de calcul est utilisée. Si un package d’application référencé ne peut pas être installé, par exemple parce que le package a été supprimé ou parce que le téléchargement a échoué, la tâche échoue.
applicationPackageReferences?: ApplicationPackageReference[]
Valeur de propriété
authenticationTokenSettings
Paramètres d’un jeton d’authentification que la tâche peut utiliser pour effectuer des opérations de service Batch. Si cette propriété est définie, le service Batch fournit à la tâche un jeton d’authentification qui peut être utilisé pour authentifier les opérations de service Batch sans nécessiter de clé d’accès au compte. Le jeton est fourni via la variable d’environnement AZ_BATCH_AUTHENTICATION_TOKEN. Les opérations que la tâche peut effectuer à l’aide du jeton dépendent des paramètres. Par exemple, une tâche peut demander des autorisations de travail pour ajouter d’autres tâches au travail, ou vérifier l’état du travail ou d’autres tâches sous le travail.
authenticationTokenSettings?: AuthenticationTokenSettings
Valeur de propriété
commandLine
Ligne de commande de la tâche du Gestionnaire de travaux. La ligne de commande ne s’exécute pas sous un interpréteur de commandes et ne peut donc pas tirer parti des fonctionnalités de l’interpréteur de commandes telles que l’extension de variable d’environnement. Si vous souhaitez tirer parti de ces fonctionnalités, vous devez appeler l’interpréteur de commandes dans la ligne de commande, par exemple en utilisant « cmd /c MyCommand » dans Windows ou « /bin/sh -c MyCommand » dans Linux. Si la ligne de commande fait référence à des chemins de fichier, elle doit utiliser un chemin relatif (par rapport au répertoire de travail de tâche) ou utiliser la variable d’environnement fournie par Batch (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables).
commandLine: string
Valeur de propriété
string
constraints
Contraintes qui s’appliquent à la tâche du Gestionnaire de travaux.
constraints?: TaskConstraints
Valeur de propriété
containerSettings
Paramètres du conteneur sous lequel la tâche du Gestionnaire de travaux s’exécute. Si le pool qui exécutera cette tâche a un conteneurConfiguration défini, il doit également être défini. Si le pool qui exécutera cette tâche n’a pas de conteneurConfiguration défini, il ne doit pas être défini. Lorsque cela est spécifié, tous les répertoires sont récursifs sous le AZ_BATCH_NODE_ROOT_DIR (la racine des répertoires Azure Batch sur le nœud) sont mappés dans le conteneur, toutes les variables d’environnement de tâche sont mappées au conteneur et la ligne de commande Task est exécutée dans le conteneur. Les fichiers produits dans le conteneur en dehors de AZ_BATCH_NODE_ROOT_DIR peuvent ne pas être répercutés sur le disque hôte, ce qui signifie que les API de fichier Batch ne pourront pas accéder à ces fichiers.
containerSettings?: TaskContainerSettings
Valeur de propriété
displayName
Nom complet de la tâche du Gestionnaire de travaux. Il n’a pas besoin d’être unique et peut contenir des caractères Unicode pouvant atteindre une longueur maximale de 1024.
displayName?: string
Valeur de propriété
string
environmentSettings
Liste des paramètres de variable d’environnement pour la tâche du Gestionnaire de travaux.
environmentSettings?: EnvironmentSetting[]
Valeur de propriété
id
Chaîne qui identifie de façon unique la tâche du Gestionnaire de travaux dans le travail. L’ID peut contenir n’importe quelle combinaison de caractères alphanumériques, y compris des traits d’union et des traits de soulignement et ne peut pas contenir plus de 64 caractères.
id: string
Valeur de propriété
string
killJobOnCompletion
Indique si l’achèvement de la tâche du Gestionnaire de travaux signifie l’achèvement de l’intégralité du travail. Si la valeur est true, lorsque la tâche du Gestionnaire de travaux est terminée, le service Batch marque le travail comme terminé. Si des tâches sont toujours en cours d’exécution pour l’instant (autres que la version du travail), ces tâches sont arrêtées. Si la valeur est false, l’achèvement de la tâche du Gestionnaire de travaux n’affecte pas l’état du travail. Dans ce cas, vous devez utiliser l’attribut onAllTasksComplete pour terminer le travail, ou avoir un client ou un utilisateur terminant explicitement le travail. Par exemple, si le Gestionnaire de travaux crée un ensemble de tâches, mais ne prend pas de rôle supplémentaire dans son exécution. La valeur par défaut est true. Si vous utilisez les attributs onAllTasksComplete et onTaskFailure pour contrôler la durée de vie du travail et que vous utilisez la tâche du Gestionnaire de travaux uniquement pour créer les tâches pour le travail (pas pour surveiller la progression), il est important de définir killJobOnCompletion sur false.
killJobOnCompletion?: boolean
Valeur de propriété
boolean
outputFiles
Liste des fichiers que le service Batch charge à partir du nœud de calcul après avoir exécuté la ligne de commande. Pour les tâches multi-instances, les fichiers sont chargés uniquement à partir du nœud de calcul sur lequel la tâche principale est exécutée.
outputFiles?: OutputFile[]
Valeur de propriété
requiredSlots
Nombre d’emplacements de planification nécessaires à l’exécution de la tâche. La valeur par défaut est 1. Une tâche peut uniquement être planifiée pour s’exécuter sur un nœud de calcul si le nœud dispose de suffisamment d’emplacements de planification gratuits disponibles. Pour les tâches multi-instances, il doit s’agir de 1.
requiredSlots?: number
Valeur de propriété
number
resourceFiles
Liste des fichiers que le service Batch télécharge sur le nœud de calcul avant d’exécuter la ligne de commande. Les fichiers répertoriés sous cet élément se trouvent dans le répertoire de travail de la tâche. Il existe une taille maximale pour la liste des fichiers de ressources. Lorsque la taille maximale est dépassée, la requête échoue et le code d’erreur de réponse est RequestEntityTooLarge. Si cela se produit, la collection de ResourceFiles doit être réduite en taille. Pour ce faire, vous pouvez utiliser des fichiers .zip, des packages d’application ou des conteneurs Docker.
resourceFiles?: ResourceFile[]
Valeur de propriété
runExclusive
Indique si la tâche du Gestionnaire de travaux nécessite une utilisation exclusive du nœud de calcul où elle s’exécute. Si la valeur est true, aucune autre tâche ne s’exécute sur le même nœud tant que le Gestionnaire de travaux est en cours d’exécution. Si la valeur est false, d’autres tâches peuvent s’exécuter simultanément avec le Gestionnaire de travaux sur un nœud de calcul. La tâche du Gestionnaire de travaux compte normalement par rapport à la limite de tâches simultanées du nœud de calcul. Cela n’est donc pertinent que si le nœud de calcul autorise plusieurs tâches simultanées. La valeur par défaut est true.
runExclusive?: boolean
Valeur de propriété
boolean
userIdentity
Identité de l’utilisateur sous laquelle la tâche du Gestionnaire de travaux s’exécute. Si elle est omise, la tâche s’exécute en tant qu’utilisateur non administratif unique à la tâche.
userIdentity?: UserIdentity