Esercizio - Creare e distribuire uno stack di distribuzione con Bicep

Completato

Si è nello sprint 1 per la nuova applicazione sui depositi. Si vuole testare il processo di creazione di uno stack di distribuzione con risorse gestite in una sottoscrizione di sviluppo. 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 di Azure e un Servizio app di Azure.

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.
  • Esaminare la configurazione dello stack di distribuzione e delle risorse gestite

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. È preferibile digitare il codice manualmente piuttosto che copiarlo e incollarlo, in modo da sperimentare in prima persona l'ausilio offerto dagli strumenti quando si scrivono file Bicep.

    // Parameters
    @description('The location for all resources.')
    param location string = 'eastus'
    
    @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
      }
    }
    

    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 Servizio app di Azure 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 finestra del terminale mostra bash nel pannello laterale, significa che la shell corretta è già aperta. In alternativa, se si vede un'icona della shell bash a destra, è possibile selezionarla per avviare la shell.

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

    Se viene visualizzata una shell diversa da bash, selezionare l'elenco a discesa delle shell e quindi Git 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.

  3. 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 finestra del terminale mostra pwsh o powershell a destra, significa che la shell corretta è già aperta. In alternativa, se a destra viene visualizzata un'icona della shell di PowerShell, è possibile selezionarla per avviare la shell.

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

    Se viene visualizzata una shell diversa da pwsh o powershell, 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.

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

az stack group create \
    --name stack-deposits \
    --resource-group rg-depositsApplication \
    --template-file ./main.bicep \
    --action-on-unmanage detachAll \
    --deny-settings-mode none
New-AzResourceGroupDeploymentStack `
    -Name stack-deposits `
    -ResourceGroupName rg-depositsApplication `
    -TemplateFile ./main.bicep `
    -ActionOnUnmanage DetachAll `
    -DenySettingsMode None

Verificare la creazione dello stack di distribuzione e delle risorse gestite

Quando si crea uno stack di distribuzione e le relative risorse gestite, è possibile visualizzarne la configurazione usando la riga di comando o il portale di Azure. In questo esercizio, si usa l'interfaccia della riga di comando di Azure. 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

I risultati includono le proprietà dello stack di distribuzione e lo stato delle risorse gestite. L'output JSON dovrebbe essere simile all'immagine seguente:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "bypassStackOutOfSyncError": null,
  "correlationId": ".",
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deployments/stack-deposits",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT2M53.2734284S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/././rg-depositsApplication/./Microsoft.Resources/deploymentStacks/stack-deposits",
  "location": null,
  "name": "stack-deposits",
  "outputs": null,
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "rg-depositsApplication",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-eque2jlrboltq",
      "resourceGroup": "rg-depositsApplication",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2024-01-01T00:00:01.000000+00:00",
    "createdBy": "depositsapplication@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2024-01-01T00:00:01.000000+00:00",
    "lastModifiedBy": "depositsapplication@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": {},
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Prendere nota della sezione delle risorse dell'output. Per ogni risorsa, mostra lo stato come "gestito", il relativo gruppo di risorse, il relativo ID risorsa e le impostazioni di rifiuto.

Quando si crea uno stack di distribuzione e le relative risorse gestite, è possibile visualizzarne la configurazione usando la riga di comando o il portale di Azure. In questo esercizio si usa Azure PowerShell. 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

I risultati includono le proprietà dello stack di distribuzione e lo stato delle risorse gestite. L'output di PowerShell dovrebbe essere simile all'immagine seguente:

Id                            : /subscriptions/././rg-depositsApplication/././deploymentStacks/stack-deposits
Name                          : stack-deposits
ProvisioningState             : succeeded
resourcesCleanupAction        : detach
resourceGroupsCleanupAction   : detach
managementGroupsCleanupAction : detach
CorrelationId                 : .
DenySettingsMode              : none
CreationTime(UTC)             : 1/01/2024 0:00:01 AM
DeploymentId                  : /subscriptions/././rg-depositsApplication/././deployments/stack-deposits
Resources                     : /subscriptions/././rg-depositsApplication/././serverfarms/plan-deposits
                                /subscriptions/././rg-depositsApplication/././sites/webapp-eque2jlrboltq

Prendere nota della sezione delle risorse dell'output. Definisce le risorse gestite dallo stack di distribuzione. Viene visualizzato l'ID risorsa completo di ogni risorsa.