Exercice - Configurer votre environnement Azure DevOps
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
Exécutez un modèle qui configure votre organisation Azure DevOps :
À 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.
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.
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.
Sélectionnez Create Project.
L’exécution du modèle prend quelques instants.
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 :
- Utiliser des projets privés et publics
- Démarrage rapide : Rendre public votre projet privé
- Définition de la visibilité du dépôt
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.
Dans Azure DevOps, accédez à la catégorie Boards, puis sélectionnez Boards dans le menu.
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.
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.
L’élément de travail est déplacé de la colonne À faire vers 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
Connectez-vous au portail Azure.
Dans les contrôles globaux de l’en-tête de page, sélectionnez Cloud Shell.
Un terminal s’ouvre et se connecte à Azure Cloud Shell.
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.
À 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
Dans la colonne
Name
de la sortie, choisissez une région proche de vous. Par exemple, choisissezeastasia
ouwestus2
.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.
À 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
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}"
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.
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
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).
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"
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
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>
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
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
Copiez ces deux noms d’hôte à un emplacement auquel vous pouvez facilement accéder par la suite.
É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.
Votre projet Space Game - web - Azure Functions doit être ouvert dans Azure DevOps.
Dans le menu, sélectionnez Pipelines, puis sous Pipelines sélectionnez Bibliothèque. Le volet Bibliothèque s’affiche.
Dans la barre de commandes ou au milieu du volet, sélectionnez Groupe de variables. La page Nouveau groupe de variables s’affiche.
Pour le nom du groupe de variables, entrez Release.
Sous Variables, sélectionnez Ajouter.
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.
Ajoutez une autre variable nommée LeaderboardAppName avec la valeur de nom de votre instance Leaderboard, par exemple tailspin-space-game-leaderboard-4692.
Ajoutez une dernière variable nommée ResourceGroupName avec la valeur tailspin-space-game-rg.
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 :
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.
Dans le menu Azure DevOps, sous Pipelines, sélectionnez Environnements.
Sélectionnez Créer un environnement. Le volet Nouvel environnement s’affiche.
Pour Nom, entrez spike.
Laissez les valeurs par défaut dans les champs restants.
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.
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.
Dans le menu, sous Pipelines, sélectionnez Connexions de service.
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.
Dans le volet Nouvelle connexion de service, sélectionnez Principal de service (automatique), puis Suivant.
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.
Vérifiez que l’option Accorder une autorisation d’accès à tous les pipelines est sélectionnée.
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.