Provisionner des agents pour les groupes de déploiement

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Les groupes de déploiement permettent de définir facilement des groupes logiques de machines cibles à déployer et d’installer l’agent nécessaire sur chaque machine. Cet article explique comment créer un groupe de déploiement, puis comment installer et provisionner l’agent sur chaque machine virtuelle ou physique de votre groupe de déploiement.

Vous pouvez installer l’agent de l’une des façons suivantes :

Pour plus d’informations sur les agents et les pipelines, consultez :

Exécuter le script d’installation sur les serveurs cibles

  1. Sous l’onglet Groupes de déploiement d’Azure Pipelines, choisissez +Nouveau pour créer un groupe.

  2. Entrez un nom pour le groupe et éventuellement une description, puis choisissez Créer.

  3. Dans la section Inscrire des machines à l’aide de la ligne de commande dans la page suivante, sélectionnez le système d’exploitation des machines cibles.

  4. Choisissez Utiliser un jeton d’accès personnel dans le script pour l’authentification. Plus d’informations

  5. Choisissez Copier le script dans le Presse-papiers.

  6. Connectez-vous tour à tour à chaque machine cible à l’aide du compte doté des autorisations appropriées, puis :

    • Ouvrez une invite de commandes PowerShell en mode Administrateur, collez le script que vous avez copié, puis exécutez-le pour inscrire la machine dans ce groupe.

    • Si vous recevez une erreur lors de l’exécution du script indiquant qu’un canal sécurisé n’a pas pu être créé, exécutez cette commande à l’invite PowerShell en mode Administrateur :

      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    • Lorsque vous êtes invité à configurer des étiquettes pour l’agent, appuyez sur Y et entrez les étiquettes que vous allez utiliser pour identifier des sous-ensembles des machines incluses dans le groupe pour les déploiements partiels.

      Les étiquettes que vous affectez vous permettent de limiter le déploiement à des serveurs spécifiques lorsque le groupe de déploiement est utilisé dans un travail Exécuter sur le groupe de machines.

    • Lorsque vous êtes invité à indiquer le compte d’utilisateur, appuyez sur Retour pour accepter les valeurs par défaut.

    • Attendez que le script s’achève par le message Service vstsagent.{organization-name}.{computer-name} started successfully.

  7. Dans la page Groupes de déploiement d’Azure Pipelines, ouvrez l’onglet Machines et vérifiez que les agents sont en cours d’exécution. Si les étiquettes que vous avez configurées ne sont pas visibles, actualisez la page.

Installer l’extension de machine virtuelle Azure Agent Azure Pipelines

  1. Sous l’onglet Groupes de déploiement d’Azure Pipelines, choisissez +Nouveau pour créer un groupe.

  2. Entrez un nom pour le groupe et éventuellement une description, puis choisissez Créer.

  3. Dans le portail Azure, pour chaque machine virtuelle à inclure dans le groupe de déploiement, ouvrez le panneau Extension, choisissez + Ajouter pour ouvrir la liste Nouvelle ressource, puis sélectionnez Agent Azure Pipelines.

    Installation de l’extension Agent Azure Pipelines

  4. Dans le panneau Installer l’extension, spécifiez le nom de l’abonnement Azure Pipelines à utiliser. Par exemple, si l’URL est https://dev.azure.com/contoso, spécifiez simplement contoso.

  5. Spécifiez le nom du projet et le nom du groupe de déploiement.

  6. Spécifiez éventuellement un nom pour l’agent. S’il n’est pas spécifié, le nom de la machine virtuelle est utilisé avec les caractères -DG ajoutés.

  7. Entrez le jeton d’accès personnel (PAT) à utiliser pour l’authentification auprès d’Azure Pipelines.

  8. Spécifiez éventuellement la liste des étiquettes séparées par des virgules qui seront configurées sur l’agent. Les étiquettes ne respectent pas la casse et ne doivent pas comprendre plus de 256 caractères.

  9. Choisissez OK pour démarrer l’installation de l’agent sur cette machine virtuelle.

  10. Ajoutez l’extension à toutes les autres machines virtuelles à inclure dans ce groupe de déploiement.

Utiliser la tâche de déploiement de modèle ARM

Important

Ces instructions font référence à la version 2 de la tâche. Basculez votre version de tâche de 3 à 2.

Vous pouvez utiliser la tâche de déploiement de modèle ARM pour déployer un modèle Azure Resource Manager (ARM) qui installe l’extension de machine virtuelle Azure Agent Azure Pipelines quand vous créez une machine virtuelle, ou bien pour mettre à jour le groupe de ressources afin d’appliquer l’extension une fois la machine virtuelle créée. Vous pouvez également utiliser les options de déploiement avancées de la tâche de déploiement de modèle ARM pour déployer l’agent sur des groupes de déploiement.

Installer l’extension de machine virtuelle Azure « Agent Azure Pipelines » à l’aide d’un modèle ARM

Un modèle ARM est un fichier JSON qui définit de manière déclarative un ensemble de ressources Azure. Le modèle peut être lu automatiquement et les ressources provisionnées par Azure. Dans un modèle unique, vous pouvez déployer plusieurs services ainsi que leurs dépendances.

Pour une machine virtuelle Windows, créez un modèle ARM et ajoutez un élément resources sous la ressource Microsoft.Compute/virtualMachine, comme illustré ici :

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|2|3",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Remarque

Dans Azure DevOps Server 2022, les valeurs autorisées pour AgentMajorVersion sont auto|N. Dans Azure DevOps Server 2022.1 et ultérieur, les valeurs autorisées pour AgentMajorVersion sont auto|2|3.

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|N",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Où :

  • VSTSAccountName est obligatoire. Abonnement Azure Pipelines à utiliser. Exemple : Si votre URL est https://dev.azure.com/contoso, spécifiez simplement contoso.
  • TeamProject est obligatoire. Projet au sein duquel le groupe de déploiement est défini.
  • DeploymentGroup est obligatoire. Groupe de déploiement auprès duquel l’agent de déploiement sera inscrit.
  • AgentName est facultatif. S’il n’est pas spécifié, le nom de la machine virtuelle est utilisé avec les caractères -DG ajoutés.
  • Tags est facultatif. Liste des étiquettes séparées par des virgules qui seront définies sur l’agent. Les étiquettes ne respectent pas la casse et ne doivent pas comprendre plus de 256 caractères.
  • PATToken est obligatoire. Jeton d’accès personnel qui est utilisé pour l’authentification auprès d’Azure Pipelines afin de télécharger et configurer l’agent

Remarque

Si vous déployez sur une machine virtuelle Linux, vérifiez que le paramètre type a la valeur TeamServicesAgentLinux dans le code.

Résoudre les problèmes liés à l’extension

Voici quelques problèmes connus liés à l’extension :

  • Fichier d’état trop volumineux : Ce problème se produit sur les machines virtuelles Windows ; il n’a pas été observé sur les machines virtuelles Linux. Le fichier d’état contient un objet JSON qui décrit l’état actuel de l’extension. L’objet est un espace réservé qui liste les opérations effectuées jusqu’à présent. Azure lit ce fichier d’état et transmet l’objet d’état en réponse à des requêtes d’API. Le fichier a une taille maximale autorisée ; si la taille dépasse le seuil, Azure ne peut pas le lire complètement et génère une erreur pour l’état. À chaque redémarrage d’une machine, certaines opérations sont effectuées par l’extension (même si elle a pu être installée correctement auparavant), celles-ci sont ajoutées au fichier d’état. Si la machine redémarre un grand nombre de fois, la taille du fichier d’état dépasse le seuil, ce qui entraîne cette erreur. Le message d’erreur indique : Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes. Notez que l’installation de l’extension peut être correcte, mais que cette erreur masque l’état réel de l’extension.

    Nous avons résolu ce problème lié aux redémarrages de machines (à partir de la version 1.27.0.2 pour l’extension Windows et 1.21.0.1 pour l’extension Linux). Par conséquent, lors d’un redémarrage, rien n’est ajouté au fichier d’état. Si vous avez rencontré ce problème avec votre extension avant l’existence du correctif (c’est-à-dire que vous rencontriez ce problème avec des versions antérieures de l’extension) et que votre extension a été automatiquement mise à jour vers les versions dotées du correctif, le problème va quand même persister. En effet, lors de la mise à jour de l’extension, la version la plus récente de l’extension fonctionne toujours avec le fichier d’état antérieur. Actuellement, vous pouvez quand même être confronté à ce problème si vous utilisez une version antérieure de l’extension avec l’indicateur de désactivation des mises à jour automatiques des versions mineures, ou si un grand fichier d’état a été transféré d’une version antérieure de l’extension vers les versions plus récentes qui contiennent le correctif, ou pour toute autre raison. Le cas échéant, vous pouvez résoudre ce problème en désinstallant, puis en réinstallant l’extension. La désinstallation de l’extension nettoie l’ensemble du répertoire de l’extension, de sorte qu’un nouveau fichier d’état est créé pour la nouvelle installation. Vous avez besoin d’installer la dernière version de l’extension. Cette solution est un correctif définitif : après l’avoir appliqué, vous ne devez normalement plus rencontrer ce problème.

  • Problème lié aux données personnalisées : ce problème n’est pas lié à l’extension, mais certains clients ont signalé une confusion concernant l’emplacement des données personnalisées sur la machine virtuelle lors du changement de version du système d’exploitation. Nous vous suggérons la solution de contournement suivante. Python 2 étant déprécié, nous avons fait en sorte que l’extension fonctionne avec Python 3. Si vous utilisez toujours des versions antérieures du système d’exploitation sur lesquelles Python 3 n’est pas installé par défaut, pour exécuter l’extension, vous devez soit installer Python 3 sur la machine virtuelle, soit basculer vers des versions du système d’exploitation sur lesquelles Python 3 est installé par défaut. Sur les machines virtuelles Linux, les données personnalisées sont copiées dans le fichier /var/lib/waagent/ovf-env.xml pour les versions anciennes de l’Agent Linux Microsoft Azure et dans /var/lib/waagent/CustomData pour les versions plus récentes de l’Agent Linux Microsoft Azure. Il semble que les clients qui n’ont codé en dur qu’un seul de ces deux chemins rencontrent des problèmes lors du changement de version du système d’exploitation, car le fichier n’existe pas sur la nouvelle version du système d’exploitation, alors que l’autre fichier est présent. Par conséquent, pour éviter de rompre le provisionnement de la machine virtuelle, vous devez prendre en compte les deux fichiers dans le modèle afin que si l’un d’eux échoue, l’autre réussisse.

Pour plus d’informations sur les modèles ARM, consultez Définir des ressources dans des modèles Azure Resource Manager.

Pour utiliser le modèle :

  1. Sous l’onglet Groupes de déploiement d’Azure Pipelines, choisissez +Nouveau pour créer un groupe.

  2. Entrez un nom pour le groupe et éventuellement une description, puis choisissez Créer.

  3. Sous l’onglet Mises en production d’Azure Pipelines, créez un pipeline de mise en production avec un index qui contient la tâche Déploiement de modèle ARM.

  4. Fournissez les paramètres nécessaires à la tâche, comme l’abonnement Azure, le nom du groupe de ressources, l’emplacement et les informations du modèle, puis enregistrez le pipeline de mise en production.

  5. Créez une mise en production à partir du pipeline de mise en production pour installer les agents.

Installer des agents à l’aide des options de déploiement avancées

  1. Sous l’onglet Groupes de déploiement d’Azure Pipelines, choisissez +Nouveau pour créer un groupe.

  2. Entrez un nom pour le groupe et éventuellement une description, puis choisissez Créer.

  3. Sous l’onglet Mises en production d’Azure Pipelines, créez un pipeline de mise en production avec un index qui contient la tâche Déploiement de modèle ARM.

  4. Sélectionnez la tâche et développez la section Options de déploiement avancées pour les machines virtuelles. Dans cette section, configurez les paramètres de la manière suivante :

    • Activer les prérequis : Sélectionnez Configurer avec l’agent de groupe de déploiement.

    • Point de terminaison Azure Pipelines/TFS : Sélectionnez une connexion de service Team Foundation Server/TFS existante qui pointe vers votre cible. L’inscription de l’agent pour des groupes de déploiement nécessite un accès à votre projet Visual Studio. Si vous n’avez pas de connexion de service existante, choisissez Ajouter et créez-en une maintenant. Configurez-la pour utiliser un jeton d’accès personnel (PAT) dont l’étendue est délimitée au groupe de déploiement.

    • Projet : Spécifiez le projet contenant le groupe de déploiement.

    • Groupe de déploiement : Spécifiez le nom du groupe de déploiement auprès duquel les agents seront inscrits.

    • Copier les étiquettes des machines virtuelles Azure vers les agents : Quand elles sont définies (cochées), toutes les étiquettes déjà configurées sur la machine virtuelle Azure sont copiées vers l’agent du groupe de déploiement correspondant. Par défaut, toutes les étiquettes Azure sont copiées au format Key: Value. Par exemple : Role: Web.

  5. Indiquez les autres paramètres nécessaires à la tâche, comme l’abonnement Azure, le nom du groupe de ressources et l’emplacement, puis enregistrez le pipeline de mise en production.

  6. Créez une mise en production à partir du pipeline de mise en production pour installer les agents.

Aide et support