Esercizio - Aggiungere parametri ed espressioni Decorator
Nota
La prima volta che si attiva una sandbox e si accettano le condizioni, l'account Microsoft viene associato a una nuova directory di Azure denominata Microsoft Learn Sandbox. Si viene aggiunti anche a una sottoscrizione speciale denominata Concierge Subscription.
Come parte della migrazione dell'applicazione HR, si sta creando un modello Bicep per la distribuzione di risorse di Azure. In questo esercizio si creeranno un piano di servizio app di Azure e un'app del servizio app. Si applicheranno espressioni Decorator a ogni parametro per assicurarsi che contengano sempre i valori previsti.
Durante il processo, si eseguiranno le attività seguenti:
- Creare un file Bicep che include parametri e variabili.
- Aggiungere espressioni Decorator ai parametri.
- Testare la distribuzione per verificare che il modello sia valido.
In questo esercizio viene usata l'estensione Bicep per Visual Studio Code. Assicurarsi di installare questa estensione in Visual Studio Code.
Creare un modello Bicep con parametri
Aprire Visual Studio Code.
Creare un nuovo file denominato main.bicep.
Salvare il file vuoto in modo che Visual Studio Code possa caricare gli strumenti di Bicep.
È possibile selezionare File>Salva con nome oppure premere CTRL+S in Windows (⌘+S in macOS). Assicurarsi di ricordare dove è stato salvato il file. Ad esempio, è possibile creare una cartella scripts in cui salvarlo.
Aggiungere nel file il contenuto riportato di seguito. Il modello verrà distribuito a breve. Immettere il contenuto manualmente anziché copiarlo e incollarlo, in modo da sperimentare in prima persona l'ausilio offerto dagli strumenti quando si scrivono file Bicep.
param environmentName string = 'dev' param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}' param appServicePlanInstanceCount int = 1 param appServicePlanSku object = { name: 'F1' tier: 'Free' } param location string = 'eastus' var appServicePlanName = '${environmentName}-${solutionName}-plan' var appServiceAppName = '${environmentName}-${solutionName}-app'
Si stanno creando svariati parametri che usano tipi diversi. Si stanno definendo i valori predefiniti per ogni parametro. Alcuni dei valori predefiniti includono l'interpolazione di stringhe e la funzione
uniqueString()
.Suggerimento
La funzione
uniqueString()
è utile per creare nomi di risorse univoci a livello globale. Restituisce una stringa che è la stessa in ogni distribuzione nello stesso gruppo di risorse, ma diversa quando si esegue la distribuzione in sottoscrizioni o gruppi di risorse diversi.Si stanno inoltre definendo variabili che costruiscono i nomi del piano di servizio app di Azure e dell'app del servizio app. I valori corrispondenti includono alcuni dei parametri specificati. L'utente che esegue la distribuzione può sostituire i valori dei parametri, ma non i valori delle variabili.
Suggerimento
Si specifica che il parametro
location
deve essere impostato suwestus3
. In genere, si creano risorse nella stessa località del gruppo di risorse usando la proprietàresourceGroup().location
. Ma quando si lavora con la sandbox di Microsoft Learn, è necessario usare determinate aree di Azure che non corrispondono alla posizione del gruppo di risorse.Nel file main.bicep in Visual Studio Code aggiungere il codice seguente alla fine del file:
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSku.name tier: appServicePlanSku.tier capacity: appServicePlanInstanceCount } } resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Si noti che le risorse usano i valori dei parametri che sono stati definiti.
Salvare le modifiche apportate al file.
Aggiungere descrizioni dei parametri
Nel file main.bicep in Visual Studio Code aggiungere l'espressione Decorator
@description
direttamente sopra ogni parametro creato nell'attività precedente. I parametri dovrebbero essere simili all'esempio seguente:@description('The name of the environment. This must be dev, test, or prod.') param environmentName string = 'dev' @description('The unique name of the solution. This is used to ensure that resource names are unique.') param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}' @description('The number of App Service plan instances.') param appServicePlanInstanceCount int = 1 @description('The name and tier of the App Service plan SKU.') param appServicePlanSku object = { name: 'F1' tier: 'Free' } @description('The Azure region into which the resources should be deployed.') param location string = 'eastus'
Salvare le modifiche apportate al file.
Limitare i valori di input
L’azienda di giocattoli distribuirà l'applicazione HR in tre ambienti: dev
, test
e prod
. Il parametro environmentName
verrà limitato solo per consentire tali tre valori.
Nel file main.bicep in Visual Studio Code individuare il parametro
environmentName
. Inserire un'espressione Decorator@allowed
sotto la sua espressione Decorator@description
. Al termine, il parametro dovrebbe essere simile all'esempio seguente:@description('The name of the environment. This must be dev, test, or prod.') @allowed([ 'dev' 'test' 'prod' ]) param environmentName string = 'dev'
Si noti che si sta limitando il valore del parametro
environmentName
solo adev
,test
eprod
. Se in futuro verranno aggiunti altri ambienti, sarà necessario aggiornare questo elenco.Salvare le modifiche apportate al file.
Limitare le lunghezze di input
Il parametro solutionName
viene usato per generare i nomi delle risorse. Si vuole imporre una lunghezza minima di 5 caratteri e una lunghezza massima di 30 caratteri.
Nel file main.bicep in Visual Studio Code individuare il parametro
solutionName
. Aggiungere le espressioni Decorator@minLength
e@maxLength
sotto l'espressione Decorator@description
. Al termine, il parametro dovrebbe essere simile all'esempio seguente:@description('The unique name of the solution. This is used to ensure that resource names are unique.') @minLength(5) @maxLength(30) param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
Salvare le modifiche apportate al file.
Limitare i valori numerici
Ora si verificherà che il parametro appServicePlanInstanceCount
accetti solo valori compresi tra 1 e 10.
Nel file main.bicep in Visual Studio Code individuare il parametro
appServicePlanInstanceCount
. Aggiungere le espressioni Decorator@minValue
e@maxValue
sotto l'espressione Decorator@description
. Al termine, il parametro dovrebbe essere simile all'esempio seguente:@description('The number of App Service plan instances.') @minValue(1) @maxValue(10) param appServicePlanInstanceCount int = 1
Salvare le modifiche apportate al file.
Verificare il file Bicep
Al termine di tutte le modifiche precedenti, il file Bicep avrà un aspetto simile al seguente:
@description('The name of the environment. This must be dev, test, or prod.')
@allowed([
'dev'
'test'
'prod'
])
param environmentName string = 'dev'
@description('The unique name of the solution. This is used to ensure that resource names are unique.')
@minLength(5)
@maxLength(30)
param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
@description('The number of App Service plan instances.')
@minValue(1)
@maxValue(10)
param appServicePlanInstanceCount int = 1
@description('The name and tier of the App Service plan SKU.')
param appServicePlanSku object = {
name: 'F1'
tier: 'Free'
}
@description('The Azure region into which the resources should be deployed.')
param location string = 'eastus'
var appServicePlanName = '${environmentName}-${solutionName}-plan'
var appServiceAppName = '${environmentName}-${solutionName}-app'
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSku.name
tier: appServicePlanSku.tier
capacity: appServicePlanInstanceCount
}
}
resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
In caso contrario, copiare l'esempio oppure modificare il modello in modo che corrisponda all'esempio.
Distribuire il modello Bicep in Azure
Per distribuire questo modello in Azure, è necessario accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi che sia installata l'interfaccia della riga di comando di Azure e ricordarsi di accedere con lo stesso account usato per attivare la sandbox.
Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
Se la shell visualizzata sul lato destro della finestra del terminale è bash, significa che è aperta la shell corretta ed è possibile passare alla sezione successiva.
Se viene visualizzata una shell diversa da bash, selezionare l'elenco a discesa delle shell e quindi Azure Cloud Shell (Bash).
Nell'elenco delle shell del terminale selezionare bash.
Nel terminale passare alla directory in cui è stato salvato il modello. Se, ad esempio, il salvataggio del modello è stato eseguito nella cartella templates, è possibile usare questo comando:
cd templates
Installare Bicep
Eseguire il comando seguente per assicurarsi che sia installata la versione più recente di Bicep:
az bicep install && az bicep upgrade
Accedere ad Azure
Nel terminale di Visual Studio Code accedere ad Azure eseguendo il comando seguente:
az login
Nel browser visualizzato accedere al proprio account Azure.
Il terminale di Visual Studio Code mostra un elenco delle sottoscrizioni associate a questo account.
Impostare la sottoscrizione predefinita per tutti i comandi dell'interfaccia della riga di comando di Azure eseguiti in questa sessione.
az account set --subscription "Concierge Subscription"
Nota
Se di recente sono state usate più sandbox, il terminale potrebbe mostrare più istanze di Concierge Subscription. In questo caso, attenersi ai due passaggi seguenti per impostarne una come predefinita. Se il comando precedente ha avuto esito positivo ed è elencata una sola Concierge Subscription, ignorare i due passaggi successivi.
Ottenere gli ID della sottoscrizione Concierge Subscription.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Impostare la sottoscrizione predefinita usando l'ID sottoscrizione. Sostituire {your subscription ID} con l'ID della sottoscrizione Concierge Subscription più recente.
az account set --subscription {your subscription ID}
Impostare il gruppo di risorse predefinito
Se si usa l'interfaccia della riga di comando di Azure, in questo esercizio è possibile impostare il gruppo di risorse predefinito e omettere il parametro dal resto dei comandi dell'interfaccia della riga di comando di Azure. Impostare come gruppo di risorse predefinito quello creato nell'ambiente sandbox.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Distribuire il modello in Azure usando l'interfaccia della riga di comando di Azure
Eseguire il codice seguente dal terminale integrato in Visual Studio Code per distribuire il modello Bicep in Azure. Non è necessario specificare i valori dei parametri, perché sono stati specificati valori predefiniti. Possono essere necessari uno o due minuti per il completamento del processo, al termine del quale la distribuzione risulterà completata con esito positivo.
az deployment group create --template-file main.bicep
Verrà visualizzato Running...
nel terminale.
Per distribuire questo modello in Azure, accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi che sia stato installato Azure PowerShell e di accedere allo stesso account con cui è stata attivata la sandbox.
Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
Se la shell visualizzata sul lato destro della finestra del terminale è PowerShell o pwsh, la shell corretta è aperta ed è possibile passare alla sezione successiva.
Se viene visualizzata una shell diversa da powershell o pwsh, selezionare l'elenco a discesa delle shell e quindi PowerShell.
Nell'elenco delle shell del terminale selezionare powershell o pwsh.
Nel terminale passare alla directory in cui è stato salvato il modello. Se, ad esempio, il salvataggio del modello è stato eseguito nella cartella templates, è possibile usare questo comando:
Set-Location -Path templates
Installare l'interfaccia della riga di comando di Bicep
Per usare Bicep da Azure PowerShell, installare l'interfaccia della riga di comando di Bicep.
Accedere ad Azure usando Azure PowerShell
Nel terminale di Visual Studio Code eseguire il comando seguente:
Connect-AzAccount
Verrà aperta una finestra del browser per accedere all'account Azure.
Una volta effettuato l'accesso ad Azure, il terminale mostra un elenco delle sottoscrizioni associate all'account.
Se è stata attivata la sandbox, viene visualizzata una sottoscrizione denominata Concierge Subscription. Usarla nella parte rimanente dell'esercizio.
Impostare la sottoscrizione predefinita per tutti i comandi di Azure PowerShell eseguiti in questa sessione.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota
Se di recente sono state usate più sandbox, il terminale potrebbe mostrare più istanze di Concierge Subscription. In questo caso, attenersi ai due passaggi seguenti per impostarne una come predefinita. Se il comando precedente ha avuto esito positivo ed è elencata una sola Concierge Subscription, ignorare i due passaggi successivi.
Ottenere l'ID sottoscrizione. Eseguendo il comando seguente vengono elencate le sottoscrizioni e i rispettivi ID. Cercare
Concierge Subscription
e quindi copiare l'ID dalla seconda colonna. Il risultato sarà simile a:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Modificare la sottoscrizione attiva impostandola su Concierge Subscription. Assicurarsi di sostituire {Your subscription ID} con l'ID copiato.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Impostare il gruppo di risorse predefinito
In questo esercizio è possibile impostare il gruppo di risorse predefinito e omettere il parametro dal resto dei comandi di Azure PowerShell. Impostare come predefinito il gruppo di risorse creato automaticamente nell'ambiente sandbox.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Distribuire il modello in Azure con PowerShell
Distribuire il modello in Azure usando il comando di Azure PowerShell seguente nel terminale. Non è necessario specificare i valori dei parametri, perché sono stati specificati valori predefiniti. Possono essere necessari uno o due minuti per il completamento del processo, al termine del quale la distribuzione risulterà completata con esito positivo.
New-AzResourceGroupDeployment -TemplateFile main.bicep
Verificare la distribuzione
Passare al portale di Azure e assicurarsi di trovarsi nella sottoscrizione dell'ambiente sandbox.
- Selezionare l'avatar nell'angolo superiore destro della pagina.
- Selezionare Cambia directory. Nell'elenco scegliere la directory Microsoft Learn Sandbox.
Nel pannello di sinistra selezionare Gruppi di risorse.
Selezionare
[nome gruppo di risorse sandbox] .In Panoramica viene visualizzata una distribuzione completata.
Selezionare 1 completata per visualizzare i dettagli della distribuzione.
Selezionare la distribuzione denominata main per visualizzare le risorse distribuite e quindi selezionare Dettagli della distribuzione per espanderla. In questo caso, sono presenti un piano di servizio app e un'app.
Selezionare Input nel menu a sinistra.
Notare che sono elencati i parametri e i relativi valori.
Lasciare aperta la pagina nel browser. Le distribuzioni verranno controllate di nuovo in un momento successivo.