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.
Opmerking
Deze oefening is optioneel. Als u deze oefening wilt voltooien, moet u een Azure-abonnement maken voordat u begint. Als u geen Azure-account hebt of als u er op dit moment geen wilt maken, kunt u de instructies doorlezen zodat u de informatie begrijpt die wordt gepresenteerd.
In deze oefening wordt de Bicep-extensie voor Visual Studio Code gebruikt. Zorg ervoor dat u deze extensie installeert in Visual Studio Code.
Opmerking
U moet een resourcegroep gebruiken om de stappen in deze oefening uit te voeren. U kunt een resourcegroep gebruiken die u al hebt gemaakt of u kunt voor deze oefening een nieuwe resourcegroep maken. Als u ervoor kiest om een nieuwe resourcegroep te maken, kunt u alle resources die u maakt gemakkelijker opschonen terwijl u de oefening voltooit. Als u geen bestaande resourcegroep hebt of als u specifiek voor deze oefening een nieuwe resourcegroep wilt maken, kunt u de stappen volgen in Azure Portal en Azure Resource Manager om resourcegroepen te beheren om een resourcegroep te maken met behulp van Azure Portal. U kunt ook de stappen volgen in Azure CLI om een resourcegroep te maken met behulp van de Azure CLI.
Opmerking
Vervang in deze oefening myResourceGroupName in de voorbeelden door de naam van een bestaande resourcegroep of de naam van de resourcegroep die u voor deze oefening hebt gemaakt.
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> 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@2024-04-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2024-04-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.defaultHostNameMet 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.
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.appServiceAppHostNameSla 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-09-01' = { name: profileName location: 'global' sku: { name: 'Standard_Microsoft' } } resource endpoint 'Microsoft.Cdn/profiles/endpoints@2024-09-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.hostNameMet 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
appServicePlanSkuNameparameter de volgende parameter toe:@description('Indicates whether a CDN should be deployed.') param deployCdn bool = trueDefinieer
appde module onder decdnmoduledefinitie: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
deployCdnparameter is ingesteld optrue. U ziet ook dat de parameter vanoriginHostNamede module is ingesteld op de waarde van deappServiceAppHostNameuitvoer van deappmodule.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.appServiceAppHostNameSla de wijzigingen in het bestand op.
Controleer uw Bicep-bestand
Nadat u alle voorgaande wijzigingen hebt voltooid, moet het bestand main.bicep er als volgt uitzien:
@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'
@description('Indicates whether a CDN should be deployed.')
param deployCdn bool = true
var appServicePlanName = 'toy-product-launch-plan'
module app 'modules/app.bicep' = {
name: 'toy-launch-app'
params: {
appServiceAppName: appServiceAppName
appServicePlanName: appServicePlanName
appServicePlanSkuName: appServicePlanSkuName
location: location
}
}
module cdn 'modules/cdn.bicep' = if (deployCdn) {
name: 'toy-launch-cdn'
params: {
httpsOnly: true
originHostName: app.outputs.appServiceAppHostName
}
}
@description('The host name to use to access the website.')
output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName
Als dit niet het geval is, kopieert u het voorbeeld of past u de sjabloon aan zodat deze overeenkomt met het voorbeeld.
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-hulpprogramma's hebt geïnstalleerd.
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 met behulp van Azure CLI
Meld u in de Visual Studio Code-terminal aan bij Azure door de volgende opdracht uit te voeren:
az loginMeld 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.
Zoek in de lijst het abonnement dat u voor deze oefening wilt gebruiken.
Als u de lijst uit de aanmelding hebt gemist, kunt u het volgende fragment gebruiken om uw abonnementen opnieuw weer te geven.
az account list --output tableStel het standaardabonnement in voor alle Azure CLI-opdrachten die u in deze sessie uitvoert.
az account set --subscription "Your Subscription Name or ID"
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 --name main --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.
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
Meld u in de Visual Studio Code-terminal aan bij Azure door de volgende opdracht uit te voeren:
Connect-AzAccountMeld u aan bij uw Azure-account in de browser die wordt geopend.
Haal de id op van het abonnement dat u voor deze oefening wilt gebruiken door de volgende opdracht uit te voeren:
Get-AzSubscriptionDe abonnements-id is de tweede kolom. Kopieer de tweede kolom. Het ziet er ongeveer uit als aaaa0a0a-bb1b-cc2c-dd3d-eeeee4e4e4e4e.
Stel het standaardabonnement in voor alle Azure PowerShell-opdrachten die u in deze sessie uitvoert.
Set-AzContext -SubscriptionId {Your subscription ID}
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 -Name main -TemplateFile main.bicep
De implementatiegeschiedenis controleren
Meld u aan bij Azure Portal en zorg ervoor dat u het juiste abonnement gebruikt:
- Selecteer uw avatar in de rechterbovenhoek van de pagina.
- Selecteer Schakelen tussen directory's. Kies in de lijst de juiste map.
Selecteer Resourcegroepen in het linkerdeelvenster.
Selecteer myResourceGroupName.
Selecteer Implementaties onder Instellingen 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
appServiceAppHostNameuitvoer.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
websiteHostNameuitvoer. 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.