Oefening: uw sjabloon herstructureren om modules te gebruiken
In deze oefening werkt u de Bicep-sjabloon bij die u eerder hebt gemaakt, zodat deze gebruikmaakt van een module voor de Azure-app Service-resources. Modules helpen om de intentie van de hoofdsjabloon duidelijker te houden. Als u ervoor kiest, kunt u de App Service-module opnieuw gebruiken in andere sjablonen.
Tijdens het proces gaat u het volgende doen:
- Voeg een nieuwe module toe en verplaats de App Service-resources ernaartoe.
- Verwijs naar de module vanuit de belangrijkste Bicep-sjabloon.
- Voeg een uitvoer toe voor de hostnaam van de App Service-app en verzendt deze vanuit de module- en sjabloonimplementaties.
- Test de implementatie om ervoor te zorgen dat de sjabloon geldig is.
Een nieuw modulebestand toevoegen
Maak in Visual Studio Code 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 appService.bicep. Sla het bestand op.
Voeg de volgende inhoud toe aan het bestand appService.bicep :
param location string param appServiceAppName string @allowed([ 'nonprod' 'prod' ]) param environmentType string var appServicePlanName = 'toy-product-launch-plan' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1' 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 } }
U hebt de parameters en variabelen uit uw main.bicep-sjabloon gekopieerd, omdat de sjabloon appService.bicep zelfstandig moet zijn.
Sla de wijzigingen in het bestand op. U ziet dat Visual Studio Code geen rode golvende lijnen toont om waarschuwingen over ontbrekende variabelen, ontbrekende parameters of ongeldige resources aan te geven.
Een verwijzing naar de module toevoegen vanuit de bovenliggende sjabloon
Nu u een volledige module hebt om de App Service-resources te implementeren, kunt u verwijzen naar de module in de bovenliggende sjabloon. Omdat de module de App Service-resources implementeert, kunt u de bijbehorende resources en variabelen verwijderen uit de bovenliggende sjabloon.
Verwijder in het bestand main.bicep de App Service-resources en de
appServicePlanName
variabeledefinitiesappServicePlanSkuName
. Verwijder de App Service-parameters niet, omdat u ze nog steeds nodig hebt. Verwijder ook de parameters, variabelen of resources van het opslagaccount niet.Voeg onderaan het bestand main.bicep de volgende Bicep-code toe:
module appService 'modules/appService.bicep' = { name: 'appService' params: { location: location appServiceAppName: appServiceAppName environmentType: environmentType } }
U ziet dat u de parameters voor uw module opgeeft door te verwijzen naar de parameters in de bovenliggende sjabloon.
Sla de wijzigingen in het bestand op.
De hostnaam toevoegen als uitvoer
Voeg onderaan het bestand appService.bicep de volgende Bicep-code toe:
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Deze code declareert dat een uitvoer voor deze module, die een naam
appServiceAppHostName
krijgt, van het typestring
is. De uitvoer neemt de waarde van dedefaultHostName
eigenschap van de App Service-app.Sla de wijzigingen in het bestand op.
Deze uitvoer wordt gedeclareerd in een Bicep-bestand dat we als module gebruiken, zodat deze alleen beschikbaar is voor de bovenliggende sjabloon. U moet ook de uitvoer retourneren aan de persoon die de sjabloon heeft geïmplementeerd.
Open het bestand main.bicep en voeg de volgende code toe onder aan het bestand:
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
U ziet dat deze uitvoer op een vergelijkbare manier wordt gedeclareerd als de uitvoer in de module. Maar deze keer verwijst u naar de uitvoer van de module in plaats van naar een resource-eigenschap.
Sla de wijzigingen in het bestand op.
Uw Bicep-bestanden controleren
Nadat u alle voorgaande wijzigingen hebt voltooid, moet het bestand main.bicep er als volgt uitzien:
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
module appService 'modules/appService.bicep' = {
name: 'appService'
params: {
location: location
appServiceAppName: appServiceAppName
environmentType: environmentType
}
}
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
Uw appService.bicep-bestand moet er als volgt uitzien:
param location string
param appServiceAppName string
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
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
}
}
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Als een van beide bestanden niet overeenkomt, kopieert u het voorbeeld of past u de sjabloon aan zodat deze overeenkomt met het voorbeeld.
De bijgewerkte Bicep-sjabloon implementeren
Voer de volgende Azure CLI-opdracht uit in de terminal.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
Voer de volgende Azure PowerShell-opdracht uit in de terminal.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
Uw implementatie controleren
Ga in uw browser terug naar Azure Portal. Ga naar uw resourcegroep; er zijn nu twee geslaagde implementaties.
Selecteer de koppeling 2 Geslaagd . U ziet dat u een implementatie hebt met de naam Main in de lijst en een nieuwe implementatie met de naam appService.
Selecteer de implementatie met de naam Main en selecteer vervolgens Implementatiedetails om de lijst met geïmplementeerde resources uit te vouwen.
U ziet dat onze module-implementatie wordt weergegeven in de lijst.
Selecteer het tabblad Uitvoer . U ziet dat er een uitvoer is met de naam appServiceAppHostName met de hostnaam van uw App Service-app. Kopieer de hostnaam naar het Klembord.
Open een nieuw browsertabblad en plak de hostnaam die u hebt gekopieerd. U ziet nu de standaard welkomstpagina van App Service.
Gefeliciteerd U hebt de fundamenten voor een geweldige app geïmplementeerd.