Déployer sur des machines virtuelles Azure à l’aide de groupes de déploiement dans Azure Pipelines

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

Dans les versions antérieures d’Azure Pipelines, les applications qui devaient être déployées sur plusieurs serveurs nécessitaient une quantité importante de planification et de maintenance. La communication à distance Windows PowerShell devait être activée manuellement, les ports requis devaient être ouverts et les agents de déploiement devaient être installés sur chacun des serveurs. Les pipelines devaient ensuite être gérés manuellement si un déploiement de déploiement était nécessaire.

Tous les défis ci-dessus ont évolué en douceur avec l’introduction des groupes de déploiement.

Un groupe de déploiement installe un agent de déploiement sur chacun des serveurs cibles du groupe configuré et indique au pipeline de mise en production de déployer progressivement l’application sur ces serveurs. Plusieurs pipelines peuvent être créés pour les déploiements afin que la dernière version d’une application puisse être fournie de manière progressive à plusieurs groupes d’utilisateurs pour la validation des fonctionnalités nouvellement introduites.

Notes

Les groupes de déploiement sont un concept utilisé dans les pipelines classiques. Si vous utilisez des pipelines YAML, consultez Environnements.

Ce tutoriel vous fournira des informations sur :

  • Approvisionnement de l’infrastructure de machine virtuelle sur Azure à l’aide d’un modèle
  • Création d’un groupe de déploiement Azure Pipelines
  • Création et exécution d’un pipeline CI/CD pour déployer la solution avec un groupe de déploiement

Prérequis

  • Un compte Microsoft Azure
  • Une organisation Azure DevOps.

Utilisez le Générateur de démonstration Azure DevOps pour approvisionner le projet de tutoriel sur votre organisation Azure DevOps.

Configuration de l’environnement de déploiement Azure

Les ressources suivantes sont approvisionnées sur Azure à l’aide d’un modèle ARM :

  • Six serveurs web de machine virtuelle avec IIS configuré
  • Machine virtuelle SQL Server (serveur de base de données)
  • Équilibreur de charge réseau Azure
  1. Cliquez sur le lien Déployer sur Azure ci-dessous pour lancer l’approvisionnement des ressources. Fournissez toutes les informations nécessaires et sélectionnez Acheter. Vous pouvez utiliser n’importe quelle combinaison de noms d’utilisateur et de mots de passe d’administration autorisés, car ils ne sont plus utilisés dans ce tutoriel. Le Nom de préfixe de l’environnement est préfixé à tous les noms de ressource afin de garantir que ces ressources sont générées avec des noms globalement uniques. Essayez d’utiliser quelque chose de personnel ou aléatoire, mais si vous voyez une erreur de conflit de nommage lors de la validation ou de la création, essayez de modifier ce paramètre et de l’exécuter à nouveau.

    Déployer dans Azure

    Capture d'écran montrant comment configurer votre environnement de déploiement Azure.

    Remarque

    Le déploiement prend environ 10 à 15 minutes. Si vous recevez des erreurs de conflit de noms, essayez de modifier le paramètre que vous fournissez pour Nom de préfixe de l’environnement.

  2. Une fois le déploiement terminé, vous pouvez passer en revue toutes les ressources générées dans le groupe de ressources spécifié à l’aide du Portail Azure. Sélectionnez la machine virtuelle du serveur de base de données avec sqlSrv dans son nom pour afficher ses détails.

    Groupe de ressources déployé sur Azure.

  3. Notez le nom DNS. Cette valeur est nécessaire à une étape ultérieure. Vous pouvez utiliser le bouton Copier pour le copier dans le Presse-papiers.

    Déploiement SQL DNS sur Azure.

Création et configuration d’un groupe de déploiement

Azure Pipelines facilite l’organisation des serveurs nécessaires au déploiement d’applications. Un groupe de déploiement est une collection de machines avec des agents de déploiement. Chacune des machines interagit avec Azure Pipelines pour coordonner le déploiement de l’application.

Étant donné qu’aucune modification de configuration n’est requise pour le pipeline de build, la build est déclenchée automatiquement après l’approvisionnement du projet. Lorsque vous mettre en file d’attente une version ultérieurement, cette build est utilisée.

  1. Accédez au projet Azure DevOps créé par le générateur de démonstration.

  2. Sous Pipelines, accédez à Groupes de déploiement.

    Navigation dans les groupes de déploiement sous Pipelines

  3. Sélectionnez Ajouter un groupe de déploiement.

  4. Entrez Mise en production pour le Nom du groupe de déploiement, puis sélectionnez Créer. Un script d’inscription est généré. Vous pouvez inscrire les serveurs cibles à l’aide du script fourni si vous travaillez par vous-même. Toutefois, dans ce tutoriel, les serveurs cibles sont automatiquement inscrits dans le cadre du pipeline de mise en production. La définition de mise en production utilise des phases pour déployer l’application sur les serveurs cibles. Une phase est un regroupement logique de tâches qui définit la cible d’exécution sur laquelle les tâches s’exécutent. Chaque phase de groupe de déploiement exécute des tâches sur les machines définies dans le groupe de déploiement.

  5. Sous Pipelines, accédez à Mises en production. Sélectionnez le pipeline de mise en production nommé Groupes de déploiement, puis Modifier.

  6. Sélectionnez l’onglet Tâches pour afficher les tâches de déploiement dans le pipeline. Les tâches sont organisées en trois phases appelées phase agent, phase de groupe de déploiement et phase de déploiement IIS.

  7. Sélectionnez la Phase d’agent. À cette phase, les serveurs cibles sont associés au groupe de déploiement à l’aide de la tâche de déploiement du groupe de ressources Azure. Pour que l’exécution se lance, un pool d’agents et une spécification doivent être définis. Sélectionnez le pool Azure Pipelines et la spécification windows-latest.

    Configuration de l’étape d’agent

  8. Sélectionnez la tâche Déploiement d’un groupe de ressources Azure. Configurez une connexion de service à l’abonnement Azure utilisé précédemment pour créer une infrastructure. Après avoir autorisé la connexion, sélectionnez le groupe de ressources créé pour ce tutoriel.

    Création d’une connexion de service Azure

  9. Cette tâche s’exécute sur les machines virtuelles hébergées dans Azure et doit être en mesure de se reconnecter à ce pipeline afin de répondre aux exigences du groupe de déploiement. Pour sécuriser la connexion, un jeton d’accès personnel (PAT) est nécessaire. Dans la liste déroulante Paramètres utilisateur, ouvrez Jetons d’accès personnels dans un nouvel onglet. La plupart des navigateurs prennent en charge l’ouverture d’un lien dans un nouvel onglet via le menu contextuel clic droit ou Ctrl+Clic.

    Navigation vers des jetons d’accès personnels

  10. Dans le nouvel onglet, sélectionnez Nouveau jeton.

  11. Entrez un nom et sélectionnez l’étendue Accès complet. Sélectionnez Créer pour créer le jeton. Une fois le jeton créé, copiez-le et fermez l’onglet du navigateur. Vous revenez à l’éditeur Azure Pipeline.

    Création d’un jeton d’accès personnel

  12. Sous Connexion au service Azure Pipelines, sélectionnez Nouveau.

    Ajout d’une connexion de service Azure Pipelines

  13. Entrez l’URL de connexion à l’instance actuelle d’Azure DevOps. Cette URL devrait ressembler à https://dev.azure.com/[Your account]. Collez le Jeton d’accès personnel créé précédemment et spécifiez un Nom de connexion au service. Sélectionnez Vérifier et enregistrer.

    Création d’une connexion de service Azure Pipelines

    Notes

    Pour inscrire un agent, vous devez être membre du rôle administrateur dans le pool d’agents. L’identité de l’administrateur du pool d’agents n’est nécessaire qu’au moment de l’inscription. L’identité d’administrateur n’est pas conservée sur l’agent, et elle n’est utilisée dans aucune communication ultérieure entre l’agent et Azure Pipelines. Une fois l’agent inscrit, il n’est plus nécessaire de renouveler le jeton d’accès personnel, car il n’est requis qu’au moment de l’inscription.

  14. Sélectionnez le Projet d’équipe actuel et le Groupe de déploiement créé précédemment.

    Configuration du groupe de déploiement Azure Pipelines

  15. Sélectionnez la phase de phase de groupe de déploiement. Cette phase exécute des tâches sur les machines définies dans le groupe de déploiement. Cette phase est liée à l’étiquette SQL-Svr-DB. Choisissez le Groupe de déploiement dans la liste déroulante.

    Configuration de la phase de groupe de déploiement

  16. Sélectionnez la phase de déploiement IIS. Cette phase déploie l’application sur les serveurs web à l’aide des tâches spécifiées. Cette phase est liée à l’étiquette WebSrv. Choisissez le Groupe de déploiement dans la liste déroulante.

  17. Sélectionnez la tâche Déconnecter Azure Network Load Balancer. Comme les machines cibles sont connectées à l’équilibrage de charge réseau, cette tâche déconnecte les machines de l’équilibrage de charge réseau avant le déploiement et les y reconnecte après. Configurez la tâche pour utiliser la connexion Azure, le groupe de ressources et l’équilibreur de charge (il ne doit y en avoir qu’un seul).

  18. Sélectionnez la tâche Gérer l’application web IIS. Cette tâche s’exécute sur les ordinateurs cibles de déploiement inscrits avec le groupe de déploiement configuré pour la tâche/phase. Cela crée une application web et un pool d’applications localement avec le nom PartsUnlimited s’exécutant sur le port 80

  19. Sélectionnez la tâche Déploiement d’application web IIS. Cette tâche s’exécute sur les ordinateurs cibles de déploiement inscrits avec le groupe de déploiement configuré pour la tâche/phase. Cela déploie l’application sur le serveur IIS à l’aide de Web Deploy.

  20. Sélectionnez la tâche Connecter Azure Network Load Balancer. Configurez la tâche pour utiliser la connexion Azure, le groupe de ressources et l’équilibreur de charge (il ne doit y en avoir qu’un seul).

  21. Sélectionnez l’onglet Variables et entrez les valeurs des variables comme ci-dessous.

    Nom de la variable : Valeur de la variable
    nom_base_de_données PartsUnlimited-Dev
    DBPassword P2ssw0rd@123
    DBUserName sqladmin
    DefaultConnectionString Data Source=[NOM_VOTRE_DNS];Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;
    ServerName localhost

    Important

    Veillez à remplacer le nom DNS de votre serveur SQL (que vous avez noté dans le Portail Azure précédemment) dans la variable DefaultConnectionString.

    Votre DefaultConnectionString doit être similaire à cette chaîne après avoir remplacé le DNS SQL :

    Data Source=cust1sqljo5zndv53idtw.westus2.cloudapp.azure.com;Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;

    La liste de variables finale devrait ressembler à ceci :

    Configuration des variables de pipeline

    Notes

    Vous pouvez recevoir une erreur indiquant que la variable DefaultConnectionString doit être enregistrée en tant que secret. Si cela se produit, sélectionnez la variable et cliquez sur l’icône de cadenas qui apparaît en regard de sa valeur pour la protéger.

Mise en file d’attente d’une version et examen du déploiement

  1. Sélectionnez Enregistrer et confirmez.

  2. Sélectionnez Créer une mise en production et confirmez. Suivez la mise en production jusqu’à la fin. Le déploiement est ensuite prêt à être examiné.

  3. Dans le Portail Azure, ouvrez l’une des machines virtuelles web de votre groupe de ressources. Vous pouvez sélectionner n’importe laquelle ayant websrv dans son nom.

    Localisation d’une machine virtuelle web

  4. Copiez le DNS de la machine virtuelle. Azure Load Balancer répartit le trafic entrant entre les instances saines de serveurs définies dans un ensemble à charge équilibrée. Par conséquent, le DNS de toutes les instances de serveur web est le même.

    Localisation du domaine d’application web

  5. Ouvrez un nouvel onglet de navigateur pour accéder au DNS de la machine virtuelle. Vérifiez que l’application déployée est en cours d’exécution.

    Examen de l’application

Récapitulatif

Dans ce tutoriel, vous avez déployé une application web sur un ensemble de machines virtuelles Azure à l’aide d’Azure Pipelines et de groupes de déploiement. Bien que ce scénario couvre une poignée de machines, vous pouvez facilement mettre à l’échelle le processus pour prendre en charge des centaines, voire des milliers, de machines utilisant pratiquement n’importe quelle configuration.

Nettoyage des ressources

Ce tutoriel a créé un projet Azure DevOps et certaines ressources dans Azure. Si vous ne pensez pas continuer à utiliser ces ressources, supprimez-les en effectuant les étapes suivantes :

  1. Supprimez le projet Azure DevOps créé par le générateur de démonstration Azure DevOps.

  2. Toutes les ressources Azure créées au cours de ce tutoriel ont été affectées au groupe de ressources spécifié lors de la création. La suppression de ce groupe supprime les ressources qu’il contient. Cette suppression peut être effectuée via l’interface CLI ou le portail.

Étapes suivantes