Koppla från och ta bort resurser från en distributionsstack
Ändringarna fortsätter med inlåningsprogrammet. Teamet bestämde sig för att ta bort resurser från programmet. Vissa av resurserna måste finnas kvar i Azure, medan andra är säkra att ta bort. Du behöver lära dig mer om hur Azure hanterar resurser som en distributionsstack inte längre hanterar.
I den här lektionen får du lära dig hur du använder kontroll över hur Azure hanterar resurser som kopplas från en distributionsstack med hjälp av åtgärden för ohanterade parametrar.
Kommentar
Kommandona i den här enheten visas för att illustrera begrepp. Kör inte kommandona än. Du kommer att öva på det du lär dig här snart.
Åtgärd vid ohanterad återbesökt
Med distributionsstackar används åtgärden för ohanterade parametrar för att styra hur Azure hanterar fristående resurser, resursgrupper och hanteringsgrupper. Du kan ange åtgärden för ohanterad parameter när du skapar, ändrar eller tar bort en distributionsstack. Alla tre åtgärderna har möjlighet att ange beteendet för åtgärden på ohanterad parameter. Tänk på att den senaste värdeuppsättningen har företräde.
Det finns tre möjliga värden för parametern --action-on-unmanage
:
-
deleteAll
– tar bort resurser, resursgrupper och hanteringsgrupper -
deleteResources
– tar bort resurser, men kopplar från resursgrupper och hanteringsgrupper -
detachAll
– kopplar från alla resurser, resursgrupper och hanteringsgrupper
Det finns tre möjliga värden för parametern -ActionOnUnmanage
:
-
DeleteAll
– tar bort resurser, resursgrupper och hanteringsgrupper -
DeleteResources
– tar bort resurser, men kopplar från resursgrupper och hanteringsgrupper -
DetachAll
– kopplar från alla resurser, resursgrupper och hanteringsgrupper
Koppla från en hanterad resurs
En frånkopplad resurs, även kallad ohanterad resurs, är en resurs som inte längre spåras eller hanteras av en distributionsstack, men resursen finns fortfarande i Azure. Standardbeteendet för distributionsstackar är att koppla från resurser i stället för att ta bort. Du kan till exempel behöva behålla resursen så att du kan använda den i en annan distributionsstack i framtiden, eller så kan du behöva kontrollera att dess data är säkra att ta bort manuellt.
Det finns två värden för åtgärden för ohanterade parametrar som anger att resurser, resursgrupper och hanteringsgrupper ska kopplas från när distributionsstacken inte längre hanterar dem.
Distributionsstackar kan inte ta bort Key Vault-hemligheter. Om du tar bort key vault-hemligheter från en mall ska du även köra kommandot update/delete för distributionsstacken med frånkopplat läge.
-
deleteResources
– tar bort resurser, men kopplar från resursgrupper och hanteringsgrupper -
detachAll
– kopplar från alla resurser, resursgrupper och hanteringsgrupper
Om du använder antingen deleteResources
eller detachAll
när du skapar, ändrar eller tar bort dina distributionsstackar får du ytterligare skydd mot oavsiktlig borttagning. Tänk på vårt scenario från den senaste lektionen. Vi har lagt till en befintlig Log Analytics-arbetsyta i vår distributionsstack. Arbetsytan används av andra program, inte bara programmet för inlåning. Den måste finnas kvar efter programmets livslängd. Genom att använda detachAll
som åtgärd för ohanterad parameter fortsätter nödvändiga resurser att finnas i Azure.
-
DeleteResources
– tar bort resurser, men kopplar från resursgrupper och hanteringsgrupper -
DetachAll
– kopplar från alla resurser, resursgrupper och hanteringsgrupper
Om du använder antingen DeleteResources
eller DetachAll
när du skapar, ändrar eller tar bort dina distributionsstackar får du ytterligare skydd mot oavsiktlig borttagning. Tänk på vårt scenario från den senaste lektionen. Vi har lagt till en befintlig Log Analytics-arbetsyta i vår distributionsstack. Arbetsytan används av andra program, inte bara programmet för inlåning. Den måste finnas kvar efter programmets livslängd. Genom att använda DetachAll
som åtgärd för ohanterad parameter fortsätter nödvändiga resurser att finnas i Azure.
Nu ska vi överväga vår Bicep-fil från den senaste lektionen. Mallfilen definierar en apptjänstplan, en webbapp, en Azure SQL-server och databas, en Log Analytics-arbetsyta och en Application Insights-instans. Anta att vi måste ta bort Log Analytics-arbetsytan och Application Insights-instansen som vi skapade i den senaste lektionen. Vi redigerar vår Bicep-fil och tar bort den markerade koden som refererar till vår webbapp.
// 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
}
}
För att tillämpa ändringarna måste vi uppdatera distributionsstacken. Om du vill uppdatera en distributionsstack med Hjälp av Azure CLI använder du az stack group create
kommandot .
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
När uppdateringsåtgärden är klar hanterar distributionsstacken inte längre Log Analytics-arbetsytan och Application Insights-instansen. I vårt kommando använde --action-on-unmanage detachAll
vi för att ange hur Azure hanterar resurser som en distributionsstack inte längre hanterar. I det här fallet kopplas resurserna från distributionsstacken, men de finns fortfarande i resursgruppen.
För att tillämpa ändringarna måste vi uppdatera distributionsstacken. Om du vill uppdatera en distributionsstack med Hjälp av Azure PowerShell använder du Set-AzResourceGroupDeploymentStack
kommandot .
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
När uppdateringsåtgärden är klar hanterar distributionsstacken inte längre Log Analytics-arbetsytan och Application Insights-instansen. I vårt kommando använde -ActionOnUnmanage DetachAll
vi för att ange hur Azure hanterar resurser som en distributionsstack inte längre hanterar. I det här fallet kopplas resurserna från distributionsstacken, men de finns fortfarande i resursgruppen.
Ta bort en hanterad resurs
Distributionsstackar ger tillförlitlig resursrensning. När du uppdaterar eller tar bort en distributionsstack kan du även ta bort hanterade resurser, resursgrupper och hanteringsgrupper. Det finns två värden för åtgärden för ohanterade parametrar som anger resurser, resursgrupper och hanteringsgrupper som ska tas bort när distributionsstacken inte längre hanterar dem.
-
deleteAll
– tar bort resurser, resursgrupper och hanteringsgrupper -
deleteResources
– tar bort resurser, men kopplar från resursgrupper och hanteringsgrupper
Överväg vår insättningsapp. Anta att utvecklingsteamet bestämmer sig för att använda en Azure Database for PostgreSQL i stället för Azure SQL Database. Vi måste först uppdatera vår distributionsstack för att ta bort och ta bort Azure SQL-servern och databasen helt från Azure. För att utföra det här beteendet använder du deleteAll
åtgärden eller deleteResources
på ohanterad parameter när du uppdaterar eller tar bort distributionsstacken.
-
DeleteAll
– tar bort resurser, resursgrupper och hanteringsgrupper -
DeleteResources
– tar bort resurser, men kopplar från resursgrupper och hanteringsgrupper
Överväg vår insättningsapp. Anta att utvecklingsteamet bestämmer sig för att använda en Azure Database for PostgreSQL i stället för Azure SQL Database. Vi måste först uppdatera vår distributionsstack för att ta bort och ta bort Azure SQL-servern och databasen helt från Azure. För att utföra det här beteendet använder du DeleteAll
åtgärden eller DeleteResources
på ohanterad parameter när du uppdaterar eller tar bort distributionsstacken.
Nu ska vi överväga vår Bicep-fil från föregående avsnitt. Mallfilen definierar en apptjänstplan, en webbapp och en Azure SQL-server och databas. Anta att vi måste ta bort Azure SQL-servern och databasen. Vi redigerar vår Bicep-fil och tar bort den markerade koden som refererar till vår webbapp.
// 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'
}
}
Vi har kvar följande kod i filen:
// 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
}
}
För att tillämpa ändringarna måste vi uppdatera distributionsstacken. Om du vill uppdatera en distributionsstack med Hjälp av Azure CLI använder du az stack group create
kommandot . Den här gången använder --action-on-unmanage deleteAll
vi i stället för --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
När uppdateringsåtgärden är klar är de enda resurser som återstår apptjänstplanen och webbappen. I vårt kommando använde --action-on-unmanage deleteAll
vi för att ange hur Azure hanterar resurser som distributionsstacken inte längre hanterar. I det här fallet tas resurserna bort från distributionsstacken och från Azure.
För att tillämpa ändringarna måste vi uppdatera distributionsstacken. Om du vill uppdatera en distributionsstack med Hjälp av Azure PowerShell använder du Set-AzResourceGroupDeploymentStack
kommandot .
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DeleteAll `
-DenySettingsMode None
När uppdateringsåtgärden är klar är de enda resurser som återstår apptjänstplanen och webbappen. I vårt kommando använde -ActionOnUnmanage DeleteAll
vi för att ange hur Azure hanterar resurser som distributionsstacken inte längre hanterar. I det här fallet tas resurserna bort från distributionsstacken och från Azure.