Scollegare ed eliminare risorse da uno stack di distribuzione
Le modifiche continuano con l'applicazione depositi. Il team ha deciso di rimuovere le risorse dall'applicazione. Alcune delle risorse devono continuare a esistere in Azure, mentre altre sono sicure da eliminare. Per altre informazioni su come Azure gestisce le risorse che uno stack di distribuzione non gestisce più.
In questa unità si apprenderà come usare il modo in cui Azure gestisce le risorse scollegate da uno stack di distribuzione usando l'azione sul parametro non gestito .
Nota
I comandi riportati in questa unità vengono illustrati per spiegare i concetti. Non eseguire ancora i comandi. Presto sarà possibile provare quanto appreso.
Azione sulla rivisitazione non gestita
Con gli stack di distribuzione, l'azione sul parametro non gestito viene usata per controllare il modo in cui Azure gestisce risorse scollegate, gruppi di risorse e gruppi di gestione. È possibile impostare l'azione sul parametro non gestito durante la creazione, la modifica o l'eliminazione di uno stack di distribuzione. Tutte e tre le operazioni hanno la possibilità di impostare il comportamento dell'azione sul parametro non gestito . Tenere presente che l'ultimo valore impostato ha la precedenza.
Per il --action-on-unmanage
parametro sono disponibili tre valori possibili:
deleteAll
- elimina risorse, gruppi di risorse e gruppi di gestionedeleteResources
- elimina le risorse, ma scollega gruppi di risorse e gruppi di gestionedetachAll
- scollega tutte le risorse, i gruppi di risorse e i gruppi di gestione
Per il -ActionOnUnmanage
parametro sono disponibili tre valori possibili:
DeleteAll
- elimina risorse, gruppi di risorse e gruppi di gestioneDeleteResources
- elimina le risorse, ma scollega gruppi di risorse e gruppi di gestioneDetachAll
- scollega tutte le risorse, i gruppi di risorse e i gruppi di gestione
Scollegare una risorsa gestita
Una risorsa scollegata, nota anche come risorsa non gestita, è una risorsa non più monitorata o gestita da uno stack di distribuzione, ma la risorsa esiste ancora in Azure. Il comportamento predefinito degli stack di distribuzione consiste nello scollegare le risorse anziché eliminare. Ad esempio, potrebbe essere necessario mantenere la risorsa in modo che sia possibile usarla in un altro stack di distribuzione in futuro oppure potrebbe essere necessario verificare manualmente che i relativi dati siano sicuri da eliminare.
Esistono due valori dell'azione sul parametro non gestito che impostano risorse, gruppi di risorse e gruppi di gestione da scollegare quando lo stack di distribuzione non li gestisce più.
Gli stack di distribuzione non possono eliminare segreti di Key Vault. Se si rimuovono segreti di Key Vault da un modello, assicurarsi di eseguire anche il comando di aggiornamento/eliminazione dello stack di distribuzione con la modalità di scollegamento.
deleteResources
- elimina le risorse, ma scollega gruppi di risorse e gruppi di gestionedetachAll
- scollega tutte le risorse, i gruppi di risorse e i gruppi di gestione
L'uso di deleteResources
o detachAll
durante la creazione, la modifica o l'eliminazione degli stack di distribuzione offre una protezione aggiuntiva da eliminazioni accidentali. Si consideri lo scenario dell'ultima unità. È stata aggiunta un'area di lavoro log Analitica esistente allo stack di distribuzione. L'area di lavoro viene usata da altre applicazioni, non solo dall'applicazione di depositi. Deve persistere oltre la durata dell'applicazione. detachAll
Usando come azione sul parametro non gestito, le risorse necessarie continuano a esistere in Azure.
DeleteResources
- elimina le risorse, ma scollega gruppi di risorse e gruppi di gestioneDetachAll
- scollega tutte le risorse, i gruppi di risorse e i gruppi di gestione
L'uso di DeleteResources
o DetachAll
durante la creazione, la modifica o l'eliminazione degli stack di distribuzione offre una protezione aggiuntiva da eliminazioni accidentali. Si consideri lo scenario dell'ultima unità. È stata aggiunta un'area di lavoro log Analitica esistente allo stack di distribuzione. L'area di lavoro viene usata da altre applicazioni, non solo dall'applicazione di depositi. Deve persistere oltre la durata dell'applicazione. DetachAll
Usando come azione sul parametro non gestito, le risorse necessarie continuano a esistere in Azure.
Si consideri il file Bicep dell'ultima unità. Il file modello definisce un piano di servizio app, un'app Web, un server SQL di Azure e un database, un'area di lavoro Log Analitica e un'istanza di Application Insights. Si supponga di dover rimuovere l'area di lavoro Log Analitica e l'istanza di Application Insights creata nell'ultima unità. Il file Bicep viene modificato rimuovendo il codice evidenziato che fa riferimento all'app Web.
// 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 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'
// Resource - App Service Plan
resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
name: appServicePlanName
location: location
sku: {
name: 'S1'
capacity: 1
}
}
// 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
}
]
}
}
}
// 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'
}
}
// 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
}
}
Per applicare le modifiche, è 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
Al termine dell'operazione di aggiornamento, lo stack di distribuzione non gestisce più l'area di lavoro Log Analitica e l'istanza di Application Insights. Nel comando è stato usato --action-on-unmanage detachAll
per specificare come Azure gestisce le risorse che uno stack di distribuzione non gestisce più. In questo caso, le risorse vengono scollegate dallo stack di distribuzione, ma sono ancora presenti nel gruppo di risorse.
Per applicare le modifiche, è necessario aggiornare lo 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
Al termine dell'operazione di aggiornamento, lo stack di distribuzione non gestisce più l'area di lavoro Log Analitica e l'istanza di Application Insights. Nel comando è stato usato -ActionOnUnmanage DetachAll
per specificare come Azure gestisce le risorse che uno stack di distribuzione non gestisce più. In questo caso, le risorse vengono scollegate dallo stack di distribuzione, ma sono ancora presenti nel gruppo di risorse.
Eliminare una risorsa gestita
Gli stack di distribuzione offrono una pulizia affidabile delle risorse. Quando si aggiorna o si elimina uno stack di distribuzione, è anche possibile eliminare le risorse gestite, i gruppi di risorse e i gruppi di gestione. Esistono due valori dell'azione sul parametro non gestito che impostano risorse, gruppi di risorse e gruppi di gestione da eliminare quando lo stack di distribuzione non li gestisce più.
deleteAll
- elimina risorse, gruppi di risorse e gruppi di gestionedeleteResources
- elimina le risorse, ma scollega gruppi di risorse e gruppi di gestione
Considera la nostra domanda di depositi. Si supponga che il team di sviluppo decida di usare un Database di Azure per PostgreSQL invece di database SQL di Azure. È necessario prima aggiornare lo stack di distribuzione per rimuovere ed eliminare completamente il server SQL di Azure e il database da Azure. Per eseguire questo comportamento, usare l'azione o deleteResources
sul parametro non gestito durante l'aggiornamento o l'eliminazione deleteAll
dello stack di distribuzione.
DeleteAll
- elimina risorse, gruppi di risorse e gruppi di gestioneDeleteResources
- elimina le risorse, ma scollega gruppi di risorse e gruppi di gestione
Considera la nostra domanda di depositi. Si supponga che il team di sviluppo decida di usare un Database di Azure per PostgreSQL invece di database SQL di Azure. È necessario prima aggiornare lo stack di distribuzione per rimuovere ed eliminare completamente il server SQL di Azure e il database da Azure. Per eseguire questo comportamento, usare l'azione o DeleteResources
sul parametro non gestito durante l'aggiornamento o l'eliminazione DeleteAll
dello stack di distribuzione.
Si consideri il file Bicep della sezione precedente. Il file modello definisce un piano di servizio app, un'app Web e un database SQL di Azure. Si supponga di dover rimuovere il server e il database SQL di Azure. Il file Bicep viene modificato rimuovendo il codice evidenziato che fa riferimento all'app Web.
// 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'
}
}
Nel file viene lasciato il codice seguente:
// 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
}
}
Per applicare le modifiche, è 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
. Questa volta, usiamo --action-on-unmanage deleteAll
invece di --action-on-unmanage detachAll
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage deleteAll \
--deny-settings-mode none
Al termine dell'operazione di aggiornamento, le uniche risorse che rimangono sono il piano di servizio app e l'app Web. Nel comando è stato usato --action-on-unmanage deleteAll
per specificare come Azure gestisce le risorse che lo stack di distribuzione non gestisce più. In questo caso, le risorse vengono eliminate dallo stack di distribuzione e da Azure.
Per applicare le modifiche, è necessario aggiornare lo 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 DeleteAll `
-DenySettingsMode None
Al termine dell'operazione di aggiornamento, le uniche risorse che rimangono sono il piano di servizio app e l'app Web. Nel comando è stato usato -ActionOnUnmanage DeleteAll
per specificare come Azure gestisce le risorse che lo stack di distribuzione non gestisce più. In questo caso, le risorse vengono eliminate dallo stack di distribuzione e da Azure.