Esercizio - Aggiungere risorse a uno stack di distribuzione
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.
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 templates in cui salvare il file.
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.
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.
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 usando l'interfaccia della riga di comando di 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.
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
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.
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 accedere ad Azure eseguendo il comando seguente:
Connect-AzAccount
Nel browser visualizzato accedere al proprio account Azure.
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.
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.
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
Richiede di immettere un valore per
sqlServerAdminUserName
. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.Richiede di immettere un valore per
sqlServerAdminPassword
. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.Prima di passare all'attività successiva, attendere il completamento dell'operazione di aggiornamento.
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
Richiede di immettere un valore per
sqlServerAdminUserName
. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.Richiede di immettere un valore per
sqlServerAdminPassword
. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.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
Aprire il file main.bicep in Visual Studio Code.
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'
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 } }
Salvare le modifiche apportate al file.
Modificare il file Bicep per modificare il piano di servizio app e il servizio app
Aprire il file main.bicep in Visual Studio Code.
Modificare il nome sku del piano di servizio app da
F1
aS1
:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }
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 } ] } } }
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.
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
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'.Richiede di immettere un valore per
sqlServerAdminUserName
. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.Richiede di immettere un valore per
sqlServerAdminPassword
. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.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.
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
Richiede di immettere un valore per
sqlServerAdminUserName
. Creare un nome per l'amministratore di SQL Server, quindi premere 'INVIO'.Richiede di immettere un valore per
sqlServerAdminPassword
. Creare una password complessa per l'amministratore di SQL Server, quindi premere 'INVIO'.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.
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
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" },
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
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" } ],
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
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
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
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