练习 - 从部署堆栈中拆离和删除受管理资源
新存款应用程序开发的第三个冲刺阶段即将结束。 存款团队要求从部署堆栈拆离 Log Analytics 工作区和 Application Insights 实例。 这些资源需要继续存在于 Azure 中。 此外,他们还要求从部署堆栈和 Azure 中删除 Azure SQL 服务器和数据库。
在本练习中,将从部署堆栈中拆离并删除存款应用程序不再需要的 Azure 资源。 首先,将需要继续存在于 Azure 中的资源从部署堆栈中拆离出来。 然后,从部署堆栈中删除不再需要的资源。 最后,删除部署堆栈、其受管理资源和资源组。
在此过程中,你将:
- 修改 Bicep 文件以删除 Log Analytics 工作区和 Application Insights 实例
- 更新部署堆栈以拆离受管理资源
- 验证部署堆栈的受管理资源和分离的资源
- 修改 Bicep 文件以删除 Azure SQL 服务器和数据库
- 更新部署堆栈以删除受管理资源
- 验证部署堆栈的受管理资源和删除的资源
- 删除部署堆栈和托管资源。
- 验证是否已删除部署堆栈和托管资源。
修改 Bicep 文件以拆离 Log Analytics 工作区和 Application Insights 实例
存款团队要求从部署堆栈拆离 Log Analytics 工作区和 Application Insights 实例。 他们还要求资源继续存在于 Azure 中。 首先修改 Bicep 文件。
打开 Visual Studio Code 中的 main.bicep 文件。
从文件的变量部分删除突出显示的代码:
// 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 } }
保存对文件所做的更改。
更新部署堆栈以拆离受管理资源
修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Log Analytics 工作区和 Application Insights 实例从堆栈中拆离出来。 我们使用 --action-on-unmanage detachAll
来实现此结果。
若要更新部署堆栈,请从 Visual Studio Code 中的终端运行以下命令。
az stack group create \ --name stack-deposits \ --resource-group 'rg-depositsApplication' \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode none
你会收到一条消息,指出该堆栈已存在于当前订阅中。 如果 action on unmanage 参数的值发生更改,则会出现警告,提醒你注意新值。 依次按
y
、Enter 键。
等待更新操作完成,然后继续执行下一个任务。
修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Log Analytics 工作区和 Application Insights 实例从堆栈中拆离出来。 我们使用 ActionOnUnmanage DetachAll
来实现此结果。
若要更新部署堆栈,请从 Visual Studio Code 中的终端运行以下命令。
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
等待更新操作完成,然后继续执行下一个任务。
验证部署堆栈的受管理资源和分离的资源
完成更新后,我们要验证部署堆栈是否不再管理 Log Analytics 工作区和 Application Insights 实例。
若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
请注意输出的
actionOnUnmanage
部分。 这些值都设置为detach
。 这是因为你使用--action-on-unmanage detachAll
执行了部署堆栈更新。"actionOnUnmanage": { "managementGroups": "detach", "resourceGroups": "detach", "resources": "detach" },
现在查看输出的资源部分。 我们不再将 Log Analytics 工作区和 Application Insights 实例视为受管理资源。
"resources": [ { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" } ],
完成更新后,我们要验证部署堆栈是否不再管理 Log Analytics 工作区和 Application Insights 实例。
若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
请注意
resourcesCleanupAction
、resourceGroupsCleanupAction
和managementGroupsCleanupAction
的值。 这些值都设置为detach
。 这是因为你使用-ActionOnUnmanage DetachAll
执行了部署堆栈更新。resourcesCleanupAction : detach resourceGroupsCleanupAction : detach managementGroupsCleanupAction : detach
现在查看输出的资源部分。 我们不再将 Log Analytics 工作区和 Application Insights 实例视为受管理资源。
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
让我们在 Azure 门户中验证我们的部署堆栈。
转到 Azure 门户。
在左侧面板上,选择“资源组”。
选择 rg-depositsApplication。
如有必要,请展开“设置”菜单。
选择“部署堆栈”。
选择“stack-deposits”。
验证是否具有四个受管理资源和两个拆离的资源(Log Analytics 和 Application Insights)。
修改 Bicep 文件以拆离并删除 Azure SQL 服务器和数据库
存款团队要求从部署堆栈和 Azure 拆离并删除 Azure SQL 服务器和数据库。 首先修改 Bicep 文件。
在 Visual Studio Code 中重新打开 main.bicep 文件。
从文件的参数部分删除突出显示的代码:
// 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)}'
从文件的资源部分删除突出显示的代码:
// 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 } } // 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' } }
保存对文件所做的更改。
更新部署堆栈以删除受管理资源
修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Azure SQL 服务器和数据库从堆栈中拆离出来,并从 Azure 中删除。 我们使用 --action-on-unmanage deleteAll
来实现此结果。 此操作还会删除我们在上一部分中拆离出来的 Log Analytics 工作区和 Application Insights 实例。
若要更新部署堆栈,请从 Visual Studio Code 中的终端运行以下命令。
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage deleteAll \ --deny-settings-mode none
你会收到一条消息,指出该堆栈已存在于当前订阅中。 如果 action on unmanage 参数的值发生更改,则会出现警告,提醒你注意新值。 依次按
y
、Enter 键。等待更新操作完成,然后继续执行下一个任务。
修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Azure SQL 服务器和数据库从堆栈中拆离出来,并从 Azure 中删除。 我们使用 -ActionOnUnmanage DeleteAll
来实现此目的。 此操作还会删除我们在上一部分中拆离出来的 Log Analytics 工作区和 Application Insights 实例。
若要更新部署堆栈,请从 Visual Studio Code 中的终端运行以下命令。
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DeleteAll ` -DenySettingsMode none
等待更新操作完成,然后继续执行下一个任务。
验证部署堆栈的受管理资源
完成更新后,我们要验证部署堆栈是否不再管理 Log Analytics 工作区、Application Insights 实例以及 Azure SQL 服务器和数据库。 我们还要验证是否已从 Azure 中删除资源。
若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
请注意输出的
actionOnUnmanage
部分。 这些值都设置为delete
。 这是因为你使用--action-on-unmanage deleteAll
执行了部署堆栈更新。"actionOnUnmanage": { "managementGroups": "delete", "resourceGroups": "delete", "resources": "delete" },
现在查看输出的资源部分。 我们不再将 Azure SQL 服务器和数据库视为受管理资源。
"resources": [ { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" } ],
完成更新后,我们要验证部署堆栈是否不再管理 Log Analytics 工作区、Application Insights 实例以及 Azure SQL 服务器和数据库。 我们还要验证是否已从 Azure 中删除资源。
若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
请注意
resourcesCleanupAction
、resourceGroupsCleanupAction
和managementGroupsCleanupAction
的值。 这些值都设置为delete
。 这是因为你使用-ActionOnUnmanage DeleteAll
执行了部署堆栈更新。resourcesCleanupAction : delete resourceGroupsCleanupAction : delete managementGroupsCleanupAction : delete
现在查看输出的资源部分。 我们不再将 Azure SQL 服务器和数据库视为受管理资源。
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
返回到 Azure 门户。
在左侧面板上,选择“资源组”。
选择 rg-depositsApplication。
如有必要,请展开“设置”菜单。
选择“部署堆栈”。
选择“stack-deposits”。
验证应用服务计划和应用服务是否仍作为受管理资源存在,以及其他资源是否已删除。
删除部署堆栈
若要删除部署堆栈及其托管资源,请从 Visual Studio Code 中的终端运行以下命令。
az stack group delete \ --name stack-deposits \ --resource-group rg-depositsApplication \ --action-on-unmanage deleteAll
系统会提示你确认是否要删除堆栈和指定的资源。
删除操作完成后,打开 Azure 门户并验证部署堆栈及其资源是否已删除。
若要删除这些练习中使用的资源组,请从 Visual Studio Code 中的终端运行以下命令。
az group delete \ -name rg-depositsApplication
系统会提示你确认是否要删除资源组。 依次按 Y、Enter 键。
若要删除部署堆栈及其托管资源,请从 Visual Studio Code 中的终端运行以下命令。
Remove-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -ActionOnUnmanage DeleteAll
系统会提示你确认是否要删除堆栈和指定的资源。
删除操作完成后,打开 Azure 门户并验证部署堆栈及其资源是否已删除。
若要删除这些练习中使用的资源组,请从 Visual Studio Code 中的终端运行以下命令。
Remove-AzResourceGroup ` -Name rg-depositsApplication
系统会提示你确认是否要删除资源组。 依次按 Y、Enter 键。
返回到 Azure 门户。
在左侧面板上,选择“资源组”。
验证 rg-depositsApplication 是否已不存在。