Esercizio - Aggiungere parametri ed espressioni Decorator

Completato

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

  1. Aprire Visual Studio Code.

  2. Creare un nuovo file denominato main.bicep.

  3. 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.

  4. 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 su westus3. 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.

  5. 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.

  6. Salvare le modifiche apportate al file.

Aggiungere descrizioni dei parametri

  1. 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'
    
  2. 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.

  1. 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 a dev, test e prod. Se in futuro verranno aggiunti altri ambienti, sarà necessario aggiornare questo elenco.

  2. 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.

  1. 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)}'
    
  2. 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.

  1. 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
    
  2. 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.

  1. Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.

  2. Se la shell visualizzata sul lato destro della finestra del terminale è bash, significa che è aperta la shell corretta ed è possibile passare alla sezione successiva.

    Screenshot della finestra del terminale di Visual Studio Code con l'opzione bash visualizzata.

  3. Se viene visualizzata una shell diversa da bash, selezionare l'elenco a discesa delle shell e quindi Azure Cloud Shell (Bash).

    Screenshot della finestra del terminale di Visual Studio Code, con l'elenco a discesa della shell del terminale e l'opzione Git Bash (predefinita) selezionata.

  4. Nell'elenco delle shell del terminale selezionare bash.

    Screenshot della finestra del terminale di Visual Studio Code con il terminale bash selezionato.

  5. 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

  1. Nel terminale di Visual Studio Code accedere ad Azure eseguendo il comando seguente:

    az login
    
  2. Nel browser visualizzato accedere al proprio account Azure.

    Il terminale di Visual Studio Code mostra un elenco delle sottoscrizioni associate a questo account.

  3. 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.

  4. Ottenere gli ID della sottoscrizione Concierge Subscription.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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.

  1. Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.

  2. Se la shell visualizzata sul lato destro della finestra del terminale è PowerShell o pwsh, la shell corretta è aperta ed è possibile passare alla sezione successiva.

    Screenshot della finestra del terminale di Visual Studio Code con l'opzione pwsh visualizzata nell'elenco a discesa della shell.

  3. Se viene visualizzata una shell diversa da powershell o pwsh, selezionare l'elenco a discesa delle shell e quindi PowerShell.

    Screenshot della finestra del terminale di Visual Studio Code, con l'elenco a discesa della shell del terminale visualizzato e PowerShell selezionato.

  4. Nell'elenco delle shell del terminale selezionare powershell o pwsh.

    Screenshot della finestra del terminale di Visual Studio Code con il terminale PowerShell selezionato.

  5. 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

  1. Nel terminale di Visual Studio Code eseguire il comando seguente:

    Connect-AzAccount
    

    Verrà aperta una finestra del browser per accedere all'account Azure.

  2. 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.

  3. 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.

  4. 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
    
  5. 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

  1. Passare al portale di Azure e assicurarsi di trovarsi nella sottoscrizione dell'ambiente sandbox.

    1. Selezionare l'avatar nell'angolo superiore destro della pagina.
    2. Selezionare Cambia directory. Nell'elenco scegliere la directory Microsoft Learn Sandbox.
  2. Nel pannello di sinistra selezionare Gruppi di risorse.

  3. Selezionare [nome gruppo di risorse sandbox].

  4. In Panoramica viene visualizzata una distribuzione completata.

    Screenshot dell'interfaccia del portale di Azure per la panoramica del gruppo di risorse con la sezione delle distribuzioni che mostra una distribuzione completata.

  5. Selezionare 1 completata per visualizzare i dettagli della distribuzione.

    Screenshot dell'Interfaccia del portale di Azure per le distribuzioni con una distribuzione completata.

  6. 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.

    Screenshot dell'interfaccia del portale di Azure per la distribuzione specifica con un piano di servizio app e un'app elencati.

  7. Selezionare Input nel menu a sinistra.

    Screenshot dell'interfaccia del portale di Azure per la distribuzione specifica, con la voce di menu Input evidenziata.

  8. Notare che sono elencati i parametri e i relativi valori.

    Screenshot dell'interfaccia del portale di Azure per la distribuzione specifica, che mostra i valori dei parametri.

  9. Lasciare aperta la pagina nel browser. Le distribuzioni verranno controllate di nuovo in un momento successivo.