Øvelse – Godkend din tjenesteprincipal for udrulninger
I den forrige øvelse har du oprettet en tjenesteprincipal for dit websteds udrulningspipeline, og du har testet, at du kan logge på ved hjælp af dens nøgle. Nu er du klar til at give tjenesteprincipalen adgang til dit Azure-miljø. I denne opgave skal du oprette en rolletildeling for tjenesteprincipalen og derefter installere en Bicep-fil ved hjælp af tjenesteprincipalen.
Under processen skal du:
- Log på som din egen brugerkonto.
- Opret en ressourcegruppe til firmaets websted.
- Opret en rolletildeling for at give tjenesteprincipalen tilladelse til at udrulle ressourcer til ressourcegruppen.
- Log på som tjenesteprincipal, og udrul den Bicep-fil, der opretter virksomhedens webstedsressourcer.
- Kontrollér installationen.
- Ryd op i ressourcegruppen og tjenesteprincipalen.
Log på som din brugerkonto
I den forrige øvelse loggede du på ved hjælp af tjenesteprincipalen og loggede derefter af. Du skal logge på som din egen brugerkonto igen, så du kan følge med i de næste trin i denne øvelse.
Log på Azure ved at køre følgende kommando i Azure Cloud Shell-terminalen (bash) i Visual Studio Code:
az login
Log på din Azure-konto i den browser, der åbnes.
Log på Azure i Visual Studio Codes Azure Cloud Shell-terminal (PowerShell) ved at køre følgende kommando:
Connect-AzAccount
Log på din Azure-konto i den browser, der åbnes.
Opret en ressourcegruppe
Nu skal du oprette en ressourcegruppe, der indeholder legetøjsfirmaets webstedsressourcer.
Kør denne Azure CLI-kommando i Visual Studio Code-terminalen for at oprette en ressourcegruppe:
az group create --name ToyWebsite --location eastus
Kig på JSON-outputtet fra den forrige kommando. Den indeholder en egenskab med navnet
id
, som er ressourcegruppens id. Kopiér den et sikkert sted. Du skal snart bruge den.
Kør denne Azure PowerShell-kommando i Visual Studio Code-terminalen for at oprette en ressourcegruppe:
New-AzResourceGroup -Name ToyWebsite -Location eastus
Kig på outputtet fra den forrige kommando. Den indeholder en egenskab med navnet
ResourceId
, som er ressourcegruppens id. Kopiér den et sikkert sted. Du skal snart bruge den.
Opret en rolletildeling
For dit websteds udrulningspipeline beslutter du at oprette en rolletildeling med følgende oplysninger:
- tildelt: Den tjenesteprincipal, du oprettede i den forrige øvelse.
- rolle: Den indbyggede rolle Bidragyder.
- Område: Den ressourcegruppe, du oprettede i forrige trin.
Kør følgende Azure CLI-kommando i Visual Studio Code-terminalen for at oprette rolletildelingen. Erstat pladsholderne med de værdier, du kopierede tidligere.
az role assignment create \
--assignee APPLICATION_ID \
--role Contributor \
--scope RESOURCE_GROUP_ID \
--description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
Kør følgende Azure CLI-kommando i Visual Studio Code-terminalen for at oprette rolletildelingen. Erstat pladsholderne med de værdier, du kopierede tidligere.
New-AzRoleAssignment `
-ApplicationId APPLICATION_ID `
-RoleDefinitionName Contributor `
-Scope RESOURCE_GROUP_ID `
-Description "The deployment pipeline for the company's website needs to be able to create resources within the resource group."
Opret en Bicep-fil
Du har tidligere oprettet en Bicep-fil, der installerer dit websteds ressourcer. Her skal du gemme denne fil, så du kan teste den ved hjælp af tjenesteprincipalen.
Opret en ny fil med navnet main.bicep.
Føj følgende indhold til filen main.bicep. Du udruller snart skabelonen.
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The name of the App Service app.') param appServiceAppName string = 'toywebsite${uniqueString(resourceGroup().id)}' @description('The name of the App Service plan SKU.') param appServicePlanSkuName string = 'F1' var appServicePlanName = 'toy-website-plan' var applicationInsightsInstanceName = 'toy-website-insights' resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource applicationInsightsInstance 'Microsoft.Insights/components@2018-05-01-preview' = { name: applicationInsightsInstanceName location: location kind: 'web' properties: { Application_Type: 'web' } } resource appServiceApp 'Microsoft.Web/sites@2020-06-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsightsInstance.properties.InstrumentationKey } { name: 'APPLICATIONINSIGHTS_CONNECTION_STRING' value: applicationInsightsInstance.properties.ConnectionString } ] } } }
Gem ændringerne i filen. Du kan enten vælge Filer>Gem som eller vælge Ctrl+S- i Windows (⌘+S på macOS). Husk, hvor du har gemt filen. Det kan f.eks. være, at du vil oprette en scripts mappe for at gemme den i.
Installer Bicep-filen ved hjælp af tjenesteprincipalen
Du har i øjeblikket ikke en udrulningspipeline, så du simulerer, hvad en pipeline gør for at installere din Bicep-fil.
Kør følgende Azure CLI-kommando i Visual Studio Code-terminalen for at logge på ved hjælp af tjenesteprincipalens legitimationsoplysninger. Erstat pladsholderne med de værdier, du kopierede i den forrige øvelse.
az login --service-principal \ --username APPLICATION_ID \ --password SERVICE_PRINCIPAL_KEY \ --tenant TENANT_ID
Installér Bicep-filen ved at køre følgende Azure CLI-kommando:
az deployment group create \ --resource-group ToyWebsite \ --template-file main.bicep
Det kan tage et minut eller to at fuldføre installationen, og derefter får du vist en vellykket installation.
Kør følgende Azure PowerShell-kommando i Visual Studio Code-terminalen for sikkert at bede dig om legitimationsoplysningerne for tjenesteprincipalen. Brug tjenesteprincipalens program-id og nøgle fra den forrige øvelse til henholdsvis brugernavn og adgangskode.
$credential = Get-Credential
Kør følgende Azure PowerShell-kommando i Visual Studio Code-terminalen for at logge på ved hjælp af tjenesteprincipalens legitimationsoplysninger. Erstat pladsholderen
TENANT_ID
med den værdi, du kopierede tidligere.Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
Installér Bicep-filen ved at køre følgende Azure PowerShell-kommando:
New-AzResourceGroupDeployment -ResourceGroupName ToyWebsite -TemplateFile main.bicep
Det kan tage et minut eller to at fuldføre installationen, og derefter får du vist en vellykket installation.
Kontrollér installationen
Brug Azure Portal til at undersøge de ressourcer, du har udrullet, og til at undersøge resultaterne af udrulningen.
Gå til Azure Portal.
Vælg Ressourcegrupperi ruden til venstre.
Vælg ToyWebsite .
Vælg Installationer for at se den vellykkede installation.
Du kan også se en installation med navnet Failure-Anomalies-Alert-Rule-Deployment. Application Insights opretter automatisk denne installation.
Vælg udrulning for at se, hvilke ressourcer der er installeret, og udvid derefter udrulningsoplysninger.
I dette tilfælde vises App Service-planen, appen og Application Insights-forekomsten.
Bemærk, at der ikke er noget usædvanligt ved denne installation. Selvom en tjenesteprincipal startede den, er det ligesom enhver anden Bicep-udrulning.
Ryd op i ressourcegruppen og tjenesteprincipalen
Du har oprettet en tjenesteprincipal og rolletildeling, og du har udrullet webstedets ressourcer ved hjælp af en Bicep-fil. Du kan nu fjerne de ressourcer, du har oprettet.
Log af tjenesteprincipalens konto ved hjælp af følgende kommando:
az logout
Log på Azure igen med din egen brugerkonto ved at køre følgende kommando:
az login
Log på din Azure-konto i den browser, der åbnes.
Kør følgende Azure CLI-kommando for at slette ressourcegruppen, dens indhold og rolletildelingen:
az group delete --name ToyWebsite
Når du bliver bedt om at bekræfte, skal du angive
y
.Kør følgende kommando for at slette tjenesteprincipalen. Erstat pladsholderen
APPLICATION_ID
med det program-id, du kopierede i den forrige øvelse:az ad sp delete --id APPLICATION_ID
Log af tjenesteprincipalens konto ved hjælp af følgende kommando:
Logout-AzAccount
Log på Azure igen med din egen brugerkonto ved at køre følgende kommando:
Connect-AzAccount
Log på din Azure-konto i den browser, der åbnes.
Kør følgende Azure PowerShell-kommando for at slette ressourcegruppen, dens indhold og rolletildelingen:
Remove-AzResourceGroup -Name ToyWebsite
Når du bliver bedt om at bekræfte, skal du angive
y
.Kør følgende kommando for at slette tjenesteprincipalen. Erstat pladsholderen
APPLICATION_ID
med det program-id, du kopierede i den forrige øvelse:Remove-AzADServicePrincipal -ApplicationId APPLICATION_ID
Når du bliver bedt om at bekræfte, skal du angive
y
.