Exercice - Configurer votre environnement Azure DevOps

Effectué

Dans cette leçon, vous allez vérifier que votre organisation Azure DevOps est configurée pour effectuer le reste de ce module. Vous allez aussi créer les environnements Azure App Service dans lesquels vous effectuerez le déploiement.

Pour atteindre ces objectifs, vous :

  • Ajoutez un utilisateur pour permettre à Azure DevOps de se connecter à votre abonnement Azure.
  • Configurez un projet Azure DevOps pour ce module.
  • Dans Azure Boards, déplacer l’élément de travail de ce module dans la colonne En cours d’exécution.
  • Vérifier que votre projet est configuré localement pour pouvoir pousser les modifications vers le pipeline.
  • Créer l’application Azure App Service et Azure Functions en utilisant Azure CLI dans Azure Cloud Shell.
  • Créer des variables de pipeline qui définissent les noms de votre instance App Service et Azure Functions.
  • Créer une connexion de service qui permet à Azure Pipelines d’accéder de manière sécurisée à votre abonnement Azure.

Ajouter un utilisateur à Azure DevOps

Pour effectuer ce module, vous devez avoir votre propre abonnement Azure. Vous pouvez commencer à utiliser Azure gratuitement.

Vous n’avez pas besoin d’abonnement Azure pour utiliser Azure DevOps. Toutefois, cet exercice utilise Azure DevOps pour effectuer un déploiement dans des ressources de votre abonnement Azure. Pour simplifier le processus, utilisez le même compte Microsoft pour vous connecter à votre abonnement Azure et à votre organisation Azure DevOps.

Important

Si vous vous connectez avec différents comptes, vous devez ajouter un utilisateur à 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. Quand vous ajoutez l’utilisateur, choisissez le niveau d’accès De base.

Ensuite, déconnectez-vous d’Azure DevOps et connectez-vous avec le nouveau compte d’utilisateur. Utilisez le compte Microsoft que vous utilisez pour vous connecter à votre abonnement Azure.

Obtenir le projet Azure DevOps

Vérifiez que votre organisation Azure DevOps est configurée pour effectuer les étapes restantes de ce module. Pour cela, vous allez exécuter un modèle qui crée un projet dans Azure DevOps.

Tout au long des modules de ce parcours d’apprentissage, vous suivez la progression de l’équipe web de Tailspin avec DevOps. Pour les besoins de cette formation, chaque module est associé à un projet Azure DevOps spécifique.

Exécuter le modèle

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

  2. À partir du site du générateur de démonstration Azure DevOps, sélectionnez Se connecter. Si vous y êtes invité, acceptez les conditions d’utilisation. La page Créer un projet s’affiche.

  3. Dans la page Créer un projet, entrez un nom de projet, comme Space Game - web - Azure Functions. Pour Sélectionner une organisation, sélectionnez l’organisation que vous utilisez pour votre abonnement Azure.

    Capture d'écran d'Azure DevOps Demo Generator montrant comment créer le projet.

  4. Dans la section suivante, sélectionnez Oui, je veux dupliquer (fork) ce dépôt, puis Autoriser.

    Si une fenêtre apparaît, autorisez l’accès à votre compte GitHub.

    Important

    Il est nécessaire d’activer cette option de duplication pour que le modèle se connecte à votre dépôt GitHub. Sélectionnez-la même si vous avez déjà dupliqué le projet de site web Space Game. Le modèle utilise votre duplication (fork) existante.

  5. Sélectionnez Create Project.

    L’exécution du modèle prend quelques instants.

  6. Une fois que le projet est provisionné avec succès, sélectionnez Accédez au projet pour accéder à votre projet dans Azure DevOps.

Important

La page Nettoyer votre environnement Azure DevOps de ce module contient des étapes importantes que vous devez effectuer, même si vous n’effectuez pas ce module en totalité. Le nettoyage vous évite de vous retrouver à court de minutes de génération gratuites.

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 :

Attribuer un élément de travail et le déplacer à l’état En cours

Ici, vous allez vous attribuer un élément de travail sur Azure Boards et vous définissez l’état de l’élément de travail sur En cours. Dans la pratique, vous et votre équipe créeriez des éléments de travail au début de chaque sprint ou itération de travail.

Cet exercice crée une check-list à partir de laquelle travailler. Celle-ci permet aux autres membres de l’équipe de voir sur quoi vous travaillez et la quantité de travail restante. L’élément de travail permet aussi de mettre en place des limites de type Travail en cours (TEC) pour ne pas endosser trop de travail à la fois.

  1. Dans Azure DevOps, accédez à la catégorie Boards, puis sélectionnez Boards dans le menu.

    Azure DevOps montrant l’emplacement du menu Tableaux.

  2. Ouvrez l’élément de travail Refactoriser l’API Leaderboard en tant qu’application Azure Functions en sélectionnant le titre. Attribuez-vous cet élément de travail à vous-même, puis sélectionnez Enregistrer et fermer.

  3. Sélectionnez la flèche vers le bas en bas de la carte et sélectionnez En cours ou sélectionnez la carte et faites-la glisser vers la colonne En cours.

    Capture d’écran de la carte d’élément de travail mettant en évidence l’emplacement de la flèche vers le bas.

  4. L’élément de travail est déplacé de la colonne À faire vers la colonne En cours.

    Capture d’écran d’Azure Boards mettant en évidence la carte d’élément de travail dans la colonne En cours.

À la fin de ce module, vous déplacerez la carte vers la colonne Terminé une fois que vous aurez terminé la tâche.

Créer les environnements Azure App Service et Azure Functions

Ici, vous allez créer l’application App Service et Azure Functions nécessaire au déploiement de la nouvelle version du site et de l’API.

Dans le module Learn Créer un pipeline de mise en production avec Azure Pipelines, vous avez préparé App Service à l’aide du portail Azure. Même si le portail est un excellent moyen de déterminer ce qui est disponible dans Azure ou d’effectuer des tâches de base, il peut être fastidieux de faire apparaître des composants comme App Service.

Dans ce module, vous allez utiliser Azure CLI pour faire apparaître une instance App Service. Vous pouvez accéder à Azure CLI à partir d’un terminal, de Visual Studio Code Ici, nous allons accéder à l’interface Azure CLI à partir d’Azure Cloud Shell. Cette expérience d’interpréteur de commandes sur navigateur est hébergée dans le cloud. Dans Cloud Shell, Azure CLI est configurée pour être utilisée avec votre abonnement Azure.

Important

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

Afficher Cloud Shell via le portail Azure

  1. Connectez-vous au portail Azure.

  2. Dans les contrôles globaux de l’en-tête de page, sélectionnez Cloud Shell.

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

    Un terminal s’ouvre et se connecte à Azure Cloud Shell.

  3. Si nécessaire, sélectionnez Bash dans le menu Terminal.

    Notes

    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 représente un ou plusieurs centres de données Azure dans une localisation géographique. USA Est, USA Ouest et Europe Nord sont des exemples de régions. Une région est affectée à chaque ressource Azure, notamment à une instance App Service.

Pour faciliter l’exécution des commandes, commencez par définir une région par défaut. Une fois la région par défaut spécifiée, les commandes que vous entrez utilisent cette région tant que vous n’en spécifiez pas une autre.

  1. À partir de Cloud Shell, exécutez la commande az account list-locations suivante pour lister les régions disponibles dans votre abonnement Azure :

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Dans la colonne Name de la sortie, choisissez une région proche de vous. Par exemple, choisissez eastasia ou westus2.

  3. Exécutez az configure pour définir votre région par défaut. Remplacez <REGION> par le nom de la région que vous avez choisie.

    az configure --defaults location=<REGION>
    

    Dans cet exemple, westus2 est défini comme région par défaut :

    az configure --defaults location=westus2
    

Créer des variables Bash

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

  1. À partir de Cloud Shell, générez un nombre aléatoire que nous allons utiliser pour créer des noms globaux uniques pour certains services à l’étape suivante.

    resourceSuffix=$RANDOM
    
  2. Créez trois noms globaux uniques pour votre App Service, votre fonction Azure et vos comptes de stockage. Ces commandes utilisent des guillemets doubles, qui indiquent à Bash de résoudre les variables à l’aide de la syntaxe inline.

    webName="tailspin-space-game-web-${resourceSuffix}"
    leaderboardName="tailspin-space-game-leaderboard-${resourceSuffix}"
    storageName="tailspinspacegame${resourceSuffix}"
    
  3. Créez deux variables Bash supplémentaires pour stocker le nom de votre groupe de ressources et le nom de votre plan de service.

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

Créer les ressources Azure nécessaires

Cette solution nécessite plusieurs ressources Azure pour le déploiement, que nous allons créer maintenant.

Notes

Cet exercice utilise les paramètres réseau par défaut, afin que votre site soit accessible à partir d’Internet. Dans la pratique, vous pouvez configurer un réseau virtuel Azure pour placer votre site web dans un réseau auquel seul vous et votre équipe avez accès. Par la suite, vous pouvez reconfigurer votre réseau virtuel pour rendre le site web accessible à vos utilisateurs.

  1. Exécutez la commande az group create suivante pour créer un groupe de ressources en utilisant le nom défini précédemment :

    az group create --name $rgName
    
  2. Exécutez la commande az appservice plan create suivante pour créer un plan App Service en utilisant le nom défini dans la tâche précédente :

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

    Le paramètre --sku spécifie le plan B1. Ce plan s’exécute sur le niveau De base. Le paramètre --is-linux spécifie les Workers Linux (threads utilisés dans la planification des événements et des tâches).

    Important

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

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

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --runtime "DOTNETCORE|6.0"
    
  4. Azure Functions a besoin d’un compte de stockage pour le déploiement. Exécutez la commande az storage account create suivante pour le créer :

    az storage account create \
      --name $storageName \
      --resource-group $rgName \
      --sku Standard_LRS
    
  5. Exécutez la commande az functionapp create suivante pour créer l’instance d’application Azure Functions. Remplacez la <region> par la région de votre choix.

    az functionapp create \
      --name $leaderboardName \
      --resource-group $rgName \
      --storage-account $storageName \
      --functions-version 4 \
      --consumption-plan-location <region>
    
  6. Exécutez la commande az webapp list suivante pour afficher 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 de votre service en cours d’exécution. Cela doit ressembler à l’exemple suivant, mais l’identificateur de nombre aléatoire est différent. Vous aurez besoin du nom d’hôte web par la suite au moment de vérifier votre travail.

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  7. Exécutez la commande az functionapp list suivante pour lister le nom d’hôte et l’état de l’instance Azure Functions.

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

    Notez le nom d’hôte de votre service en cours d’exécution. Cela doit ressembler à l’exemple suivant, mais l’identificateur de nombre aléatoire est différent. Vous aurez besoin du nom d’hôte du leaderboard au moment de vérifier votre travail.

    HostName                                                State
    ------------------------------------------------------  -------
    tailspin-space-game-leaderboard-4692.azurewebsites.net  Running
    
  8. Copiez ces deux noms d’hôte à un emplacement auquel vous pouvez facilement accéder par la suite.

  9. Éventuellement, ouvrez un navigateur et entrez un nom d’hôte pour vérifier qu’il est en cours d’exécution. La page d’accueil par défaut s’affiche.

Important

La page Nettoyer votre environnement Azure DevOps de ce module contient des étapes de nettoyage importantes. Le nettoyage est la garantie qu’aucune ressource Azure ne vous sera facturée une fois ce module terminé. 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

Dans le module Créer un pipeline de mise en production avec Azure Pipelines, vous avez ajouté à votre pipeline une variable qui stocke le nom de votre application web dans App Service. C’est ce que vous allez faire ici. Vous allez aussi ajouter le nom de votre application leaderboard pour l’instance Azure Functions.

Vous pourriez coder en dur ces noms dans la configuration de votre pipeline, mais si vous les définissez en tant que variables, votre configuration sera plus facile à réutiliser. De plus, si les noms de vos instances changent, vous pourrez mettre à jour les variables et déclencher votre pipeline sans modifier votre configuration.

Ajoutons un groupe de variables à votre projet.

  1. Votre projet Space Game - web - Azure Functions doit être ouvert dans Azure DevOps.

  2. Dans le menu, sélectionnez Pipelines, puis sous Pipelines sélectionnez Bibliothèque. Le volet Bibliothèque s’affiche.

    Capture d’écran du menu Azure DevOps mettant en évidence l’option Bibliothèque sous Pipelines.

  3. Dans la barre de commandes ou au milieu du volet, sélectionnez Groupe de variables. La page Nouveau groupe de variables s’affiche.

  4. Pour le nom du groupe de variables, entrez Release.

  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 pour votre application web, comme tailspin-space-game-web-4692.

    Important

    Définissez le nom de l’instance App Service et pas son nom d’hôte complet. Dans cet exercice par exemple, tailspin-space-game-web-4692 est la partie instance du nom d’hôte tailspin-space-game-web-4692.azurewebsites.net.

  7. Ajoutez une autre variable nommée LeaderboardAppName avec la valeur de nom de votre instance Leaderboard, par exemple tailspin-space-game-leaderboard-4692.

  8. Ajoutez une dernière variable nommée ResourceGroupName avec la valeur tailspin-space-game-rg.

  9. Dans la barre de commandes en haut de la page, sélectionnez Enregistrer pour enregistrer votre groupe de variables Version dans le pipeline.

    Les variables de votre groupe de variables doivent être similaires :

    Capture d'écran d'Azure Pipelines illustrant le groupe de variables. Le groupe contient trois variables.

Créer l'environnement spike

Dans les modules précédents, vous avez créé des environnements pour les environnements de développement, de test et de préproduction (Dev, Test et Staging). C’est ce que vous allez faire ici. Cette fois, vous allez créer un environnement nommé spike.

  1. Dans le menu Azure DevOps, sous Pipelines, sélectionnez Environnements.

    Capture d'écran d'Azure Pipelines montrant l'emplacement de l'option de menu Environnements.

  2. Sélectionnez Créer un environnement. Le volet Nouvel environnement s’affiche.

  3. Pour Nom, entrez spike.

  4. Laissez les valeurs par défaut dans les champs restants.

  5. Sélectionnez Créer.

Créer une connexion de service

Vous allez créer ici 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 dans App Service. Vous avez créé une connexion de service similaire dans le module précédent.

Important

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

  1. Dans Azure DevOps, dans le projet de pipeline Space Game - web - Azure Functions, sous le menu, sélectionnez Paramètres du projet. Le volet Détails du projet s’affiche.

  2. Dans le menu, sous Pipelines, sélectionnez Connexions de service.

  3. Sur la page Connexions de service, sélectionnez Nouvelle connexion de service, puis dans le volet Nouvelle connexion de service, sélectionnez Azure Resource Manager, puis cliquez sur Suivant.

  4. Dans le volet Nouvelle connexion de service, sélectionnez Principal de service (automatique), puis Suivant.

  5. Dans le volet Nouvelle connexion de service Azure, sélectionnez ou entrez les paramètres suivants :

    Champ Valeur
    Niveau de portée Abonnement
    Abonnement Sélectionnez 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.

  6. Vérifiez que l’option Accorder une autorisation d’accès à tous les pipelines est sélectionnée.

  7. Sélectionnez Enregistrer.

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