Exercice : Configurer votre environnement

Effectué

Important

Vous avez besoin de votre propre abonnement Azure pour exécuter cet exercice et des frais pourraient vous être facturés. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Avant de commencer à travailler sur le workflow du site web de votre entreprise de jouets, vous devez configurer votre environnement. Dans cette unité, vous vérifiez que vos environnements Azure et GitHub sont configurés pour les étapes restantes de ce module.

Pour atteindre ces objectifs, vous allez :

  • Configurer un dépôt GitHub pour ce module.
  • Cloner le dépôt du projet sur votre ordinateur.
  • Créez deux identités de charge de travail dans Microsoft Entra ID.
  • Créer deux groupes de ressources dans Azure.
  • Créer des secrets et environnements dans GitHub.

Accéder au dépôt GitHub

Ici, vous vérifiez que le référentiel GitHub est configuré pour les étapes restantes de ce module. Vous le configurez en créant un dépôt basé sur un dépôt de modèles. Le dépôt de modèles contient les fichiers dont vous avez besoin pour commencer à utiliser ce module.

Les modules de ce parcours d’apprentissage font partie d’une progression. Pour les besoins de l’apprentissage, chaque module est associé à un dépôt de modèles GitHub.

Conseil

Même si vous avez terminé le module précédent du parcours d’apprentissage, suivez ces instructions pour créer un nouveau référentiel en veillant à lui donner un nouveau nom.

Démarrer à partir du dépôt de modèles

Exécutez un modèle qui configure votre dépôt GitHub.

Sur le site GitHub, effectuez les étapes suivantes pour créer un dépôt à partir du modèle :

  1. Sélectionnez Utiliser ce modèle>Créer un dépôt.

    Capture d’écran de l’interface GitHub montrant le dépôt de modèles, avec le bouton « Utiliser ce modèle » mis en évidence.

  2. Sélectionnez votre nom d’utilisateur GitHub dans la liste déroulante Propriétaire.

  3. Entrez un nom de dépôt pour votre nouveau projet, par exemple, toy-website-end-to-end.

  4. Sélectionnez l’option Public.

    Si vous créez vos propres dépôts, vous souhaiterez peut-être les rendre privés. Dans ce module, vous allez travailler avec certaines fonctionnalités GitHub qui sont disponibles uniquement avec les dépôts publics et les comptes GitHub Enterprise.

  5. Cliquez sur Create repository (Créer le dépôt).

    Capture d’écran de l’interface GitHub montrant la page de création du dépôt.

Important

L’exercice final de ce module contient des étapes de nettoyage importantes. Veillez à suivre les étapes de nettoyage même si vous n’allez pas au bout de ce module.

Cloner le référentiel

Vous avez maintenant une copie du dépôt de modèles dans votre propre compte. Vous allez maintenant cloner ce dépôt localement pour pouvoir commencer à y travailler.

  1. Sélectionnez Code et sélectionnez l’icône de copie.

    Capture d’écran de l’interface GitHub montrant le nouveau dépôt, avec le bouton de copie de l’URL du dépôt mis en évidence.

  2. Ouvrez Visual Studio Code.

  3. Ouvrez une fenêtre de terminal Visual Studio Code en sélectionnant Terminal>Nouveau terminal. Elle s’ouvre généralement en bas de l’écran.

  4. Dans le terminal, accédez au répertoire dans lequel vous souhaitez cloner le référentiel GitHub sur votre ordinateur local. Par exemple, pour cloner le dépôt dans le dossier toy-website-environments, exécutez la commande suivante :

    cd toy-website-end-to-end
    
  5. Tapez git clone, puis collez l’URL que vous avez copiée précédemment. La commande doit ressembler à ceci :

    git clone https://github.com/mygithubuser/toy-website-end-to-end.git
    
  6. Rouvrez Visual Studio Code dans le dossier du dépôt en exécutant la commande suivante à partir du terminal Visual Studio Code :

    code -r toy-website-end-to-end
    

Connexion à Azure

Pour utiliser des groupes de ressources dans Azure, connectez-vous à votre compte Azure à partir du terminal Visual Studio Code. Veillez à installer les outils Azure CLI.

  1. Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.

    L’interpréteur de commandes par défaut est généralement pwsh, comme indiqué sur le côté droit de la fenêtre de terminal.

    Capture d’écran de la fenêtre de terminal de Visual Studio Code, dans laquelle pwsh est l’option d’interpréteur de commandes.

  2. Sélectionnez la liste déroulante Lancer le profil, puis sélectionnez Azure Cloud Shell (Bash).

    Capture d’écran de la fenêtre du terminal Visual Studio Code. La liste déroulante de l’interpréteur de commandes de terminal et l’élément de menu Azure Cloud Shell (Bash) sont affichés.

    Un nouvel interpréteur de commandes s’ouvre.

Connexion à Azure avec Azure CLI

  1. Dans le terminal Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure :

    az login
    
  2. Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.

Pour utiliser des groupes de ressources dans Azure, connectez-vous à votre compte Azure à partir du terminal Visual Studio Code. Vérifiez que vous avez installé Azure PowerShell.

  1. Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.

    L’interpréteur de commandes par défaut est généralement pwsh, comme indiqué sur le côté droit de la fenêtre de terminal.

    Capture d’écran de la fenêtre de terminal de Visual Studio Code, dans laquelle pwsh est l’option d’interpréteur de commandes.

  2. Sélectionnez la liste déroulante Lancer le profil, puis sélectionnez Azure Cloud Shell (PowerShell).

    Capture d’écran de la fenêtre du terminal Visual Studio Code. La liste déroulante de l’interpréteur de commandes de terminal et l’élément de menu Azure Cloud Shell (PowerShell) sont affichés.

    Un nouvel interpréteur de commandes s’ouvre.

Connectez-vous à Azure en utilisant Azure PowerShell

  1. Dans le terminal Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure :

    Connect-AzAccount
    
  2. Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.

Créer deux identités de charge de travail

Créez ensuite deux identités de charge de travail dans Microsoft Entra ID : un pour votre environnement de test et un autre pour votre environnement de production.

  1. Exécutez le code suivant pour définir des variables pour votre nom d’utilisateur GitHub et votre nom de dépôt. Assurez-vous de remplacer mygithubuser par votre nom d’utilisateur GitHub, noté précédemment dans cet exercice. Vérifiez également que vous spécifiez le nom correct du référentiel GitHub.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-end-to-end'
    
  2. Créez une identité de charge de travail pour les déploiements dans votre environnement de test. L’identité de charge de travail a besoin de deux informations d’identification fédérées : l’une est utilisée lorsque le workflow exécute le travail de validation, car ce travail n’est pas associé à un environnement GitHub. L’autre est utilisée quand le workflow exécute le travail de déploiement, qui s’exécute sur l’environnement GitHub Test.

    testApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-test')
    testApplicationRegistrationObjectId=$(echo $testApplicationRegistrationDetails | jq -r '.id')
    testApplicationRegistrationAppId=$(echo $testApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Test\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $testApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-test-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  3. Exécutez le code suivant, qui crée une identité de charge de travail similaire et des informations d’identification fédérées pour l’environnement de production :

    productionApplicationRegistrationDetails=$(az ad app create --display-name 'toy-website-end-to-end-production')
    productionApplicationRegistrationObjectId=$(echo $productionApplicationRegistrationDetails | jq -r '.id')
    productionApplicationRegistrationAppId=$(echo $productionApplicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Production\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $productionApplicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-end-to-end-production-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Exécutez le code suivant pour définir des variables pour votre nom d’utilisateur GitHub et votre nom de dépôt. Assurez-vous de remplacer mygithubuser par votre nom d’utilisateur GitHub, noté précédemment dans cet exercice. Vérifiez également que vous spécifiez le nom correct du référentiel GitHub.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-end-to-end'
    
  2. Exécutez le code suivant, qui crée une identité de charge de travail pour l’environnement de test et l’associe à votre dépôt GitHub :

    $testApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-test'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Test"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-test-branch' `
       -ApplicationObjectId $testApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    
  3. Exécutez le code suivant, qui suit un processus similaire pour l’environnement de production :

    $productionApplicationRegistration = New-AzADApplication -DisplayName 'toy-website-end-to-end-production'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Production"
    New-AzADAppFederatedCredential `
       -Name 'toy-website-end-to-end-production-branch' `
       -ApplicationObjectId $productionApplicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Créer deux groupes de ressources dans Azure et accorder l’accès aux identités de charge de travail

Ensuite, créez un groupe de ressources pour chaque environnement. Ce processus accorde également à l’identité de charge de travail respective le rôle de Contributeur sur votre groupe de ressources, ce qui permet à votre workflow d’effectuer des déploiements sur le groupe de ressources.

  1. Pour créer le groupe de ressources de l’environnement de test et accorder l’accès aux identités de charge de travail, exécutez les commandes Azure CLI suivantes dans le terminal Visual Studio Code :

    testResourceGroupResourceId=$(az group create --name ToyWebsiteTest --location westus3 --query id --output tsv)
    
    az ad sp create --id $testApplicationRegistrationObjectId
    az role assignment create \
       --assignee $testApplicationRegistrationAppId \
       --role Contributor \
       --scope $testResourceGroupResourceId
    
  2. Répétez le processus pour créer le groupe de ressources de l’environnement de production :

    productionResourceGroupResourceId=$(az group create --name ToyWebsiteProduction --location westus3 --query id --output tsv)
    
    az ad sp create --id $productionApplicationRegistrationObjectId
    az role assignment create \
       --assignee $productionApplicationRegistrationAppId \
       --role Contributor \
       --scope $productionResourceGroupResourceId
    
  1. Pour créer le groupe de ressources de l’environnement de test et accorder l’accès aux identités de charge de travail, exécutez les commandes Azure PowerShell suivantes dans le terminal Visual Studio Code :

    $testResourceGroup = New-AzResourceGroup -Name ToyWebsiteTest -Location westus3
    
    New-AzADServicePrincipal -AppId $($testApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($testApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($testResourceGroup.ResourceId)
    
  2. Répétez le processus pour créer le groupe de ressources de l’environnement de production :

    $productionResourceGroup = New-AzResourceGroup -Name ToyWebsiteProduction -Location westus3
    
    New-AzADServicePrincipal -AppId $($productionApplicationRegistration.AppId)
    New-AzRoleAssignment `
       -ApplicationId $($productionApplicationRegistration.AppId) `
       -RoleDefinitionName Contributor `
       -Scope $($productionResourceGroup.ResourceId)
    

Préparer les secrets GitHub

Exécutez le code suivant pour sortir les valeurs que vous devez créer en tant que secrets GitHub :

echo "AZURE_CLIENT_ID_TEST: $testApplicationRegistrationAppId"
echo "AZURE_CLIENT_ID_PRODUCTION: $productionApplicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID_TEST: $($testApplicationRegistration.AppId)"
Write-Host "AZURE_CLIENT_ID_PRODUCTION: $($productionApplicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

Créer des secrets GitHub

Vous avez créé deux identités de charge de travail et des groupes de ressources sur lesquels elles peuvent être déployées. Créez ensuite un secret dans GitHub Actions.

  1. Dans votre navigateur, accédez à votre référentiel GitHub.

  2. Sélectionnez Paramètres>Secrets et variables>Actions.

  3. Sélectionnez New repository secret (Nouveau secret de dépôt).

    Capture d’écran de l’interface GitHub montrant la page Secrets, avec le bouton Créer un secret de référentiel en évidence.

  4. Nommez le secret AZURE_CLIENT_ID_TEST.

  5. Dans le champ Valeur, collez le GUID à partir de la première ligne de la sortie du terminal. N’incluez pas AZURE_CLIENT_ID_TEST, les deux-points ni aucun espace dans la valeur.

  6. Sélectionnez Ajouter un secret.

    Capture d’écran de l’interface GitHub montrant la page Nouveau secret, avec le nom et la valeur complétés et le bouton Ajouter un secret mis en évidence.

  7. Répétez le processus pour créer les secrets pour AZURE_CLIENT_ID_PRODUCTION, AZURE_TENANT_ID et AZURE_SUBSCRIPTION_ID, en copiant les valeurs des champs correspondants dans la sortie du terminal.

  8. Vérifiez que votre liste de secrets affiche désormais les quatre secrets.

    Capture d’écran de l’interface GitHub montrant la liste des secrets, notamment les secrets de test et de production.

Créer des environnements dans GitHub

  1. Dans votre navigateur, accédez à Paramètres>Environnements.

  2. Sélectionnez Nouvel environnement.

    Capture d’écran de l’interface GitHub montrant la page Environments et le bouton de création d’un environnement.

  3. Entrez Test comme nom d’environnement.

    Capture d’écran de la page GitHub pour un nouvel environnement nommé Test, avec le bouton Configure environment.

  4. Sélectionnez Configurer l’environnement.

  5. Sélectionnez Environments pour revenir à la liste des environnements.

    Capture d’écran de la page GitHub pour un nouvel environnement nommé Test, avec le lien Environment.

  6. Répétez le processus pour créer un autre environnement nommé Production.

Notes

Dans les modules précédents de ce parcours d’apprentissage, vous avez ajouté une règle de protection à votre environnement de production. Dans ce module, pour des raisons de simplicité, vous ignorez la règle de protection. Toutefois, vous pouvez ajouter la règle de protection vous-même si vous le souhaitez.