Esercizio - Aggiungere risorse a uno stack di distribuzione

Completato
Scegliere la shell di Azure

Si è nello sprint 3 per la nuova applicazione sui depositi. Di recente, il team dei depositi ha richiesto modifiche ad alcuni dei servizi di Azure in uso. Hanno anche richiesto la creazione di altri servizi necessari per supportare l'applicazione.

In questo esercizio si crea uno stack di distribuzione con ambito un gruppo di risorse che fa riferimento a un file Bicep. Il file definisce un piano di servizio app, un servizio app e un database SQL di Azure. Modificare quindi lo SKU del piano di servizio app e aggiornare lo stack di distribuzione. Infine, si aggiunge un'area di lavoro Log Analytics esistente e una nuova istanza di Application Insights per supportare il monitoraggio dell'applicazione.

Durante il processo, si eseguiranno queste operazioni:

  • Creare un file Bicep che definisca l'architettura iniziale
  • Creare uno stack di distribuzione con ambito un gruppo di risorse usando il file Bicep.
  • Modificare le proprietà di una risorsa gestita esistente
  • Aggiornare il file Bicep per includere un'area di lavoro Log Analytics esistente e una nuova istanza di Application Insights
  • Aggiornare lo stack di distribuzione per distribuire le risorse gestite
  • Convalidare le risorse gestite dello stack di distribuzione.

In questo esercizio viene usata l'estensione Bicep per Visual Studio Code. Assicurarsi di installare questa estensione in Visual Studio Code.

Creare il file Bicep

Il primo passaggio consiste nel creare un file Bicep che definisce le risorse da usare con lo stack di distribuzione.

  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 templates in cui salvare il file.

  4. Incollare il codice Bicep seguente nel file. Il modello verrà distribuito a breve.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @description('The name of the SQL database.')
    param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}'
    
    @description('The password of the admin user.')
    param sqlServerAdminUserName string
    
    @description('The name of the admin user.')
    @secure()
    param sqlServerAdminPassword string
    
    @description('The name of the SQL server.')
    param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}'
    
    @description('The name of the web application.')
    param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}'
    
    // Variables
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'F1'
        capacity: 1
      }
    }
    
    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id  
      }
    }
    
    // Resource - SQL Server
    resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={
      name: sqlServerName
      location: location
      properties: {
        administratorLogin: sqlServerAdminUserName
        administratorLoginPassword: sqlServerAdminPassword
      }
    }
    
    // Resource - SQL Database
    resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = {
      parent: sqlServer
      name: sqlDatabaseName
      location: location
      sku: {
        name: 'Standard'
        tier: 'Standard'
      }
    }
    

    Osservare come si stiano usando espressioni che includono l'interpolazione di stringhe e la funzione uniqueString()per definire valori di parametri predefiniti. Gli utenti che distribuiranno questo modello potranno sovrascrivere i valori di parametri predefiniti specificando nuovi valori in fase di distribuzione, ma non potranno sostituire i valori delle variabili.

    Osservare inoltre come venga usata una variabile per il nome del piano di servizio app e vengano usati invece parametri per gli altri nomi. Gli account di archiviazione e le app del Servizio app di Azure richiedono nomi univoci a livello globale, ma i nomi dei piani di servizio app devono essere univoci solo all'interno del rispettivo gruppo di risorse. Questo significa che non è un problema se viene usato lo stesso nome del piano di servizio app in distribuzioni diverse, purché le distribuzioni si trovino in gruppi di risorse diversi.

  5. Salvare le modifiche apportate al file.

Creare lo stack di distribuzione e distribuire le risorse in Azure

Per distribuire questo modello in Azure, è necessario accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi di aver installato gli strumenti dell'interfaccia della riga di comando di Azure.

  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 usando l'interfaccia della riga di comando di 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. Nell'elenco trovare la sottoscrizione da usare per questo esercizio.

    Se l'elenco non è stato visualizzato all'accesso, è possibile usare il frammento di codice seguente per elencare di nuovo le sottoscrizioni.

    az account list --output table
    
  4. Impostare la sottoscrizione predefinita per tutti i comandi dell'interfaccia della riga di comando di Azure eseguiti in questa sessione.

    az account set --subscription "Your Subscription Name or ID"
    

Creare un gruppo di risorse

È necessario creare un gruppo di risorse per lo stack di distribuzione e le risorse gestite. Per creare un gruppo di risorse, eseguire il comando seguente dal terminale in Visual Studio Code.

az group create \
    --name rg-depositsApplication \
    --location eastus

Per distribuire questo modello in Azure, accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi di aver installato Azure PowerShell.

  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 accedere ad Azure eseguendo il comando seguente:

    Connect-AzAccount
    
  2. Nel browser visualizzato accedere al proprio account Azure.

  3. Ottenere l'ID della sottoscrizione da usare per questo esercizio eseguendo il comando seguente:

    Get-AzSubscription
    

    L'ID sottoscrizione è la seconda colonna. Copiare la seconda colonna. Ha un aspetto simile a aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

  4. Impostare la sottoscrizione predefinita per tutti i comandi di Azure PowerShell eseguiti in questa sessione.

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Creare un gruppo di risorse

È necessario creare un gruppo di risorse per lo stack di distribuzione e le risorse gestite. Per creare un gruppo di risorse, eseguire il comando seguente dal terminale in Visual Studio Code.

New-AzResourceGroup `
    -Name rg-depositsApplication `
    -Location eastus

Creare lo stack di distribuzione

Successivamente, è necessario creare lo stack di distribuzione con ambito il gruppo di risorse creato di recente. Per creare lo stack di distribuzione, eseguire il comando seguente dal terminale in Visual Studio Code.

  1. Per creare lo stack di distribuzione, eseguire il comando seguente dal terminale in Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Richiede di immettere un valore per sqlServerAdminUserName. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando dell'interfaccia della riga di comando di Azure che richiede di immettere un nome utente per l'amministratore di SQL Server.

  3. Richiede di immettere un valore per sqlServerAdminPassword. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando dell'interfaccia della riga di comando di Azure che richiede di immettere una password per l'amministratore di SQL Server.

  4. Prima di passare all'attività successiva, attendere il completamento dell'operazione di aggiornamento.

  1. Per creare lo stack di distribuzione, eseguire il comando seguente dal terminale in Visual Studio Code.

    New-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode None
    
  2. Richiede di immettere un valore per sqlServerAdminUserName. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando di Azure PowerShell che richiede di immettere un nome utente per l'amministratore di SQL Server.

  3. Richiede di immettere un valore per sqlServerAdminPassword. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando di Azure PowerShell che richiede di immettere una password per l'amministratore di SQL Server.

  4. Prima di passare all'attività successiva, attendere il completamento dell'operazione di aggiornamento.

Modificare il file Bicep per aggiungere l'area di lavoro Log Analytics esistente e una nuova istanza di Application Insights

  1. Aprire il file main.bicep in Visual Studio Code.

  2. Aggiungere il codice evidenziato alla sezione Variabili del file:

    // Variables
    @description('The name of the Application Insights instance.')
    var applicationInsightsName = 'appinsights-deposits'
    
    @description('The name of the app service plan.')
    var appServicePlanName = 'plan-deposits'
    
    @description('The name of the Log Analytics Workspace.')
    var logAnalyticsWorkspaceName = 'log-deposits'
    
  3. Aggiungere il codice seguente alla fine del file:

    // Resource - Log Analytics Workspace
    resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
      name: logAnalyticsWorkspaceName
      location: location
      properties: {
        retentionInDays: 30
        sku: {
          name: 'PerGB2018'
        }
      }
    }
    
    // Resource - Application Insights
    resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
      name: applicationInsightsName
      location: location
      kind: 'web'
      properties: {
        Application_Type: 'web'
        WorkspaceResourceId: logAnalyticsWorkspace.id
      }
    }
    
  4. Salvare le modifiche apportate al file.

Modificare il file Bicep per modificare il piano di servizio app e il servizio app

  1. Aprire il file main.bicep in Visual Studio Code.

  2. Modificare il nome sku del piano di servizio app da F1 a S1:

    // Resource - App Service Plan
    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'S1'
        capacity: 1
      }
    }
    
  3. Aggiungi il codice evidenziato per collegare l'istanza di Application Insights:

    // Resource - Web App
    resource webApplication 'Microsoft.Web/sites@2023-12-01' = {
      name: webApplicationName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }     
          ]
        }    
      }
    }
    
  4. Salvare le modifiche apportate al file.

Aggiornare lo stack di distribuzione

Dopo aver modificato il file Bicep, si vuole aggiornare lo stack di distribuzione in modo che vengano implementate le modifiche apportate alle risorse nel file Bicep.

  1. Per aggiornare lo stack di distribuzione, eseguire il comando seguente dal terminale in Visual Studio Code.

    az stack group create \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --template-file ./main.bicep \
        --action-on-unmanage detachAll \
        --deny-settings-mode none
    
  2. Viene visualizzato un messaggio che informa che lo stack esiste già nella sottoscrizione corrente. Se il valore dell'azione sul parametro non gestito cambia, l'avviso notifica gli utenti dei nuovi valori. Premere y, quindi premere 'INVIO'.

    Screenshot che mostra l'avviso della riga di comando dell'interfaccia della riga di comando di Azure che indica che lo stack di distribuzione esiste già.

  3. Richiede di immettere un valore per sqlServerAdminUserName. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando dell'interfaccia della riga di comando di Azure che richiede di immettere un nome utente per l'amministratore di SQL Server.

  4. Richiede di immettere un valore per sqlServerAdminPassword. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando dell'interfaccia della riga di comando di Azure che richiede di immettere una password per l'amministratore di SQL Server.

  5. Prima di passare all'attività successiva, attendere il completamento dell'operazione di aggiornamento.

Dopo aver modificato il file Bicep, si vuole aggiornare lo stack di distribuzione in modo che vengano implementate le modifiche apportate al piano di servizio app.

  1. Per aggiornare lo stack di distribuzione, eseguire il comando seguente dal terminale in Visual Studio Code.

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. Richiede di immettere un valore per sqlServerAdminUserName. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando di Azure PowerShell che richiede di immettere un nome utente per l'amministratore di SQL Server.

  3. Richiede di immettere un valore per sqlServerAdminPassword. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.

    Screenshot che mostra la riga di comando di Azure PowerShell che richiede di immettere una password per l'amministratore di SQL Server.

  4. Prima di passare all'attività successiva, attendere il completamento dell'operazione di aggiornamento.

Verificare l'aggiornamento allo stack di distribuzione e alle risorse gestite

Al termine dell'aggiornamento, si vuole verificare che lo SKU del piano di servizio app sia aggiornato e che lo stack di distribuzione gestisca l'area di lavoro Log Analytics esistente e la nuova istanza di Application Insights.

  1. Per visualizzare la configurazione del piano di servizio app, eseguire il comando seguente dal terminale in Visual Studio Code.

    az appservice plan show \
        --name plan-deposits
        --resource-group rg-depositsApplication
    
  2. Prendere nota della sezione sku dell'output. Il piano di servizio app è ora disponibile nello SKU S1. Dovrebbe essere simile all'output seguente:

    "sku": {
        "capacity": 1,
        "family": "S",
        "name": "S1",
        "size": "S1",
        "tier": "Standard"
    },
    
  3. Per visualizzare la configurazione dello stack di distribuzione, eseguire il comando seguente dal terminale in Visual Studio Code.

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  4. Prendere nota della sezione delle risorse dell'output. Viene ora visualizzata l'area di lavoro Log Analytics esistente e la nuova istanza di Application Insights elencata come risorse gestite. Il risultato dovrebbe essere simile all'output seguente:

    "resources": [
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      },
      {
        "denyStatus": "none",
        "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits",
        "resourceGroup": "rg-depositsApplication",
        "status": "managed"
      }
    ],
    
  1. Per visualizzare la configurazione del piano di servizio app, eseguire il comando seguente dal terminale in Visual Studio Code.

    $plan = Get-AzAppServicePlan `
        -ResourceGroupName rg-depositsApplication `
        -Name plan-deposits
    $sku = $plan.Sku
    $sku
    
  2. Osservare l'output. Il piano di servizio app è ora disponibile nello SKU S1. Dovrebbe essere simile al seguente:

    Name         : S1
    Tier         : Standard
    Size         : S1
    Family       : S
    Capacity     : 1
    
  3. Per visualizzare la configurazione dello stack di distribuzione, eseguire il comando seguente dal terminale in Visual Studio Code.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  4. Prendere nota della sezione delle risorse dell'output. Viene ora visualizzata l'area di lavoro Log Analytics esistente e la nuova istanza di Application Insights elencata come risorse gestite. Il risultato dovrebbe essere simile all'output seguente:

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/                        sql-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits