Exercice : Configurer votre environnement
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 :
Sélectionnez Utiliser ce modèle>Créer un dépôt.
Sélectionnez votre nom d’utilisateur GitHub dans la liste déroulante Propriétaire.
Entrez un nom de dépôt pour votre nouveau projet, par exemple, toy-website-end-to-end.
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.
Cliquez sur Create repository (Créer le 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.
Sélectionnez Code et sélectionnez l’icône de copie.
Ouvrez Visual Studio Code.
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.
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
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
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.
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.
Sélectionnez la liste déroulante Lancer le profil, puis sélectionnez Azure Cloud Shell (Bash).
Un nouvel interpréteur de commandes s’ouvre.
Connexion à Azure avec Azure CLI
Dans le terminal Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure :
az login
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.
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.
Sélectionnez la liste déroulante Lancer le profil, puis sélectionnez Azure Cloud Shell (PowerShell).
Un nouvel interpréteur de commandes s’ouvre.
Connectez-vous à Azure en utilisant Azure PowerShell
Dans le terminal Visual Studio Code, exécutez la commande suivante pour vous connecter à Azure :
Connect-AzAccount
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.
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'
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\"]}"
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\"]}"
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'
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"
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.
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
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
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)
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.
Dans votre navigateur, accédez à votre référentiel GitHub.
Sélectionnez Paramètres>Secrets et variables>Actions.
Sélectionnez New repository secret (Nouveau secret de dépôt).
Nommez le secret AZURE_CLIENT_ID_TEST.
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.Sélectionnez Ajouter un secret.
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.
Vérifiez que votre liste de secrets affiche désormais les quatre secrets.
Créer des environnements dans GitHub
Dans votre navigateur, accédez à Paramètres>Environnements.
Sélectionnez Nouvel environnement.
Entrez Test comme nom d’environnement.
Sélectionnez Configurer l’environnement.
Sélectionnez Environments pour revenir à la liste des environnements.
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.