Esercizio - Eseguire il refactoring del modello per usare i moduli
In questo esercizio si aggiornerà il modello Bicep creato in precedenza in modo che usi un modulo per le risorse del Servizio app di Azure. I moduli consentono di rendere ancora più chiaro il fine ultimo del modello principale. È possibile riusare il modulo del Servizio app di Azure anche in altri modelli, se lo si ritiene opportuno.
Durante il processo, si eseguiranno queste operazioni:
- Aggiungere un nuovo modulo e spostare al suo interno le risorse del Servizio app di Azure.
- Fare riferimento al modulo dal modello Bicep principale.
- Aggiungere un output relativo al nome host dell'app del Servizio app di Azure e generarlo dalle distribuzioni del modello e del modulo.
- Testare la distribuzione per verificare che il modello sia valido.
Aggiungere un nuovo file del modulo
In Visual Studio Code creare una nuova cartella denominata modules nella stessa cartella in cui è stato creato il file main.bicep. Nella cartella modules creare un file denominato appService.bicep. Salva il file.
Aggiungere nel file appService.bicep il contenuto seguente:
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@2022-03-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
I parametri e le variabili sono stati copiati dal modello main.bicep perché il modello appService.bicep deve essere autonomo.
Salvare le modifiche apportate al file. Osservare come Visual Studio Code non usi la sottolineatura ondulata rossa per indicare avvisi relativi a variabili mancanti, parametri mancanti o risorse non valide.
Aggiungere un riferimento al modulo dal modello padre
È ora disponibile un modulo completo per distribuire le risorse del servizio app ed è quindi possibile fare riferimento al modulo nel modello padre. Poiché il modulo distribuisce le risorse del servizio app, è possibile eliminare dal modello padre le risorse e le variabili associate.
Nel file main.bicep eliminare quindi le risorse del servizio app e le definizioni di variabili
appServicePlanName
eappServicePlanSkuName
. Non eliminare invece i parametri del Servizio app di Azure, poiché sono ancora necessari. né i parametri, la variabile o le risorse dell'account di archiviazione.Nella parte inferiore del file main.bicep aggiungere il codice Bicep seguente:
module appService 'modules/appService.bicep' = { name: 'appService' params: { location: location appServiceAppName: appServiceAppName environmentType: environmentType } }
Osservare come, per specificare i parametri per il modulo in uso, si faccia riferimento ai parametri nel modello padre.
Salvare le modifiche apportate al file.
Aggiungere il nome host come output
Nella parte inferiore del file appService.bicep aggiungere il codice Bicep seguente:
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Questo codice dichiara che un output per questo modulo, che verrà chiamato
appServiceAppHostName
, sarà di tipostring
. L'output recupererà il valore dalla proprietàdefaultHostName
dell'app del servizio app.Salvare le modifiche apportate al file.
Questo output viene dichiarato in un file Bicep che verrà usato come modulo e sarà quindi disponibile solo per il modello padre. È anche necessario restituire l'output alla persona che distribuisce il modello.
Aprire quindi il file main.bicep e aggiungere il codice seguente alla fine del file:
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
Osservare come questo output venga dichiarato in modo simile all'output nel modulo. Questa volta, tuttavia, si fa riferimento all'output del modulo anziché a una proprietà della risorsa.
Salvare le modifiche apportate al file.
Verificare i file Bicep
Al termine di tutte le modifiche precedenti, il file main.bicep avrà un aspetto simile al seguente:
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@2022-09-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
Il file appService.bicep dovrebbe essere simile all'esempio seguente:
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@2022-03-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
Se uno dei file non corrisponde all'esempio, copiare l'esempio oppure modificare il modello.
Distribuire il modello Bicep aggiornato
Eseguire il seguente comando dell'interfaccia della riga di comando di Azure nel terminale.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
Eseguire il seguente comando di Azure PowerShell nel terminale.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
Controllare la distribuzione
Nel browser tornare al portale di Azure. Passare al gruppo di risorse e osservare che ora sono presenti due distribuzioni completate.
Selezionare il collegamento 2 Completate. Nell'elenco sono ora presenti una distribuzione denominata main e una nuova distribuzione denominata appService.
Selezionare la distribuzione denominata main e quindi scegliere Dettagli della distribuzione per espandere l'elenco delle risorse distribuite.
La distribuzione del modulo è ora presente nell'elenco.
Selezionare la scheda Output. Si noti che è presente un output denominato appServiceAppHostName con il nome host dell'app del servizio app. Copiare il nome host negli Appunti.
Aprire una nuova scheda del browser e incollare il nome dell'host appena copiato. Viene visualizzata la pagina iniziale predefinita del servizio app.
Congratulazioni. Sono state poste le basi per un'app di grande successo.