Partager via


Provisionner des agents pour les groupes de déploiement

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

Un groupe de déploiement est un groupe logique de machines cibles de déploiement pour les pipelines de mise en production classiques dans Azure Pipelines. Chaque serveur cible d’un groupe de déploiement nécessite l’installation d’un agent de déploiement. Cet article explique comment installer et provisionner l’agent de déploiement sur chaque machine physique ou virtuelle dans un groupe de déploiement.

Vous pouvez installer l’agent sur une machine cible de l’une des manières suivantes :

  • Exécutez le script qui génère lorsque vous créez le groupe de déploiement.
  • Installez l’extension de machine virtuelle Azure De l’agent Azure Pipelines sur la machine virtuelle.
  • Utilisez la tâche AzureResourceGroupDeploymentV2 dans votre pipeline de mise en production pour créer un groupe de déploiement et approvisionner dynamiquement des agents.

Les sections suivantes fournissent des étapes pour implémenter chaque méthode.

Prérequis

  • Une organisation et un projet Azure DevOps. Pour créer une organisation ou un projet, veuillez consulter la section Créer une organisation ou Créer un projet dans Azure DevOps.
  • Accès à au moins une machine cible de déploiement Windows ou Linux avec les autorisations appropriées.
  • Pour les méthodes d’installation d’Azure Pipelines Agent, un compte Azure et un abonnement disposant des autorisations nécessaires pour créer et gérer des machines virtuelles Azure. Si vous n’avez pas de compte Azure, inscrivez-vous pour un compte gratuit.

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

Lorsque vous créez un groupe de déploiement, un script est généré que vous pouvez exécuter sur chaque ordinateur cible pour inscrire le serveur et installer l’agent. Pour installer l’agent à l’aide du script d’inscription généré :

  1. Dans votre projet Azure DevOps, sélectionnez Groupes de déploiement de pipelines>.

  2. Dans l’écran Groupes de déploiement, sélectionnez Nouveau ou sélectionnez Ajouter un groupe de déploiement si ce groupe de déploiement est le premier dans le projet.

  3. Entrez un nom de groupe de déploiement et une description facultative, puis sélectionnez Créer.

  4. Dans l’écran suivant, sélectionnez Windows ou Linux pour le type de cible à inscrire. Un script d’inscription est généré.

  5. Sélectionnez Utiliser un jeton d’accès personnel dans le script pour l’authentification. Pour plus d’informations, consultez Utiliser les jetons d’accès personnels.

  6. Enfin, sélectionnez Copier le script dans le Presse-papiers.

  7. Sur chaque ordinateur cible, connectez-vous à l’aide d’un compte avec des autorisations d’administration.

  8. Exécutez le script copié pour inscrire la machine et installer l’agent. Pour les machines Windows, utilisez une invite de commandes PowerShell avec élévation de privilèges.

    À mesure que le script s’exécute :

    • Pour affecter des balises qui vous permettent de limiter les déploiements à certains serveurs d’un travail de groupe de déploiement, entrez Y lorsque vous y êtes invité à entrer des balises, puis entrez une balise ou des balises pour cette machine virtuelle.

      Les balises sont limitées à 256 caractères chacune, ne respectent pas la casse et le nombre de balises que vous pouvez utiliser n’est pas limité.

    • Lorsque vous êtes invité à entrer un compte d’utilisateur, acceptez les valeurs par défaut.

    Remarque

    Si vous recevez une erreur lors de l’exécution du script qu’un canal sécurisé n’a pas pu être créé, exécutez la commande suivante à l’invite d’administration PowerShell :

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

Une fois que vous avez configuré chaque serveur cible, le script doit renvoyer le message Service vstsagent.{organization-name}.{computer-name} started successfully.

Sous l’onglet Cibles de la page Groupes de déploiement Azure Pipelines, vous pouvez vérifier que l’agent est en cours d’exécution. Actualisez la page, si nécessaire.

Installer l’extension de machine virtuelle Azure Agent Azure Pipelines

Si vous utilisez des machines virtuelles Azure comme machines de déploiement, vous pouvez installer l’extension Agent Azure Pipelines sur chaque machine virtuelle. L’extension inscrit automatiquement l’agent auprès du groupe de déploiement spécifié dans votre projet Azure DevOps.

Pour installer l’agent à l’aide de l’extension, commencez par créer le groupe de déploiement :

  1. Dans votre projet Azure DevOps, sélectionnez Groupes de déploiement de pipelines>.
  2. Dans l’écran Groupes de déploiement, sélectionnez Nouveau ou sélectionnez Ajouter un groupe de déploiement si ce groupe de déploiement est le premier dans le projet.
  3. Entrez un nom de groupe de déploiement et une description facultative, puis sélectionnez Créer.

Dans le Portail Azure, installez l’extension Azure Pipelines Agent sur chaque machine virtuelle cible :

  1. Dans la page de la machine virtuelle, sélectionnez Extensions de paramètres>+ Applications dans le volet de navigation gauche.

  2. Sous l’onglet Extension , sélectionnez Ajouter.

  3. Dans la page Installer une extension , recherchez et sélectionnez Agent Azure Pipelines, puis sélectionnez Suivant.

    Capture d’écran montrant la sélection de l’extension Azure Pipelines Agent.

  4. Dans l’écran Configurer l’extension de l’agent Azure Pipelines, spécifiez les informations suivantes :

    • URL de l’organisation Azure DevOps : entrez l’URL de votre organisation Azure DevOps, par https://dev.azure.com/contosoexemple .
    • Projet d’équipe : entrez le nom de votre projet, tel que myProject.
    • Groupe de déploiement : entrez le nom du groupe de déploiement que vous avez créé.
    • Nom de l’agent : si vous le souhaitez, entrez un nom pour l’agent. Si vous n’entrez rien, l’agent est nommé le nom de la machine virtuelle ajouté à -DG.
    • Jeton d’accès personnel : entrez le jeton d’accès personnel (PAT) à utiliser pour l’authentification auprès d’Azure Pipelines.
    • Balises : si vous le souhaitez, spécifiez une liste de balises séparées par des virgules à configurer sur l’agent. Les balises sont limitées à 256 caractères chacune, ne respectent pas la casse et le nombre de balises que vous pouvez utiliser n’est pas limité.
  5. Sélectionnez Vérifier + créer, puis quand la validation réussit, sélectionnez Créer.

Utiliser la tâche AzureResourceGroupDeploymentV2

Vous pouvez utiliser la tâche AzureResourceGroupDeploymentV2 pour déployer un modèle Azure Resource Manager (ARM). Le modèle peut installer l’extension Azure Pipelines Agent lors de la création d’une machine virtuelle Azure ou mettre à jour le groupe de ressources pour appliquer l’extension après la création d’une machine virtuelle.

Vous pouvez également utiliser les options de déploiement avancées de la tâche AzureResourceGroupDeployment pour déployer l’agent.

Créer un groupe de déploiement

Commencez par créer le groupe de déploiement :

  1. Dans votre projet Azure DevOps, sélectionnez Groupes de déploiement de pipelines>.
  2. Dans l’écran Groupes de déploiement, sélectionnez Nouveau ou sélectionnez Ajouter un groupe de déploiement si ce groupe de déploiement est le premier dans le projet.
  3. Entrez un nom de groupe de déploiement et une description facultative, puis sélectionnez Créer.

Utiliser un modèle ARM pour installer l’agent

Un modèle ARM est un fichier JSON qui définit de manière déclarative un ensemble de ressources Azure. Azure lit automatiquement le modèle et provisionne les ressources. Vous pouvez déployer plusieurs services et leurs dépendances dans un modèle unique.

Pour inscrire et installer l’agent de déploiement à l’aide d’un modèle ARM, ajoutez un élément de ressources sous la Microsoft.Compute/virtualMachine ressource, comme indiqué dans le code suivant.

"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

Pour une machine virtuelle Linux, le type paramètre sous properties le code doit être TeamServicesAgentLinux.

Remarque

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

"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')]"
     }
   }
  }
]

Dans le code précédent :

  • VSTSAccountName est l’organisation Azure Pipelines requise à utiliser. Par exemple, si votre URL Azure DevOps est https://dev.azure.com/contoso, spécifiez simplement contoso
  • TeamProject est le projet requis dont le groupe de déploiement est défini.
  • DeploymentGroup est le groupe de déploiement requis pour inscrire l’agent.
  • AgentName est un nom d’agent facultatif. S’il n’est pas spécifié, l’agent reçoit le nom de la machine virtuelle avec -DG ajouté.
  • Tags est une liste facultative séparée par des virgules des balises à définir sur l’agent. Les balises sont limitées à 256 caractères chacune, ne respectent pas la casse et le nombre de balises que vous pouvez utiliser n’est pas limité.
  • PATToken est le PAT requis pour s’authentifier auprès d’Azure Pipelines pour télécharger et configurer l’agent.

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

Utiliser le modèle dans un pipeline de mise en production

Créez un pipeline de mise en production :

  1. Sélectionnez Pipelines Releases> dans le menu de gauche, puis sélectionnez Nouveau>pipeline de mise en production.
  2. Sous l’onglet Versions d’Azure Pipelines, créez un pipeline de mise en production avec une étape qui contient la tâche de déploiement de modèle ARM.
  3. Ce modèle utilise la version 2 de la tâche. Par conséquent, dans l’écran des paramètres de déploiement du groupe de ressources Azure, remplacez la version de la tâche de 3.* par la version 2.*.
  4. Fournissez les paramètres requis pour la tâche, tels que l’abonnement Azure, le nom du groupe de ressources, l’emplacement, les informations de modèle et l’action à entreprendre.
  5. Enregistrez le pipeline de mise en production et créez une mise en production à partir du pipeline pour installer les agents.

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

Vous pouvez également installer l’agent à l’aide d’options de déploiement avancées. Suivez les étapes précédentes, mais dans l’écran des paramètres de déploiement du groupe de ressources Azure, développez les options de déploiement avancées pour les machines virtuelles.

  1. Sous Activer les prérequis, sélectionnez Configurer avec l’agent de groupe de déploiement.

  2. Fournissez les paramètres et paramètres requis suivants :

    • Connexion de service Azure Pipelines : sélectionnez une connexion de service existante qui pointe vers votre cible.

      Si vous n’avez pas de connexion de service existante, sélectionnez Nouveau et créez-en une. Pour plus d’informations, consultez Créer une connexion de service. Configurez la connexion de service pour utiliser un PAT avec une étendue limitée au groupe de déploiement.

    • Projet d’équipe : sélectionnez le projet qui contient le groupe de déploiement.

    • Groupe de déploiement : sélectionnez le groupe de déploiement auquel inscrire les agents.

    • Sélectionnez Copier des balises de machine virtuelle Azure vers des agents pour copier les étiquettes déjà configurées sur la machine virtuelle Azure vers l’agent de groupe de déploiement correspondant.

      Par défaut, toutes les balises Azure sont copiées à l’aide du Key: Value format, par exemple Role: Web.

  3. Enregistrez le pipeline et créez une version pour installer les agents.

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

Il existe des problèmes connus avec l’extension De l’agent Azure Pipelines.

Le fichier d’état est trop volumineux

Ce problème peut se produire sur les machines virtuelles Windows. 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 maximum, Azure ne peut pas la lire complètement et génère une erreur pour l’état.

Même si l’extension peut être installée initialement, chaque fois que l’ordinateur redémarre l’extension, effectue certaines opérations qui s’ajoutent au fichier d’état. Si l’ordinateur redémarre plusieurs fois, la taille du fichier d’état peut dépasser le seuil, provoquant l’erreur Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes. Bien que l’installation de l’extension réussisse, cette erreur masque l’état réel de l’extension.

Ce problème de redémarrage de l’ordinateur est résolu à partir de la version 1.27.0.2 de l’extension Windows et 1.21.0.1 de l’extension Linux. Un redémarrage n’ajoute désormais rien au fichier d’état. Toutefois, si vous avez rencontré ce problème avec une version antérieure de l’extension et que votre extension a été automatiquement mise à jour vers la version corrigée, le problème peut persister. Les versions plus récentes de l’extension peuvent toujours fonctionner avec un fichier d’état antérieur.

Vous pourriez rencontrer ce problème si vous utilisez une version antérieure de l’extension avec l’indicateur pour désactiver les mises à jour automatiques de version mineure, ou si un fichier d’état volumineux a été transféré d’une version antérieure à une version fixe. Si c’est le cas, vous pouvez résoudre le problème en désinstallant et en réinstallant l’extension. La désinstallation de l’extension nettoie l’intégralité du répertoire d’extension et crée un fichier d’état pour une nouvelle installation de la dernière version.

Problème de données personnalisées

Python 2 est déconseillé et l’extension Azure Pipelines Agent fonctionne avec Python 3. Si vous utilisez toujours des versions de système d’exploitation qui n’ont pas Python 3 installées par défaut, pour exécuter l’extension, vous devez installer Python 3 sur la machine virtuelle ou basculer vers une version du système d’exploitation sur laquelle Python 3 est installé par défaut. Sinon, il peut y avoir confusion concernant l’emplacement des données personnalisées sur la machine virtuelle lorsque vous changez de version du système d’exploitation.

Sur les machines virtuelles Linux, les données personnalisées sont copiées vers /var/lib/waagent/ovf-env.xml pour les versions antérieures de l’agent, et vers /var/lib/waagent/CustomData pour les versions plus récentes. Si vous codez en dur l’un de ces deux chemins, vous pouvez rencontrer des problèmes lors du basculement de versions du système d’exploitation, car l’un des chemins d’accès n’existe pas sur la nouvelle version du système d’exploitation, bien que l’autre chemin d’accès soit présent. Pour éviter de rompre le provisionnement de machine virtuelle, envisagez d’utiliser les deux chemins d’accès dans le modèle afin qu’en cas d’échec, l’autre doit réussir.

Aide et support