Oefening: een module maken en gebruiken
U hebt de taak gekregen om een netwerk voor contentlevering of CDN toe te voegen aan de website van uw bedrijf voor de lancering van een speelgoed-wombat. Andere teams in uw bedrijf hebben u echter verteld dat ze geen CDN nodig hebben. In deze oefening maakt u modules voor de website en het CDN en voegt u de modules toe aan een sjabloon.
Tijdens het proces gaat u het volgende doen:
- Voeg een module toe voor uw toepassing.
- Maak een Bicep-sjabloon die gebruikmaakt van de module.
- Voeg nog een module toe voor het CDN.
- Voeg de CDN-module toe aan uw sjabloon, terwijl u deze optioneel maakt.
- De sjabloon implementeren in Azure.
- Bekijk de implementatiegeschiedenis.
In deze oefening wordt de Bicep-extensie voor Visual Studio Code gebruikt. Zorg ervoor dat u deze extensie installeert in Visual Studio Code.
Een leeg Bicep-bestand maken
Open Visual Studio Code.
Maak een nieuw bestand met de naam main.bicep.
Sla het lege bestand op zodat Visual Studio Code de Bicep-hulpprogramma's laadt.
U kunt Bestand>opslaan als selecteren of Ctrl+S selecteren in Windows (⌘+S in macOS). Vergeet niet waar u het bestand opslaat. U kunt bijvoorbeeld een map met sjablonen maken om deze op te slaan in.
Een module voor uw toepassing maken
Maak een nieuwe map met de naam modules in dezelfde map waarin u uw main.bicep-bestand hebt gemaakt. Maak in de map modules een bestand met de naam app.bicep. Sla het bestand op.
Voeg de volgende inhoud toe aan het bestand app.bicep :
@description('The Azure region into which the resources should be deployed.') param location string @description('The name of the App Service app.') param appServiceAppName string @description('The name of the App Service plan.') param appServicePlanName string @description('The name of the App Service plan SKU.') param appServicePlanSkuName string resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } } @description('The default host name of the App Service app.') output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Met dit bestand wordt een Azure-app Service-plan en een app geïmplementeerd. U ziet dat de module redelijk algemeen is. Het bevat geen veronderstellingen over de namen van resources of de SKU van het App Service-plan. Hierdoor kunt u de module eenvoudig opnieuw gebruiken voor verschillende implementaties.
Sla de wijzigingen in het bestand op.
De module toevoegen aan uw Bicep-sjabloon
Hier voegt u de app-module als uitgangspunt toe aan uw Bicep-sjabloon.
Open het bestand main.bicep .
Voeg de volgende parameters en variabelen toe aan het bestand:
@description('The Azure region into which the resources should be deployed.') param location string = 'westus3' @description('The name of the App Service app.') param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}' @description('The name of the App Service plan SKU.') param appServicePlanSkuName string = 'F1' var appServicePlanName = 'toy-product-launch-plan'
Omdat dit de sjabloon is die u wilt implementeren voor uw speelgoedwebsites, is dit iets specifieker. De naam van het App Service-plan wordt gedefinieerd als een variabele. De SKU-parameter heeft een standaardwaarde die zinvol is voor de website voor het starten van speelgoed.
Tip
U geeft op dat de
location
parameter moet worden ingesteld opwestus3
. Normaal gesproken maakt u resources op dezelfde locatie als de resourcegroep met behulp van deresourceGroup().location
eigenschap. Maar wanneer u met de Microsoft Learn-sandbox werkt, moet u bepaalde Azure-regio's gebruiken die niet overeenkomen met de locatie van de resourcegroep.Maak onder de parameters een lege regel. Typ nu de eerste regel van de definitie van de app-module:
module app 'modules/app.bicep' = {
Terwijl u typt, ziet u dat de Bicep-extensie voor Visual Studio Code u helpt bij het maken van de moduledeclaratie. Wanneer u het pad naar uw module typt en het gelijkteken (
=
) typt, verschijnt er een snelmenu met verschillende opties.Selecteer Vereiste eigenschappen in het snelmenu:
Voltooi de moduledeclaratie:
module app 'modules/app.bicep' = { name: 'toy-launch-app' params: { appServiceAppName: appServiceAppName appServicePlanName: appServicePlanName appServicePlanSkuName: appServicePlanSkuName location: location } }
Definieer onderaan het bestand een uitvoer:
@description('The host name to use to access the website.') output websiteHostName string = app.outputs.appServiceAppHostName
Sla de wijzigingen in het bestand op.
Een module maken voor het netwerk voor contentlevering
Maak in de map modules een bestand met de naam cdn.bicep. Sla het bestand op.
Voeg de volgende inhoud toe aan het cdn.bicep-bestand :
@description('The host name (address) of the origin server.') param originHostName string @description('The name of the CDN profile.') param profileName string = 'cdn-${uniqueString(resourceGroup().id)}' @description('The name of the CDN endpoint') param endpointName string = 'endpoint-${uniqueString(resourceGroup().id)}' @description('Indicates whether the CDN endpoint requires HTTPS connections.') param httpsOnly bool var originName = 'my-origin' resource cdnProfile 'Microsoft.Cdn/profiles@2024-02-01' = { name: profileName location: 'global' sku: { name: 'Standard_Microsoft' } } resource endpoint 'Microsoft.Cdn/profiles/endpoints@2024-02-01' = { parent: cdnProfile name: endpointName location: 'global' properties: { originHostHeader: originHostName isHttpAllowed: !httpsOnly isHttpsAllowed: true queryStringCachingBehavior: 'IgnoreQueryString' contentTypesToCompress: [ 'text/plain' 'text/html' 'text/css' 'application/x-javascript' 'text/javascript' ] isCompressionEnabled: true origins: [ { name: originName properties: { hostName: originHostName } } ] } } @description('The host name of the CDN endpoint.') output endpointHostName string = endpoint.properties.hostName
Met dit bestand worden twee resources geïmplementeerd: een CDN-profiel en een CDN-eindpunt.
Sla de wijzigingen in het bestand op.
De modules toevoegen aan de belangrijkste Bicep-sjabloon
Open het bestand main.bicep .
Voeg onder de
appServicePlanSkuName
parameter de volgende parameter toe:@description('Indicates whether a CDN should be deployed.') param deployCdn bool = true
Definieer
cdn
de module onder deapp
moduledefinitie:module cdn 'modules/cdn.bicep' = if (deployCdn) { name: 'toy-launch-cdn' params: { httpsOnly: true originHostName: app.outputs.appServiceAppHostName } }
U ziet dat de module een voorwaarde heeft, zodat deze alleen wordt geïmplementeerd wanneer de waarde van de
deployCdn
parameter is ingesteld optrue
. U ziet ook dat de parameter vanoriginHostName
de module is ingesteld op de waarde van deappServiceAppHostName
uitvoer van deapp
module.Werk de uitvoer van de hostnaam bij zodat deze de juiste hostnaam selecteert. Wanneer een CDN is geïmplementeerd, wilt u dat de hostnaam die van het CDN-eindpunt is.
output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName
Sla de wijzigingen in het bestand op.
De Bicep-sjabloon implementeren in Azure
Als u deze sjabloon wilt implementeren in Azure, moet u zich aanmelden bij uw Azure-account vanuit de Visual Studio Code-terminal. Zorg ervoor dat u de Azure CLI hebt geïnstalleerd en vergeet niet om u aan te melden met hetzelfde account dat u hebt gebruikt om de sandbox te activeren.
Selecteer Nieuwe terminal in het menu Terminal. Het terminalvenster wordt meestal geopend in de onderste helft van het scherm.
Als in het terminalvenster bash aan de rechterkant wordt weergegeven, betekent dit dat de juiste shell al is geopend. Als u ook een bash-shellpictogram aan de rechterkant ziet, kunt u deze selecteren om de shell te starten.
Als een andere shell dan bash wordt weergegeven, selecteert u de vervolgkeuzepijl van de shell en selecteert u Vervolgens Git Bash.
Ga in de terminal naar de map waarin u de sjabloon hebt opgeslagen. Als u de sjabloon bijvoorbeeld hebt opgeslagen in de map sjablonen , kunt u deze opdracht gebruiken:
cd templates
Bicep installeren
Voer de volgende opdracht uit om te controleren of u de nieuwste versie van Bicep hebt:
az bicep install && az bicep upgrade
Aanmelden bij Azure
Meld u in de Visual Studio Code-terminal aan bij Azure door de volgende opdracht uit te voeren:
az login
Meld u aan bij uw Azure-account in de browser die wordt geopend. In de Visual Studio Code-terminal wordt een lijst weergegeven met de abonnementen die aan dit account zijn gekoppeld. Selecteer het abonnement met de naam Concierge-abonnement.
Als u meer dan één sandbox onlangs hebt gebruikt, kan in de terminal meer dan één exemplaar van Concierge-abonnement worden weergegeven. In dit geval gebruikt u de volgende twee stappen om er een in te stellen als het standaardabonnement.
Verkrijg de id’s van het Concierge-abonnement.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Stel het standaardabonnement in met behulp van de abonnements-id. Vervang {uw abonnements-id} door de meest recente Concierge-abonnements-id.
az account set --subscription {your subscription ID}
De standaardresourcegroep instellen
Wanneer u de Azure CLI gebruikt, kunt u de standaardresourcegroep instellen en de parameter weglaten uit de rest van de Azure CLI-opdrachten in deze oefening. Stel de standaardinstelling in op de resourcegroep die voor u is gemaakt in de sandbox-omgeving.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
De sjabloon implementeren in Azure
Voer de volgende code uit vanuit de terminal in Visual Studio Code om de Bicep-sjabloon in Azure te implementeren. Het kan een paar minuten duren voordat dit proces is voltooid. Vervolgens krijgt u een geslaagde implementatie.
az deployment group create --template-file main.bicep
De status Running...
wordt weergegeven in de terminal.
Als u deze sjabloon wilt implementeren in Azure, meldt u zich aan bij uw Azure-account vanuit de Visual Studio Code-terminal. Zorg ervoor dat u Azure PowerShell hebt geïnstalleerd en meld u aan bij hetzelfde account dat de sandbox heeft geactiveerd.
Selecteer Nieuwe terminal in het menu Terminal. Het terminalvenster wordt meestal geopend in de onderste helft van het scherm.
Als in het terminalvenster pwsh of powershell aan de rechterkant wordt weergegeven, betekent dit dat de juiste shell al is geopend. Als u aan de rechterkant een PowerShell-shellpictogram ziet, kunt u deze optie selecteren om de shell te starten.
Als een andere shell dan pwsh of powershell wordt weergegeven, selecteert u de vervolgkeuzepijl van de shell en selecteert u Vervolgens PowerShell.
Ga in de terminal naar de map waarin u de sjabloon hebt opgeslagen. Als u uw sjabloon bijvoorbeeld hebt opgeslagen in de map sjablonen , kunt u deze opdracht gebruiken:
Set-Location -Path templates
Bicep CLI installeren
Als u Bicep wilt gebruiken vanuit Azure PowerShell, installeert u de Bicep CLI.
Aanmelden bij Azure met behulp van Azure PowerShell
Voer in de Visual Studio Code-terminal de volgende opdracht uit:
Connect-AzAccount
Er wordt een browser geopend, zodat u zich kunt aanmelden bij uw Azure-account. De browser kan op de achtergrond worden geopend.
Nadat u zich hebt aangemeld bij Azure, wordt in de terminal een lijst weergegeven met de abonnementen die aan dit account zijn gekoppeld. Als u de sandbox hebt geactiveerd, wordt een abonnement met de naam Concierge-abonnement weergegeven. Selecteer deze voor de rest van de oefening.
Als u meer dan één sandbox onlangs hebt gebruikt, kan in de terminal meer dan één exemplaar van Concierge-abonnement worden weergegeven. In dit geval gebruikt u de volgende twee stappen om er een in te stellen als het standaardabonnement.
Verkrijg de abonnements-id. Als u de volgende opdracht uitvoert, worden uw abonnementen en hun id's vermeld.
Concierge Subscription
Zoek en kopieer de id uit de tweede kolom. Het ziet er ongeveer als volgt uit:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Wijzig uw actieve abonnement in Concierge-abonnement. Zorg ervoor dat u {Uw abonnements-id} vervangt door de id die u hebt gekopieerd.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
De standaardresourcegroep instellen
U kunt de standaardresourcegroep instellen en de parameter weglaten uit de rest van de Azure PowerShell-opdrachten in deze oefening. Stel deze standaardinstelling in op de resourcegroep die voor u is gemaakt in de sandbox-omgeving.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
De sjabloon implementeren in Azure
Implementeer de sjabloon in Azure met behulp van de volgende Azure PowerShell-opdracht in de terminal. Het kan een paar minuten duren voordat dit is voltooid. Vervolgens krijgt u een geslaagde implementatie.
New-AzResourceGroupDeployment -TemplateFile main.bicep
De implementatiegeschiedenis controleren
Ga naar Azure Portal en zorg ervoor dat u zich in het sandbox-abonnement bevindt:
- Selecteer uw avatar in de rechterbovenhoek van de pagina.
- Selecteer Schakelen tussen directory's. In de lijst kiest u de map Microsoft Learn Sandbox.
Selecteer Resourcegroepen in het linkerdeelvenster.
Selecteer
[naam sandboxresourcegroep] .Selecteer Implementaties in het linkermenu.
Er worden drie implementaties weergegeven.
Selecteer de hoofdimplementatie en vouw implementatiedetails uit.
U ziet dat beide modules worden weergegeven en dat hun typen worden weergegeven als
Microsoft.Resources/deployments
. De modules worden twee keer weergegeven omdat er ook naar de uitvoer in de sjabloon wordt verwezen.Selecteer de implementaties van de speelgoed-launch-cdn - en speelgoed-launch-app en controleer de resources die in elke app zijn geïmplementeerd. U ziet dat ze overeenkomen met de resources die zijn gedefinieerd in de respectieve module.
De website testen
Selecteer de implementatie van de speelgoed-start-app .
Selecteer Uitvoer.
Selecteer de knop Kopiëren voor de
appServiceAppHostName
uitvoer.Ga op een nieuw browsertabblad naar het adres dat u in de vorige stap hebt gekopieerd. Het adres moet beginnen met
https://
.De welkomstpagina van App Service wordt weergegeven, waarin wordt weergegeven dat u de app hebt geïmplementeerd.
Ga naar de hoofdimplementatie en selecteer Uitvoer.
Kopieer de waarde van de
websiteHostName
uitvoer. U ziet dat deze hostnaam anders is, omdat het een Hostnaam van het Azure Content Delivery Network is.Ga op een nieuw browsertabblad naar de hostnaam die u in de vorige stap hebt gekopieerd. Voeg toe
https://
aan het begin van het adres.Het duurt enkele minuten voordat CDN-eindpunten actief worden. Als er een fout 'Pagina niet gevonden' wordt weergegeven , wacht u enkele minuten en plakt u de koppeling opnieuw. Zorg er ook voor dat u aan het begin van de URL hebt toegevoegd
https://
, zodat u HTTPS gebruikt.Wanneer het CDN-eindpunt actief is, krijgt u dezelfde welkomstpagina van App Service. Deze keer is het geleverd via de Azure Content Delivery Network-service, waarmee de prestaties van de website worden verbeterd.