Resources loskoppelen en verwijderen uit een implementatiestack
Wijzigingen worden voortgezet met de stortingsaanvraag. Het team heeft besloten om resources uit de toepassing te verwijderen. Sommige resources moeten blijven bestaan in Azure, terwijl andere veilig kunnen worden verwijderd. Meer informatie over hoe Azure resources verwerkt die door een implementatiestack niet meer worden beheerd.
In deze les leert u hoe u bepaalt hoe Azure resources verwerkt die zijn losgekoppeld van een implementatiestack met behulp van de actie voor onbeheerde parameter.
Notitie
De opdrachten in deze les worden weergegeven om concepten te illustreren. Voer de opdrachten nog niet uit. U oefent wat u hier binnenkort leert.
Actie over niet-beheerde onbeheerde
Met implementatiestacks wordt de actie voor onbeheerde parameter gebruikt om te bepalen hoe Azure losgekoppelde resources, resourcegroepen en beheergroepen verwerkt. U kunt de actie voor een onbeheerde parameter instellen bij het maken, wijzigen of verwijderen van een implementatiestack. Alle drie de bewerkingen hebben de mogelijkheid om het gedrag van de actie op een onbeheerde parameter in te stellen. Houd er rekening mee dat de waardeset voor het laatst voorrang heeft.
Er zijn drie mogelijke waarden voor de --action-on-unmanage
parameter:
-
deleteAll
- verwijdert resources, resourcegroepen en beheergroepen -
deleteResources
- verwijdert resources, maar koppelt resourcegroepen en beheergroepen los -
detachAll
- alle resources, resourcegroepen en beheergroepen loskoppelen
Er zijn drie mogelijke waarden voor de -ActionOnUnmanage
parameter:
-
DeleteAll
- verwijdert resources, resourcegroepen en beheergroepen -
DeleteResources
- verwijdert resources, maar koppelt resourcegroepen en beheergroepen los -
DetachAll
- alle resources, resourcegroepen en beheergroepen loskoppelen
Een beheerde resource loskoppelen
Een losgekoppelde resource, ook wel een niet-beheerde resource genoemd, is een resource die niet meer wordt bijgehouden of beheerd door een implementatiestack, maar de resource bestaat nog steeds in Azure. Het standaardgedrag van implementatiestacks is het loskoppelen van resources in plaats van te verwijderen. U moet bijvoorbeeld de resource bewaren, zodat u deze in een andere implementatiestack in de toekomst kunt gebruiken, of u moet mogelijk handmatig controleren of de gegevens veilig zijn om te verwijderen.
Er zijn twee waarden van de actie voor onbeheerde parameters waarmee resources, resourcegroepen en beheergroepen worden ingesteld om los te koppelen wanneer de implementatiestack deze niet meer beheert.
Implementatiestacks kunnen Key Vault-geheimen niet verwijderen. Als u sleutelkluisgeheimen uit een sjabloon verwijdert, moet u ook de opdracht update/delete van de implementatiestack uitvoeren met de loskoppelmodus.
-
deleteResources
- verwijdert resources, maar koppelt resourcegroepen en beheergroepen los -
detachAll
- alle resources, resourcegroepen en beheergroepen loskoppelen
deleteResources
detachAll
Wanneer u uw implementatiestacks maakt, wijzigt of verwijdert, biedt u extra beveiliging tegen onbedoelde verwijdering. Bekijk ons scenario uit de laatste les. We hebben een bestaande Log Analytics-werkruimte toegevoegd aan onze implementatiestack. De werkruimte wordt gebruikt door andere toepassingen, niet alleen de stortingsaanvraag. Het moet na de levensduur van de toepassing blijven bestaan. Door de actie te gebruiken detachAll
voor een onbeheerde parameter, blijven de benodigde resources bestaan in Azure.
-
DeleteResources
- verwijdert resources, maar koppelt resourcegroepen en beheergroepen los -
DetachAll
- alle resources, resourcegroepen en beheergroepen loskoppelen
DeleteResources
DetachAll
Wanneer u uw implementatiestacks maakt, wijzigt of verwijdert, biedt u extra beveiliging tegen onbedoelde verwijdering. Bekijk ons scenario uit de laatste les. We hebben een bestaande Log Analytics-werkruimte toegevoegd aan onze implementatiestack. De werkruimte wordt gebruikt door andere toepassingen, niet alleen de stortingsaanvraag. Het moet na de levensduur van de toepassing blijven bestaan. Door de actie te gebruiken DetachAll
voor een onbeheerde parameter, blijven de benodigde resources bestaan in Azure.
Laten we eens kijken naar ons Bicep-bestand uit de laatste les. Het sjabloonbestand definieert een App Service-plan, een web-app, een Azure SQL-server en -database, een Log Analytics-werkruimte en een Application Insights-exemplaar. Stel dat we de Log Analytics-werkruimte en het Application Insights-exemplaar dat we in de laatste les hebben gemaakt, moeten verwijderen. We bewerken ons Bicep-bestand en verwijderen de gemarkeerde code die verwijst naar onze web-app.
// 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
}
}
Als u de wijzigingen wilt toepassen, moet u de implementatiestack bijwerken. Gebruik de az stack group create
opdracht om een implementatiestack bij te werken met behulp van Azure CLI.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Nadat de updatebewerking is voltooid, beheert de implementatiestack de Log Analytics-werkruimte en het Application Insights-exemplaar niet meer. In onze opdracht hebben we gebruikt --action-on-unmanage detachAll
om op te geven hoe Azure resources verwerkt die een implementatiestack niet meer beheert. In dit geval worden de resources losgekoppeld van de implementatiestack, maar ze bestaan nog steeds in de resourcegroep.
Als u de wijzigingen wilt toepassen, moet u de implementatiestack bijwerken. Als u een implementatiestack wilt bijwerken met behulp van Azure PowerShell, gebruikt u de Set-AzResourceGroupDeploymentStack
opdracht.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Nadat de updatebewerking is voltooid, beheert de implementatiestack de Log Analytics-werkruimte en het Application Insights-exemplaar niet meer. In onze opdracht hebben we gebruikt -ActionOnUnmanage DetachAll
om op te geven hoe Azure resources verwerkt die een implementatiestack niet meer beheert. In dit geval worden de resources losgekoppeld van de implementatiestack, maar ze bestaan nog steeds in de resourcegroep.
Een beheerde resource verwijderen
Implementatiestacks bieden betrouwbare opschoning van resources. Wanneer u een implementatiestack bijwerkt of verwijdert, kunt u ook de beheerde resources, resourcegroepen en beheergroepen verwijderen. Er zijn twee waarden van de actie voor onbeheerde parameters waarmee resources, resourcegroepen en beheergroepen worden ingesteld die moeten worden verwijderd wanneer de implementatiestack deze niet meer beheert.
-
deleteAll
- verwijdert resources, resourcegroepen en beheergroepen -
deleteResources
- verwijdert resources, maar koppelt resourcegroepen en beheergroepen los
Kijk eens naar onze depositoaanvraag. Stel dat het ontwikkelteam besluit een Azure Database for PostgreSQL te gebruiken in plaats van Azure SQL Database. We moeten eerst onze implementatiestack bijwerken om de Azure SQL-server en -database uit Azure te verwijderen en volledig te verwijderen. Als u dit gedrag wilt uitvoeren, gebruikt u de deleteAll
parameter of deleteResources
actie voor onbeheerde parameters bij het bijwerken of verwijderen van de implementatiestack.
-
DeleteAll
- verwijdert resources, resourcegroepen en beheergroepen -
DeleteResources
- verwijdert resources, maar koppelt resourcegroepen en beheergroepen los
Kijk eens naar onze depositoaanvraag. Stel dat het ontwikkelteam besluit een Azure Database for PostgreSQL te gebruiken in plaats van Azure SQL Database. We moeten eerst onze implementatiestack bijwerken om de Azure SQL-server en -database uit Azure te verwijderen en volledig te verwijderen. Als u dit gedrag wilt uitvoeren, gebruikt u de DeleteAll
parameter of DeleteResources
actie voor onbeheerde parameters bij het bijwerken of verwijderen van de implementatiestack.
Laten we eens kijken naar ons Bicep-bestand uit de vorige sectie. Het sjabloonbestand definieert een App Service-plan, een web-app en een Azure SQL-server en -database. Stel dat we de Azure SQL-server en -database moeten verwijderen. We bewerken ons Bicep-bestand en verwijderen de gemarkeerde code die verwijst naar onze web-app.
// 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'
}
}
We blijven over met de volgende code in ons bestand:
// 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
}
}
Als u de wijzigingen wilt toepassen, moet u de implementatiestack bijwerken. Gebruik de az stack group create
opdracht om een implementatiestack bij te werken met behulp van Azure CLI. Deze keer gebruiken --action-on-unmanage deleteAll
we in plaats van --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
Nadat de updatebewerking is voltooid, zijn de enige resources die overblijven het App Service-plan en de web-app. In onze opdracht hebben we gebruikt --action-on-unmanage deleteAll
om op te geven hoe Azure resources verwerkt die de implementatiestack niet meer beheert. In dit geval worden de resources verwijderd uit de implementatiestack en uit Azure.
Als u de wijzigingen wilt toepassen, moet u de implementatiestack bijwerken. Als u een implementatiestack wilt bijwerken met behulp van Azure PowerShell, gebruikt u de Set-AzResourceGroupDeploymentStack
opdracht.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DeleteAll `
-DenySettingsMode None
Nadat de updatebewerking is voltooid, zijn de enige resources die overblijven het App Service-plan en de web-app. In onze opdracht hebben we gebruikt -ActionOnUnmanage DeleteAll
om op te geven hoe Azure resources verwerkt die de implementatiestack niet meer beheert. In dit geval worden de resources verwijderd uit de implementatiestack en uit Azure.