Exercice - Configurer votre environnement Azure DevOps

Effectué

Dans cette section, vous allez découvrir comment configurer votre organisation Azure DevOps et créer l’environnement Azure App Service dans lequel vous allez déployer.

Vous découvrirez comment effectuer les actions suivantes :

  • Configurez votre projet Azure DevOps.
  • Gérez vos éléments de travail avec Azure Boards.
  • Créez votre environnement Azure App Service.
  • Créer des variables de pipeline dans Azure Pipelines.
  • Créez une connexion de service pour vous authentifier avec 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’un abonnement Azure pour utiliser Azure DevOps, mais dans ce module, vous allez utiliser Azure DevOps pour effectuer un déploiement sur des ressources Azure. Pour simplifier le processus, utilisez le même compte Microsoft pour vous connecter à Azure et à Azure DevOps.

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

Ensuite, déconnectez-vous d’Azure DevOps et reconnectez-vous en utilisant le 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 cela, 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. 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 Azure DevOps Demo Generator, suivez ces étapes pour exécuter le modèle :

  1. Sélectionnez Sign In et acceptez les conditions d’utilisation.

  2. Dans la page Create New Project, sélectionnez votre organisation Azure DevOps. Entrez un nom de projet comme Space Game - web - Docker.

    Screenshot of creating a project through Azure DevOps Demo Generator.

  3. Sélectionnez Yes, I want to fork this repository>Authorize. Si vous y êtes invité, autorisez l’accès à votre compte GitHub.

    Important

    Vous devez sélectionner cette option pour que le modèle se connecte à votre dépôt GitHub. Veillez à cocher la case même si vous avez déjà dupliqué le dépôt Space Game. Le modèle utilise votre duplication (fork) existante.

  4. Sélectionnez Create Project.

  5. Sélectionnez Navigate to project pour accéder à votre projet dans Azure DevOps.

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 vous attribuer un élément de travail sur Azure Boards. Vous allez également faire passer l’élément de travail à l’état En cours d’exécution. 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.

Cette assignation de travail vous procure une check-list de départ. 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.

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

Pour configurer l’élément de travail :

  1. Dans Azure DevOps, accédez à Tableaux. Sélectionnez ensuite Tableaux dans le menu.

    Screenshot of Azure DevOps showing the location of the Boards menu.

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

    Screenshot of Azure Boards showing the location of the down arrow.

  3. Déplacez l’élément de travail de la colonne À faire vers la colonne En cours d’exécution.

    Screenshot of Azure Boards showing the card in the Doing column.

À la fin de ce module, vous déplacerez la carte vers la colonne Terminé après avoir terminé la tâche.

Créer l’environnement Azure App Service

Dans le module Créer un pipeline de mise en production avec Azure Pipelines, vous avez créé une instance App Service à l’aide du Portail Azure. Bien que le portail soit un excellent outil pour explorer les offres Azure, la configuration de composants comme App Service peut devenir fastidieuse.

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, de 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 le Cloud Shell dans la barre de menus, puis l’expérience Bash.

    Screenshot of the Azure portal showing the location of the Cloud Shell menu item.

    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 correspond à 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, comme 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 qui se trouve à proximité de votre emplacement dans la colonne Nom 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 définit westus2 en tant que 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 de configuration plus pratique et moins sujet aux erreurs. L’utilisation de variables pour des 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 facilitera 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 votre registre de conteneurs Azure. En utilisant des guillemets doubles dans ces commandes, Bash est invité à 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 le nom de votre groupe de ressources et celui 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 utiliser ici 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 sur un réseau qui n’est pas routable sur Internet et auquel vous et votre équipe êtes les seuls à pouvoir accéder. Par la suite, vous pouvez reconfigurer votre réseau 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 acr create suivante pour créer un registre de conteneurs Azure en utilisant le nom défini précédemment.

    az acr create --name $registryName \
      --resource-group $rgName \
      --sku Standard \
      --admin-enabled true
    
  3. Exécutez la commande az appservice plan create suivante pour créer un plan App Service en utilisant le 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 De base. 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, par exemple S1 (Standard).

  4. 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 \
      --deployment-container-image-name $registryName.azurecr.io/web:latest
    
  5. 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 du service en cours d’exécution. Vous en aurez besoin plus tard lors de la vérification de votre travail. Voici un exemple :

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

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

    Notez le serveur de connexion. Vous en aurez besoin plus tard lors de la configuration du pipeline. Voici un exemple :

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

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. Vous allez faire la même chose ici. Vous allez également ajouter le nom de votre registre de conteneurs Azure.

Vous pourriez coder en dur ces noms dans la configuration de votre pipeline, mais si vous les définissez comme variables, votre configuration sera plus facilement réutilisable. En outre, si les noms de vos instances 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.

    Screenshot of Azure Pipelines showing the Library menu option.

  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 précédemment, à savoir tailspin-space-game-web-4692.

    Important

    Définissez le nom de l’instance App Service et pas son nom d’hôte. Dans cet exemple, vous entreriez 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.

  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 :

    Screenshot of Azure Pipeline showing the variable group. The group contains two variables.

Créer les connexions de service nécessaires

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. Vous allez également créer une connexion au registre Docker pour publier votre conteneur dans le registre de conteneurs Azure.

Important

Vérifiez que vous êtes connecté au portail Azure et à Azure DevOps avec 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 Nouvelle connexion de service, choisissez Azure Resource Manager, puis sélectionnez Suivant.

  5. Dans la partie supérieure de la page, sélectionnez Principal de service (automatique). Sélectionnez ensuite Suivant.

  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. Vérifiez que l’option Accorder une autorisation d’accès à tous les pipelines est sélectionnée.

  8. 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 seconde fois.

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

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

  11. Renseignez ces champs :

    Champ Valeur
    Abonnement Votre abonnement Azure
    Registre de conteneurs Azure Sélectionnez celui créé précédemment
    Nom de la connexion de service Connexion au registre de conteneurs
  12. Vérifiez que l’option Accorder une autorisation d’accès à tous les pipelines est sélectionnée.

  13. Lorsque vous avez terminé, sélectionnez Enregistrer.