练习 - 从部署堆栈中拆离和删除受管理资源

已完成

新存款应用程序开发的第三个冲刺阶段即将结束。 存款团队要求从部署堆栈拆离 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 文件。

  1. 打开 Visual Studio Code 中的 main.bicep 文件

  2. 从文件的变量部分删除突出显示的代码:

    // 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'
    
  3. 从文件的资源部分删除突出显示的代码:

    // 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
      }
    }
    
  4. 保存对文件所做的更改。

更新部署堆栈以拆离受管理资源

修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Log Analytics 工作区和 Application Insights 实例从堆栈中拆离出来。 我们使用 --action-on-unmanage detachAll 来实现此结果。

  1. 若要更新部署堆栈,请从 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
    
  2. 你会收到一条消息,指出该堆栈已存在于当前订阅中。 如果 action on unmanage 参数的值发生更改,则会出现警告,提醒你注意新值。 依次按 y、Enter 键。

    显示 Azure CLI 命令行的屏幕截图,其中显示了部署堆栈已存在的警告。

等待更新操作完成,然后继续执行下一个任务。

修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Log Analytics 工作区和 Application Insights 实例从堆栈中拆离出来。 我们使用 ActionOnUnmanage DetachAll 来实现此结果。

  1. 若要更新部署堆栈,请从 Visual Studio Code 中的终端运行以下命令。

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DetachAll `
        -DenySettingsMode none
    
  2. 等待更新操作完成,然后继续执行下一个任务。

验证部署堆栈的受管理资源和分离的资源

完成更新后,我们要验证部署堆栈是否不再管理 Log Analytics 工作区和 Application Insights 实例。

  1. 若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  2. 请注意输出的 actionOnUnmanage 部分。 这些值都设置为 detach。 这是因为你使用 --action-on-unmanage detachAll 执行了部署堆栈更新。

    "actionOnUnmanage": {
      "managementGroups": "detach",
      "resourceGroups": "detach",
      "resources": "detach"
    },
    
  3. 现在查看输出的资源部分。 我们不再将 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 实例。

  1. 若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  2. 请注意 resourcesCleanupActionresourceGroupsCleanupActionmanagementGroupsCleanupAction 的值。 这些值都设置为 detach。 这是因为你使用 -ActionOnUnmanage DetachAll 执行了部署堆栈更新。

    resourcesCleanupAction        : detach
    resourceGroupsCleanupAction   : detach
    managementGroupsCleanupAction : detach
    
  3. 现在查看输出的资源部分。 我们不再将 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 门户中验证我们的部署堆栈。

  1. 转到 Azure 门户

  2. 在左侧面板上,选择“资源组”。

  3. 选择 rg-depositsApplication

  4. 如有必要,请展开“设置”菜单

  5. 选择“部署堆栈”

  6. 选择“stack-deposits”

  7. 验证是否具有四个受管理资源和两个拆离的资源(Log Analytics 和 Application Insights)。

    显示 Azure 门户的屏幕截图,其中显示了一个部署堆栈及其受管理资源和拆离的资源。

修改 Bicep 文件以拆离并删除 Azure SQL 服务器和数据库

存款团队要求从部署堆栈和 Azure 拆离并删除 Azure SQL 服务器和数据库。 首先修改 Bicep 文件。

  1. 在 Visual Studio Code 中重新打开 main.bicep 文件

  2. 从文件的参数部分删除突出显示的代码:

    // 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)}'
    
  3. 从文件的资源部分删除突出显示的代码:

    // 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'
      }
    }
    
  4. 保存对文件所做的更改。

更新部署堆栈以删除受管理资源

修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Azure SQL 服务器和数据库从堆栈中拆离出来,并从 Azure 中删除。 我们使用 --action-on-unmanage deleteAll 来实现此结果。 此操作还会删除我们在上一部分中拆离出来的 Log Analytics 工作区和 Application Insights 实例。

  1. 若要更新部署堆栈,请从 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
    
  2. 你会收到一条消息,指出该堆栈已存在于当前订阅中。 如果 action on unmanage 参数的值发生更改,则会出现警告,提醒你注意新值。 依次按 y、Enter 键。

    显示 Azure CLI 命令行的屏幕截图,其中显示了部署堆栈已存在的警告。

  3. 等待更新操作完成,然后继续执行下一个任务。

修改 Bicep 文件后,我们希望更新部署堆栈,以便将 Azure SQL 服务器和数据库从堆栈中拆离出来,并从 Azure 中删除。 我们使用 -ActionOnUnmanage DeleteAll 来实现此目的。 此操作还会删除我们在上一部分中拆离出来的 Log Analytics 工作区和 Application Insights 实例。

  1. 若要更新部署堆栈,请从 Visual Studio Code 中的终端运行以下命令。

    Set-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -TemplateFile ./main.bicep `
        -ActionOnUnmanage DeleteAll `
        -DenySettingsMode none
    
  2. 等待更新操作完成,然后继续执行下一个任务。

验证部署堆栈的受管理资源

完成更新后,我们要验证部署堆栈是否不再管理 Log Analytics 工作区、Application Insights 实例以及 Azure SQL 服务器和数据库。 我们还要验证是否已从 Azure 中删除资源。

  1. 若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。

    az stack group show \
        --resource-group rg-depositsApplication \
        --name stack-deposits
    
  2. 请注意输出的 actionOnUnmanage 部分。 这些值都设置为 delete。 这是因为你使用 --action-on-unmanage deleteAll 执行了部署堆栈更新。

    "actionOnUnmanage": {
      "managementGroups": "delete",
      "resourceGroups": "delete",
      "resources": "delete"
    },
    
  3. 现在查看输出的资源部分。 我们不再将 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 中删除资源。

  1. 若要查看部署堆栈的配置,请从 Visual Studio Code 中的终端运行以下命令。

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  2. 请注意 resourcesCleanupActionresourceGroupsCleanupActionmanagementGroupsCleanupAction 的值。 这些值都设置为 delete。 这是因为你使用 -ActionOnUnmanage DeleteAll 执行了部署堆栈更新。

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : delete
    managementGroupsCleanupAction : delete
    
  3. 现在查看输出的资源部分。 我们不再将 Azure SQL 服务器和数据库视为受管理资源。

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
    
  1. 返回到 Azure 门户

  2. 在左侧面板上,选择“资源组”。

  3. 选择 rg-depositsApplication

  4. 如有必要,请展开“设置”菜单

  5. 选择“部署堆栈”

  6. 选择“stack-deposits”

  7. 验证应用服务计划和应用服务是否仍作为受管理资源存在,以及其他资源是否已删除。

    显示 Azure 门户的屏幕截图,其中显示了一个部署堆栈及其两个受管理资源。

删除部署堆栈

  1. 若要删除部署堆栈及其托管资源,请从 Visual Studio Code 中的终端运行以下命令。

    az stack group delete \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --action-on-unmanage deleteAll
    
  2. 系统会提示你确认是否要删除堆栈和指定的资源。

    显示使用 Azure CLI 删除部署堆栈时的命令行确认消息的屏幕截图。

  3. 删除操作完成后,打开 Azure 门户并验证部署堆栈及其资源是否已删除。

  4. 若要删除这些练习中使用的资源组,请从 Visual Studio Code 中的终端运行以下命令。

    az group delete \
        -name rg-depositsApplication
    
  5. 系统会提示你确认是否要删除资源组。 依次按 Y、Enter 键。

    显示使用 Azure CLI 删除资源组时的命令行确认消息的屏幕截图。

  1. 若要删除部署堆栈及其托管资源,请从 Visual Studio Code 中的终端运行以下命令。

    Remove-AzResourceGroupDeploymentStack `
        -Name stack-deposits `
        -ResourceGroupName rg-depositsApplication `
        -ActionOnUnmanage DeleteAll
    
  2. 系统会提示你确认是否要删除堆栈和指定的资源。

    显示使用 Azure PowerShell 删除部署堆栈时的命令行确认消息的屏幕截图。

  3. 删除操作完成后,打开 Azure 门户并验证部署堆栈及其资源是否已删除。

  4. 若要删除这些练习中使用的资源组,请从 Visual Studio Code 中的终端运行以下命令。

    Remove-AzResourceGroup `
        -Name rg-depositsApplication
    
  5. 系统会提示你确认是否要删除资源组。 依次按 Y、Enter 键。

    显示使用 Azure PowerShell 删除资源组时的命令行确认消息的屏幕截图。

  1. 返回到 Azure 门户

  2. 在左侧面板上,选择“资源组”。

  3. 验证 rg-depositsApplication 是否已不存在