Aggiornamento ed eliminazione di uno stack di distribuzione
Gli stack di distribuzione consentono di gestire le risorse di Azure usando processi e modelli standard. Man mano che l'applicazione cambia, cambiano anche le risorse che costituiscono la costituiscono. L'aggiunta e la rimozione di risorse gestite è una parte fondamentale della gestione del ciclo di vita.
Sono stati completati lo sprint 1 e la distribuzione iniziale dell'applicazione di depositi usando gli stack di distribuzione. A questo punto, è necessario prepararsi perché sprint 2 introduce nuovi servizi all'applicazione. L'obbiettivo è apprendere come aggiornare ed eliminare stack di distribuzione e risorse gestite.
In questa unità si apprenderà come aggiornare uno stack di distribuzione aggiungendo risorse al file Bicep. Si apprenderà anche come eliminare uno stack di distribuzione e le relative risorse gestite.
Nota
I comandi riportati in questa unità vengono illustrati per spiegare i concetti. Non eseguire ancora i comandi. Presto sarà possibile provare quanto appreso.
Aggiornamento di uno stack di distribuzione
Man mano che un'applicazione si evolve, anche le sue risorse si evolvono. Come si aggiorna uno stack di distribuzione e le relative risorse gestite quando vengono aggiunti nuovi servizi e funzionalità? Quali situazioni richiedono l'aggiornamento di uno stack di distribuzione? L'aggiunta di una nuova risorsa o la modifica della proprietà di una risorsa gestita esistente richiederebbe l'aggiornamento dello stack di distribuzione.
Aggiornare uno stack significa aggiornare le risorse definite nel modello JSON ARM, nel file Bicep o nella specifica di modello. Dopo aver apportato la modifica al file modello, lo stack di distribuzione viene aggiornato usando il comando appropriato.
Si supponga che l'applicazione depositi debba aggiungere un nuovo database SQL di Azure e che lo stack di distribuzione gestisca il database. Per aggiungere il nuovo database, si aggiorna il file Bicep per definire un nuovo database e un nuovo server SQL di Azure.
// 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'
}
}
Il codice evidenziato definisce il nuovo database SQL di Azure per l'applicazione depositi. Dopo avere definito la nuova risorsa, è necessario aggiornare lo stack di distribuzione.
Per aggiornare uno stack di distribuzione usando l'interfaccia della riga di comando di Azure, usare il comando az stack group create
.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Nota
L'interfaccia della riga di comando di Azure non dispone di un comando dedicato per aggiornare uno stack di distribuzione. Usare il comando Crea per aggiornare lo stack.
Quando si esegue un aggiornamento nello stack, 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.
Per verificare che lo stack gestisca le nuove risorse, usare il comando az stack group show
.
az stack group show \
--resource-group rg-depositsApplication
--name stack-deposits
{
"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,
"parameters": {
"sqlServerAdminPassword": {
"reference": null,
"type": "securestring",
"value": ""
},
"sqlServerAdminUserName": {
"reference": null,
"type": "string",
"value": "sqladmin"
}
},
"parametersLink": null,
"provisioningState": "succeeded",
"resourceGroup": "rg-depositsApplication",
"resources": [
{
"denyStatus": "none",
"id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq",
"resourceGroup": "rg-depositsApplication",
"status": "managed"
},
{
"denyStatus": "none",
"id": "/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq",
"resourceGroup": "rg-depositsApplication",
"status": "managed"
},
{
"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"
}
Il codice evidenziato mostra il nuovo server SQL di Azure e il database SQL di Azure gestiti dallo stack di distribuzione.
Per aggiornare uno stack di distribuzione con Azure PowerShell, usare il comando Set-AzResourceGroupDeploymentStack
.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Per verificare che lo stack gestisca le nuove risorse, usare il comando Get-AzResourceGroupDeploymentStack
.
Get-AzResourceGroupDeploymentStack `
-ResourceGroupName rg-depositsApplication `
-Name stack-deposits
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
/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq
/subscriptions/././rg-depositsApplication/././servers/sql-eque2jlrboltq/databases/sqldb-eque2jlrboltq
Parameters :
Name Type Value
======================== ========================= ==========
sqlServerAdminUserName string "sqladmin"
sqlServerAdminPassword securestring ""
Il codice evidenziato mostra il nuovo server SQL di Azure e il database SQL di Azure gestiti dallo stack di distribuzione.
Nel modulo successivo si lavora sulla gestione dei cicli di vita delle risorse, tra cui l'aggiunta, l'aggiornamento, la disconnessione e l'eliminazione di risorse gestite.
Eliminazione di uno stack di distribuzione
La pulizia affidabile delle risorse è una funzionalità chiave degli stack di distribuzione. Quando si elimina uno stack di distribuzione, è anche possibile eliminare le risorse gestite, i gruppi di risorse e i gruppi di gestione. L'uso di una singola chiamata API elimina la necessità di comprendere le dipendenze. Come per la creazione e l'aggiornamento degli stack di distribuzione, l'azione sul parametro non gestito determina il modo in cui Azure gestisce le risorse scollegate.
Nota
In questo modulo vengono distribuiti stack di distribuzione con ambito gruppo di risorse. In questo caso, il gruppo di risorse non è gestito dallo stack. Il valore "elimina tutto" per l'azione sul parametro non gestito non elimina il gruppo di risorse in cui è presente lo stack. È necessario eliminare il gruppo di risorse dopo l'eliminazione dello stack e delle relative risorse.
Per eliminare uno stack di distribuzione usando l'interfaccia della riga di comando di Azure, usare il comando az stack group delete
. L'argomento --action-on-unmanaged
determina il modo in cui Azure gestisce le risorse scollegate, i gruppi di risorse e i gruppi di gestione.
az stack group delete \
--name stack-deposits \
--resource-group rg-depositsApplication \
--action-on-unmanage deleteAll
Per eliminare uno stack di distribuzione con Azure PowerShell, usare il comando Remove-AzResourceGroupDeploymentStack
. L'argomento -ActionOnUnmanage
determina il modo in cui Azure gestisce le risorse scollegate, i gruppi di risorse e i gruppi di gestione.
Remove-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-ActionOnUnmanage -DeleteAll