Löschen und Trennen von Ressourcen von einem Bereitstellungsstapel
Änderungen werden mit der Depotanwendung fortgesetzt. Das Team hat beschlossen, Ressourcen aus der Anwendung zu entfernen. Einige der Ressourcen müssen weiterhin in Azure vorhanden sein, während andere problemlos gelöscht werden können. Sie müssen sich ausführlicher darüber informieren, wie Azure Ressourcen verarbeitet, die nicht mehr vom Bereitstellungsstapel verwaltet werden.
In dieser Lerneinheit erfahren Sie, wie Sie mithilfe des Parameters action on unmanage (Aktion für Nichtverwalten) steuern können, wie Azure von einem Bereitstellungsstapel getrennte Ressourcen verarbeitet.
Hinweis
Die Befehle in dieser Lerneinheit dienen der Veranschaulichung der Konzepte. Führen Sie die Befehle jetzt noch nicht aus. Sie können das Erlernte in Kürze üben.
Erneute Betrachtung von „action on unmanage“
Im Zusammenhang mit Bereitstellungsstapeln wird mit dem Parameter action on unmanage gesteuert, wie Azure getrennte Ressourcen sowie Ressourcen- und Verwaltungsgruppen verarbeitet. Sie können den Parameter action on unmanage beim Erstellen, Ändern oder Löschen eines Bereitstellungsstapels festlegen. Alle drei Vorgänge haben die Möglichkeit, das Verhalten des Parameters action on unmanage festzulegen. Denken Sie daran, dass der zuletzt festgelegte Wert Vorrang hat.
Es gibt drei mögliche Werte für den Parameter --action-on-unmanage
:
deleteAll
: Löscht Ressourcen sowie Ressourcen- und VerwaltungsgruppendeleteResources
: Löscht Ressourcen, aber trennt Ressourcen- und VerwaltungsgruppendetachAll
: Trennt alle Ressourcen sowie Ressourcen- und Verwaltungsgruppen
Es gibt drei mögliche Werte für den Parameter -ActionOnUnmanage
:
DeleteAll
: Löscht Ressourcen sowie Ressourcen- und VerwaltungsgruppenDeleteResources
: Löscht Ressourcen, aber trennt Ressourcen- und VerwaltungsgruppenDetachAll
: Trennt alle Ressourcen sowie Ressourcen- und Verwaltungsgruppen
Trennen einer verwalteten Ressource
Eine getrennte Ressource, auch bekannt als nicht verwaltete Ressource, ist eine Ressource, die nicht mehr von einem Bereitstellungsstapel nachverfolgt oder verwaltet wird. Die Ressource ist jedoch weiterhin in Azure vorhanden. Das Standardverhalten von Bereitstellungsstapeln besteht darin, Ressourcen zu trennen und nicht zu löschen. Beispielsweise müssen Sie die Ressource möglicherweise beibehalten, damit Sie sie in Zukunft in einem anderen Bereitstellungsstapel verwenden können, oder Sie müssen manuell überprüfen, ob die Daten sicher gelöscht werden können.
Es gibt zwei Werte des Parameters action on unmanage, die festlegen, dass Ressourcen, Ressourcengruppen und Verwaltungsgruppen getrennt werden sollen, wenn sie nicht mehr vom Bereitstellungsstapel verwaltet werden.
Bereitstellungsstapel können Schlüsseltresorgeheimnisse nicht löschen. Wenn Sie Schlüsseltresorgeheimnisse aus einer Vorlage entfernen, stellen Sie sicher, dass Sie auch den Befehl zum Aktualisieren/Löschen des Bereitstellungsstapels mit dem Trennmodus ausführen.
deleteResources
: Löscht Ressourcen, aber trennt Ressourcen- und VerwaltungsgruppendetachAll
: Trennt alle Ressourcen sowie Ressourcen- und Verwaltungsgruppen
Die Verwendung von deleteResources
oder detachAll
beim Erstellen, Ändern oder Löschen Ihrer Bereitstellungsstapel bietet zusätzlichen Schutz vor versehentlichem Löschen. Betrachten Sie das Szenario aus der letzten Lerneinheit. Sie haben dem Bereitstellungsstapel einen vorhandenen Log Analytics-Arbeitsbereich hinzugefügt. Der Arbeitsbereich wird von anderen Anwendungen verwendet, nicht nur von der Depotanwendung. Er muss über die Lebensdauer der Anwendung hinaus beibehalten werden. Wenn Sie detachAll
als Parameter action on unmanage verwenden, sind die erforderlichen Ressourcen weiterhin in Azure vorhanden.
DeleteResources
: Löscht Ressourcen, aber trennt Ressourcen- und VerwaltungsgruppenDetachAll
: Trennt alle Ressourcen sowie Ressourcen- und Verwaltungsgruppen
Die Verwendung von DeleteResources
oder DetachAll
beim Erstellen, Ändern oder Löschen Ihrer Bereitstellungsstapel bietet zusätzlichen Schutz vor versehentlichem Löschen. Betrachten Sie das Szenario aus der letzten Lerneinheit. Sie haben dem Bereitstellungsstapel einen vorhandenen Log Analytics-Arbeitsbereich hinzugefügt. Der Arbeitsbereich wird von anderen Anwendungen verwendet, nicht nur von der Depotanwendung. Er muss über die Lebensdauer der Anwendung hinaus beibehalten werden. Wenn Sie DetachAll
als Parameter action on unmanage verwenden, sind die erforderlichen Ressourcen weiterhin in Azure vorhanden.
Sehen Sie sich die Bicep-Datei aus der letzten Lerneinheit an. Die Vorlagendatei definiert einen App Service-Plan, eine Web-App, einen Azure SQL-Server und eine Azure SQL-Datenbank, einen Log Analytics-Arbeitsbereich und eine Application Insights-Instanz. Angenommen, Sie müssen den Log Analytics-Arbeitsbereich und die Application Insights-Instanz entfernen, die Sie in der letzten Lerneinheit erstellt haben. Sie bearbeiten die Bicep-Datei und entfernen den hervorgehobenen Code, der auf Ihre Web-App verweist.
// 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
}
}
Um die Änderungen anzuwenden, müssen Sie den Bereitstellungsstapel aktualisieren. Verwenden Sie den az stack group create
-Befehl, um einen Bereitstellungsstapel mithilfe der Azure CLI zu aktualisieren.
az stack group create \
--name stack-deposits \
--resource-group rg-depositsApplication \
--template-file ./main.bicep \
--action-on-unmanage detachAll \
--deny-settings-mode none
Nach Abschluss der Aktualisierung verwaltet der Bereitstellungsstapel den Log Analytics-Arbeitsbereich und die Application Insights-Instanz nicht mehr. Im Befehl haben Sie mithilfe von --action-on-unmanage detachAll
angegeben, wie Azure Ressourcen verarbeitet, die nicht mehr von einem Bereitstellungsstapel verwaltet werden. In diesem Fall werden die Ressourcen vom Bereitstellungsstapel getrennt, sind aber weiterhin in der Ressourcengruppe vorhanden.
Um die Änderungen anzuwenden, müssen Sie den Bereitstellungsstapel aktualisieren. Verwenden Sie den Befehl Set-AzResourceGroupDeploymentStack
, um einen Bereitstellungsstapel mit Azure PowerShell zu aktualisieren.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DetachAll `
-DenySettingsMode None
Nach Abschluss der Aktualisierung verwaltet der Bereitstellungsstapel den Log Analytics-Arbeitsbereich und die Application Insights-Instanz nicht mehr. Im Befehl haben Sie mithilfe von -ActionOnUnmanage DetachAll
angegeben, wie Azure Ressourcen verarbeitet, die nicht mehr von einem Bereitstellungsstapel verwaltet werden. In diesem Fall werden die Ressourcen vom Bereitstellungsstapel getrennt, sind aber weiterhin in der Ressourcengruppe vorhanden.
Löschen einer verwalteten Ressource
Bereitstellungsstapel bieten eine zuverlässige Ressourcenbereinigung. Wenn Sie einen Bereitstellungsstapel aktualisieren oder löschen, können Sie auch die verwalteten Ressourcen, Ressourcengruppen und Verwaltungsgruppen löschen. Es gibt zwei Werte des Parameters action on unmanage, die festlegen, dass Ressourcen, Ressourcengruppen und Verwaltungsgruppen gelöscht werden sollen, wenn sie nicht mehr vom Bereitstellungsstapel verwaltet werden.
deleteAll
: Löscht Ressourcen sowie Ressourcen- und VerwaltungsgruppendeleteResources
: Löscht Ressourcen, aber trennt Ressourcen- und Verwaltungsgruppen
Betrachten Sie die Depotanwendung. Angenommen, das Entwicklungsteam entscheidet sich für die Verwendung von Azure Database for PostgreSQL anstelle von Azure SQL-Datenbank. Sie müssen zuerst den Bereitstellungsstapel aktualisieren, um den Azure SQL-Server und die Azure SQL-Datenbank aus Azure zu entfernen und vollständig zu löschen. Um dieses Verhalten zu erreichen, verwenden Sie beim Aktualisieren oder Löschen des Bereitstellungsstapels den Parameter deleteAll
oder deleteResources
action on unmanage.
DeleteAll
: Löscht Ressourcen sowie Ressourcen- und VerwaltungsgruppenDeleteResources
: Löscht Ressourcen, aber trennt Ressourcen- und Verwaltungsgruppen
Betrachten Sie die Depotanwendung. Angenommen, das Entwicklungsteam entscheidet sich für die Verwendung von Azure Database for PostgreSQL anstelle von Azure SQL-Datenbank. Sie müssen zuerst den Bereitstellungsstapel aktualisieren, um den Azure SQL-Server und die Azure SQL-Datenbank aus Azure zu entfernen und vollständig zu löschen. Um dieses Verhalten zu erreichen, verwenden Sie beim Aktualisieren oder Löschen des Bereitstellungsstapels den Parameter DeleteAll
oder DeleteResources
action on unmanage.
Sehen Sie sich die Bicep-Datei aus dem vorherigen Abschnitt an. Die Vorlagendatei definiert einen App Service-Plan, eine Web-App, einen Azure SQL-Server und eine Azure SQL-Datenbank. Angenommen, Sie müssen den Azure SQL-Server und die Azure SQL-Datenbank entfernen. Sie bearbeiten die Bicep-Datei und entfernen den hervorgehobenen Code, der auf Ihre Web-App verweist.
// 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'
}
}
Sie haben nun folgenden Code in Ihrer Datei:
// 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
}
}
Um die Änderungen anzuwenden, müssen Sie den Bereitstellungsstapel aktualisieren. Verwenden Sie den az stack group create
-Befehl, um einen Bereitstellungsstapel mithilfe der Azure CLI zu aktualisieren. Diesmal verwenden Sie --action-on-unmanage deleteAll
anstelle von --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
Nach Abschluss der Aktualisierung sind als einzige Ressourcen der App Service-Plan und die Web-App übrig. Im Befehl haben Sie mithilfe von --action-on-unmanage deleteAll
angegeben, wie Azure Ressourcen verarbeitet, die nicht mehr vom Bereitstellungsstapel verwaltet werden. In diesem Fall werden die Ressourcen aus dem Bereitstellungsstapel und aus Azure gelöscht.
Um die Änderungen anzuwenden, müssen Sie den Bereitstellungsstapel aktualisieren. Verwenden Sie den Befehl Set-AzResourceGroupDeploymentStack
, um einen Bereitstellungsstapel mit Azure PowerShell zu aktualisieren.
Set-AzResourceGroupDeploymentStack `
-Name stack-deposits `
-ResourceGroupName rg-depositsApplication `
-TemplateFile ./main.bicep `
-ActionOnUnmanage DeleteAll `
-DenySettingsMode None
Nach Abschluss der Aktualisierung sind als einzige Ressourcen der App Service-Plan und die Web-App übrig. Im Befehl haben Sie mithilfe von -ActionOnUnmanage DeleteAll
angegeben, wie Azure Ressourcen verarbeitet, die nicht mehr vom Bereitstellungsstapel verwaltet werden. In diesem Fall werden die Ressourcen aus dem Bereitstellungsstapel und aus Azure gelöscht.