Exercice - Configurer votre environnement Azure DevOps

Effectué

Dans cette section, vous allez vous pencher sur la configuration de votre organisation Azure DevOps et la création de l’environnement Azure App Service sur lequel vous allez effectuer le déploiement.

Vous allez apprendre à :

  • Configurez votre projet Azure DevOps.
  • Gérez vos éléments de travail avec Azure Boards.
  • Créez votre environnement Azure App Service.
  • Créez des variables de pipeline dans Azure Pipelines.
  • Créez une connexion de service pour vous authentifier auprès de votre abonnement Azure.

Ajouter un utilisateur à Azure DevOps

Pour effectuer ce module, vous avez besoin de votre propre abonnement Azure. Vous pouvez commencer gratuitement avec Azure.

Vous n’avez pas besoin d’un abonnement Azure pour utiliser Azure DevOps, mais dans ce module, vous allez utiliser Azure DevOps pour déployer sur des ressources Azure. Pour simplifier le processus, utilisez le même compte Microsoft pour vous connecter à Azure et Azure DevOps.

Si vous utilisez différents comptes Microsoft pour vous connecter à Azure et Azure DevOps, ajoutez un utilisateur avec le niveau d’accès De base à votre organisation DevOps sous le compte Microsoft que vous utilisez pour vous connecter à Azure. Pour plus d’informations , consultez Ajouter des utilisateurs à votre organisation ou projet .

Ensuite, déconnectez-vous d’Azure DevOps et reconnectez-vous à l’aide du même compte que celui que vous avez utilisé pour vous connecter à votre abonnement Azure.

Obtenir le projet Azure DevOps

Ici, vous vous assurerez que votre organisation Azure DevOps est configurée pour suivre le reste de ce module. Pour ce faire, vous allez exécuter un modèle qui crée un projet dans Azure DevOps.

Les modules de ce parcours d’apprentissage forment une progression. Vous suivez l’équipe web de Tailspin à travers son parcours DevOps. À des fins d’apprentissage, chaque module a son propre projet Azure DevOps.

Exécuter le modèle

Exécutez un modèle qui configure votre organisation Azure DevOps.

Important

Le générateur de démonstration Azure DevOps n’est plus pris en charge, mais vous pouvez toujours l’utiliser pour créer des environnements de démonstration. Il n’y a actuellement aucun remplacement, et ses fonctionnalités ou sa disponibilité peuvent changer dans le futur.

  1. Obtenez et exécutez le projet ADOGenerator dans Visual Studio ou l’IDE de votre choix.

  2. Lorsque vous êtes invité à entrer le numéro de modèle dans la liste des modèles, entrez 39 pour Automatiser les déploiements de conteneurs Docker avec Azure Pipelines, puis appuyez sur Entrée.

  3. Choisissez votre méthode d’authentification. Vous pouvez configurer et utiliser un jeton d’accès personnel (PAT) ou utiliser la connexion de l’appareil.

    Remarque

    Si vous configurez un PAT, veillez à autoriser les scopes nécessaires. Pour ce module, vous pouvez utiliser l’accès complet, mais dans une situation réelle, vous devez vous assurer que vous accordez uniquement les étendues nécessaires.

  4. Entrez le nom de votre organisation Azure DevOps, puis appuyez sur Entrée.

  5. Si vous y êtes invité, entrez votre PAT Azure DevOps, puis appuyez sur Entrée.

  6. Entrez un nom de projet tel que Space Game - web - Docker, puis appuyez sur Entrée.

  7. Une fois votre projet créé, accédez à votre organisation Azure DevOps dans votre navigateur (à https://dev.azure.com/<your-organization-name>/) et sélectionnez le projet.

Dupliquer (fork) le référentiel

Si ce n’est déjà fait, créez une duplication du dépôt mslearn-tailspin-spacegame-web-docker .

  1. Sur GitHub, accédez au dépôt mslearn-tailspin-spacegame-web-docker .

  2. Sélectionnez Fork en haut à droite de l’écran.

  3. Choisissez votre compte GitHub en tant que propriétaire, puis sélectionnez Créer un fork.

Important

Dans ce module, la page Nettoyer votre environnement Azure DevOps contient des étapes de nettoyage importantes. Le nettoyage vous évite de vous retrouver à court de minutes de génération gratuites. Veillez à suivre les étapes de nettoyage même si vous n’allez pas au bout de ce module.

Définir la visibilité de votre projet

Initialement, votre duplication (fork) du référentiel Space Game sur GitHub est définie sur public, et le projet créé par le modèle Azure DevOps sur privé. Un référentiel public sur GitHub est accessible à tout le monde, tandis qu’un référentiel privé n’est accessible qu’à vous et aux personnes avec lesquelles vous choisissez de le partager. De même, sur Azure DevOps, les projets publics fournissent un accès en lecture seule aux utilisateurs non authentifiés ; dans les projets privés à l’inverse, les utilisateurs doivent se voir accorder un accès et une authentification pour pouvoir accéder aux services.

Il n’est pour le moment pas nécessaire de modifier ces paramètres pour les besoins de ce module. Dans le cadre de vos projets personnels toutefois, vous devez déterminer la visibilité et l’accès que vous souhaitez accorder aux autres. Par exemple, si votre projet est open source, vous pouvez décider de rendre publics votre référentiel GitHub et votre projet Azure DevOps. S’il s’agit au contraire d’un projet privé, il sera pertinent de définir votre référentiel GitHub et votre projet Azure DevOps comme privés.

Vous trouverez peut-être les ressources suivantes utiles par la suite pour déterminer la solution la mieux adaptée à votre projet :

Faire passer l’élément de travail à l’état En cours d’exécution

Ici, vous allez affecter un élément de travail à vous-même sur Azure Boards. Vous allez également déplacer l’élément de travail vers l’état Doing . Dans la pratique, vous et votre équipe créez des éléments de travail au début de chaque sprint ou itération de travail.

Cette affectation de travail vous donne une liste de contrôle à partir de laquelle travailler. Il donne à d’autres membres de l’équipe une visibilité sur ce que vous travaillez et sur la quantité de travail restante. L’élément de travail permet également d’appliquer des limites de travail en cours (WIP) afin que l’équipe ne prenne pas trop de travail à la fois.

Ici, vous allez déplacer le premier élément, Créer une version conteneur du site web à l’aide de Docker, vers la colonne Doing , puis vous affecter à l’élément de travail.

Pour configurer l’élément de travail :

  1. À partir d’Azure DevOps, accédez à Boards. Ensuite, sélectionnez Tableaux dans le menu.

    Capture d’écran d’Azure DevOps montrant l’emplacement du menu Boards.

  2. Dans l’élément de travail Créer une version de conteneur du site web à l'aide de Docker, sélectionnez la flèche vers le bas en bas de la carte, puis attribuez l’élément de travail à vous-même.

    Capture d’écran d’Azure Boards montrant l’emplacement de la flèche vers le bas.

  3. Déplacez l’élément de travail de la colonne To Do vers la colonne Do .

    Capture d’écran d’Azure Boards montrant la carte dans la colonne En cours.

À la fin de ce module, vous allez déplacer la carte vers la colonne Terminé une fois la tâche terminée.

Créer l’environnement Azure App Service

Dans ce module, vous allez utiliser Azure CLI pour lancer les ressources nécessaires au déploiement et à l’exécution d’une instance App Service. Vous pouvez accéder à Azure CLI à partir d’un terminal ou via Visual Studio Code.

Important

Vous devez disposer de votre propre abonnement Azure pour effectuer les exercices de ce module.

Lancer Cloud Shell dans le portail Azure

  1. Accédez au portail Azure et connectez-vous.

  2. Sélectionnez Cloud Shell dans la barre de menus, puis sélectionnez l’expérience Bash .

    Capture d’écran du portail Azure montrant l’emplacement de l’élément de menu Cloud Shell.

    Remarque

    Pour conserver les fichiers que vous créez dans Cloud Shell, vous devez disposer d’une ressource de stockage Azure. Quand vous ouvrez Cloud Shell pour la première fois, vous êtes invité à créer un groupe de ressources, un compte de stockage et un partage Azure Files. Cette configuration est automatiquement utilisée pour toutes les futures sessions Cloud Shell.

Sélectionner une région Azure

Une région est un ou plusieurs centres de données Azure situés dans un emplacement géographique particulier. USA Est, USA Ouest et Europe Nord sont quelques exemples de régions. Chaque ressource Azure, telle qu’une instance App Service, est allouée à une région spécifique.

Pour simplifier le processus d’exécution des commandes, commencez par sélectionner une région par défaut. Une fois la région par défaut spécifiée, les commandes suivantes utilisent cette région par défaut, sauf si une autre région est explicitement spécifiée.

  1. Exécutez la commande suivante pour répertorier les régions disponibles pour votre abonnement Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Sélectionnez une région proche de votre emplacement à partir de la colonne Name dans la sortie. Par exemple, vous pouvez choisir eastasia ou westus2.

  3. Exécutez la commande suivante pour définir votre région par défaut. Remplacez l’espace réservé par le nom de la région que vous avez sélectionnée.

    az configure --defaults location=<REGION>
    

    Cet exemple montre comment définir westus2 comme région par défaut :

    az configure --defaults location=westus2
    

Créer des variables Bash

Dans cette section, vous allez créer des variables Bash pour rendre le processus d’installation plus pratique et moins sujette aux erreurs. L’utilisation de variables pour les chaînes de texte partagées permet d’éviter les fautes de frappe accidentelles.

  1. À partir de Cloud Shell, générez un nombre aléatoire. Cela facilite la création de noms globaux uniques pour certains services à l’étape suivante.

    resourceSuffix=$RANDOM
    
  2. Créez des noms globaux uniques pour votre application web App Service et Azure Container Registry. L’utilisation de guillemets doubles dans ces commandes invite Bash à interpoler les variables à l’aide de la syntaxe inline.

    webName="tailspin-space-game-web-${resourceSuffix}"
    registryName="tailspinspacegame${resourceSuffix}"
    
  3. Créez deux variables Bash supplémentaires pour stocker les noms de votre groupe de ressources et de votre plan App Service.

    rgName='tailspin-space-game-rg'
    planName='tailspin-space-game-asp'
    

Création de ressources Azure

Remarque

À des fins d’apprentissage, vous allez ici afficher les paramètres réseau par défaut. Ces paramètres rendent votre site accessible à partir d’Internet. Dans la pratique, vous pouvez configurer un réseau virtuel Azure qui place votre site web dans un réseau qui n’est pas routable sur Internet et que seul vous et votre équipe pouvez accéder. Plus tard, vous pouvez reconfigurer votre réseau pour rendre le site web accessible à vos utilisateurs.

  1. Exécutez la commande suivante az group create pour créer un groupe de ressources à l’aide du nom défini précédemment.

    az group create --name $rgName
    
  2. Exécutez la commande suivante az acr create pour créer un Registre de conteneurs Azure à l’aide du nom défini précédemment.

    az acr create --name $registryName \
      --resource-group $rgName \
      --sku Standard \
      --admin-enabled true
    
  3. Exécutez la commande suivante az appservice plan create pour créer un plan App Service à l’aide du nom défini précédemment.

    az appservice plan create \
      --name $planName \
      --resource-group $rgName \
      --sku B1 \
      --is-linux
    

    L’argument --sku spécifie le plan B1. Ce plan s’exécute sur le niveau Essentiel. L'argument --is-linux spécifie d'utiliser les Workers Linux.

    Important

    Si la référence SKU B1 n’est pas disponible dans votre abonnement Azure, choisissez un autre plan tel que S1 (Standard).

  4. Exécutez la commande suivante az webapp create pour créer l’instance App Service.

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --deployment-container-image-name $registryName.azurecr.io/web:latest
    
  5. Exécutez la commande suivante az webapp list pour répertorier le nom d’hôte et l’état de l’instance App Service.

    az webapp list \
      --resource-group $rgName \
      --query "[].{hostName: defaultHostName, state: state}" \
      --output table
    

    Notez le nom d’hôte du service en cours d’exécution. Vous en aurez besoin ultérieurement lorsque vous vérifiez votre travail. Voici un exemple :

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  6. Exécutez la commande suivante az acr list pour répertorier le serveur de connexion de l’instance Azure Container Registry. Vous aurez besoin de ce nom de serveur lors de la création de variables de pipeline ultérieurement.

    az acr list \
      --resource-group $rgName \
      --query "[].{loginServer: loginServer}" \
      --output table
    

    Notez le serveur de connexion. Vous en aurez besoin ultérieurement lorsque vous configurez le pipeline. Voici un exemple :

    LoginServer
    ---------------------------------
    tailspinspacegame4692.azurecr.io    
    

Important

La page Nettoyer votre environnement Azure DevOps dans ce module contient des étapes de nettoyage importantes. Le nettoyage vous permet de vous assurer que vous n’êtes pas facturé pour les ressources Azure une fois que vous avez terminé ce module. Veillez à effectuer les étapes de nettoyage même si vous n’allez pas au bout de ce module.

Créer des variables de pipeline dans Azure Pipelines

Ici, vous allez ajouter une variable à votre pipeline qui stocke le nom de votre application web dans App Service. En outre, vous allez ajouter le nom de votre Registre de conteneurs Azure.

Vous pouvez coder en dur ces noms dans votre configuration de pipeline, mais si vous les définissez en tant que variables, votre configuration sera plus réutilisable. De plus, si vos noms d’instance changent, vous pouvez mettre à jour les variables et déclencher votre pipeline sans modifier votre configuration.

Pour ajouter les variables :

  1. Dans Azure DevOps, accédez à votre projet Space Game - web - Docker .

  2. Sous Pipelines, sélectionnez Bibliothèque.

    Capture d’écran d’Azure Pipelines montrant l’option de menu Bibliothèque.

  3. Sélectionnez + Groupe de variables.

  4. Sous Propriétés, entrez Release pour le nom du groupe de variables.

  5. Sous Variables, sélectionnez + Ajouter.

  6. Pour le nom de votre variable, entrez WebAppName. Pour la valeur, entrez le nom de l’instance App Service créée ci-dessus, par exemple tailspin-space-game-web-4692.

    Important

    Définissez le nom de l’instance App Service, et non son nom d’hôte. Dans cet exemple, vous devez entrer tailspin-space-game-web-4692 et non tailspin-space-game-web-4692.azurewebsites.net.

  7. Répétez le processus pour ajouter une autre variable nommée RegistryName avec la valeur de votre serveur de connexion Azure Container Registry, par exemple tailspinspacegame4692.azurecr.io. Sélectionnez Enregistrer en haut de la page.

  8. Sélectionnez autorisations de pipeline, puis sélectionnez le + signe pour ajouter un pipeline. Sélectionnez mslearn-tailspin-spacegame-web-docker pour accorder à votre pipeline l’autorisation d’accéder au groupe de variables.

  9. Sélectionnez Enregistrer en haut de la page pour enregistrer vos variables. Votre groupe de variables doit ressembler à ce qui suit :

    Capture d’écran d’Azure Pipeline montrant le groupe de variables. Le groupe contient deux variables.

Créer des connexions de service requises

Ici, vous allez créer une connexion de service qui permet à Azure Pipelines d’accéder à votre abonnement Azure. Azure Pipelines utilise cette connexion de service pour déployer le site web sur App Service. Vous avez créé une connexion de service similaire dans le module précédent. Vous allez également créer une connexion Docker Registry pour publier votre conteneur dans Azure Container Registry.

Important

Vérifiez que vous êtes connecté au portail Azure et à Azure DevOps sous le même compte Microsoft.

  1. Dans Azure DevOps, accédez à votre projet Space Game - web - Docker .

  2. Dans le coin inférieur de la page, sélectionnez Paramètres du projet.

  3. Sous Pipelines, sélectionnez Connexions de service.

  4. Sélectionnez Créer une connexion de service, puis choisissez Azure Resource Manager, puis sélectionnez Suivant.

  5. En haut de la page, inscription d’application (automatique)

  6. Renseignez ces champs :

    Champ Valeur
    Niveau de portée Abonnement
    Abonnement Votre abonnement Azure
    Groupe de ressources tailspin-space-game-rg
    Nom de la connexion de service Resource Manager - Tailspin - Space Game

    Pendant le processus, vous pouvez être invité à vous connecter à votre compte Microsoft.

  7. Assurez-vous que l’option Accorder l’accès à tous les pipelines est sélectionnée.

  8. Sélectionnez Enregistrer.

    Azure DevOps effectue une connexion de test pour vérifier qu’elle peut se connecter à votre abonnement Azure. Si Azure DevOps ne peut pas se connecter, vous avez la possibilité de vous connecter une deuxième fois.

  9. Sélectionnez Nouvelle connexion de service, puis choisissez Registre Docker, puis Sélectionnez Suivant.

  10. En haut de la page, sélectionnez Azure Container Registry.

  11. Sélectionnez Principal de service pour le type d’authentification.

  12. Renseignez ces champs :

    Champ Valeur
    Abonnement Votre abonnement Azure
    Registre de conteneurs Azure Sélectionnez celui que vous avez créé précédemment
    Nom de la connexion de service Connexion au registre de conteneurs
  13. Assurez-vous que l’option Accorder l’accès à tous les pipelines est sélectionnée.

  14. Sélectionnez Enregistrer lorsque vous avez terminé.