연습 - 배포 스택에서 관리되는 리소스 분리 및 삭제

완료됨

새로운 예금 애플리케이션을 위한 스프린트 3이 완료될 예정입니다. 입금 팀은 배포 스택에서 Log Analytics 작업 영역과 Application Insights 인스턴스를 분리해 달라고 요청했습니다. 이러한 리소스는 Azure에 계속 존재해야 합니다. 또한 배포 스택 및 Azure에서 Azure SQL Server 및 데이터베이스를 삭제할 것을 요청했습니다.

이 연습에서는 예금 애플리케이션에 더 이상 필요하지 않은 Azure 리소스를 배포 스택에서 분리하고 삭제합니다. 먼저 Azure 내에 계속 존재해야 하는 배포 스택에서 리소스를 분리합니다. 그런 다음, 더 이상 필요하지 않은 배포 스택에서 리소스를 삭제합니다. 마지막으로 배포 스택과 해당 관리되는 리소스 및 리소스 그룹을 삭제합니다.

프로세스 중에 다음을 수행합니다.

  • Log Analytics 작업 영역 및 새 Application Insights 인스턴스를 제거하도록 Bicep 파일을 수정합니다.
  • 관리되는 리소스를 분리하도록 배포 스택 업데이트
  • 배포 스택의 관리되는 리소스 및 분리된 리소스의 유효성 검사
  • Azure SQL Server 및 데이터베이스 제거하도록 Bicep 파일 수정
  • 관리되는 리소스를 삭제하도록 배포 스택 업데이트
  • 배포 스택의 관리되는 리소스 및 삭제된 리소스의 유효성 검사
  • 배포 스택 및 관리되는 리소스를 삭제합니다.
  • 배포 스택 및 관리되는 리소스의 삭제 유효성을 검사합니다.

Log Analytics 작업 영역 및 새 Application Insights 인스턴스를 분리하도록 Bicep 파일을 수정합니다.

입금 팀은 배포 스택에서 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. 현재 구독에 스택이 이미 존재한다는 메시지가 표시됩니다. 관리되지 않는 작업 매개 변수의 값이 변경되면 경고가 새 값을 알려 줍니다. 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. resourcesCleanupAction, resourceGroupsCleanupActionmanagementGroupsCleanupAction 값을 확인합니다. 값은 모두 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 Portal에서 배포 스택의 유효성을 검사해 보겠습니다.

  1. Azure Portal로 이동합니다.

  2. 왼쪽 패널에서 리소스 그룹을 선택합니다.

  3. rg-depositsApplication을 선택합니다.

  4. 필요한 경우 설정 메뉴를 확장합니다.

  5. 배포 스택을 선택합니다.

  6. stack-deposits을 선택합니다.

  7. 관리되는 리소스 4개와 분리된 리소스 2개(Log Analytics 및 Application Insights)가 있는지 확인합니다.

    배포 스택과 관리되는 리소스 및 분리된 리소스를 나타내는 Azure Portal을 보여 주는 스크린샷

Azure SQL Server 및 데이터베이스를 분리 및 삭제하도록 Bicep 파일 수정

예금 팀은 배포 스택 및 Azure에서 Azure SQL Server 및 데이터베이스를 분리 및 삭제할 것을 요청했습니다. 먼저 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 Server 및 데이터베이스가 분리되고 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. 현재 구독에 스택이 이미 존재한다는 메시지가 표시됩니다. 관리되지 않는 작업 매개 변수의 값이 변경되면 경고가 새 값을 알려 줍니다. y을(를) 누른 다음 'Enter'를 누릅니다.

    배포 스택이 이미 존재한다는 Azure CLI 명령줄 경고를 보여 주는 스크린샷.

  3. 다음 작업으로 이동하기 전에 업데이트 작업이 완료되기를 기다립니다.

Bicep 파일을 수정하여 스택에서 Azure SQL Server 및 데이터베이스가 분리되고 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 Server/데이터베이스를 더 이상 관리하지 않는지 검증합니다. 또한 리소스가 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 Server 및 데이터베이스는 더 이상 관리되는 리소스로 표시되지 않습니다.

    "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 Server/데이터베이스를 더 이상 관리하지 않는지 검증합니다. 또한 리소스가 Azure에서 삭제되었는지 확인하려고 합니다.

  1. 배포 스택의 구성을 보려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    Get-AzResourceGroupDeploymentStack `
        -ResourceGroupName rg-depositsApplication `
        -Name stack-deposits
    
  2. resourcesCleanupAction, resourceGroupsCleanupActionmanagementGroupsCleanupAction 값을 확인합니다. 값은 모두 delete로 설정됩니다. 이 결과는 -ActionOnUnmanage DeleteAll을 사용하여 배포 스택 업데이트를 수행했기 때문입니다.

    resourcesCleanupAction        : delete
    resourceGroupsCleanupAction   : delete
    managementGroupsCleanupAction : delete
    
  3. 이제 출력의 리소스 섹션을 확인합니다. Azure SQL Server 및 데이터베이스는 더 이상 관리되는 리소스로 표시되지 않습니다.

    Resources                     : /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits
                                    /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
    
  1. Azure Portal로 돌아갑니다.

  2. 왼쪽 패널에서 리소스 그룹을 선택합니다.

  3. rg-depositsApplication을 선택합니다.

  4. 필요한 경우 설정 메뉴를 확장합니다.

  5. 배포 스택을 선택합니다.

  6. stack-deposits을 선택합니다.

  7. App Service 요금제 및 앱 서비스가 관리되는 리소스로 계속 존재하고 다른 리소스가 삭제되었는지 확인합니다.

    배포 스택과 두 개의 관리되는 리소스를 나타내는 Azure Portal을 보여 주는 스크린샷

배포 스택 삭제

  1. 배포 스택 및 관리되는 리소스를 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    az stack group delete \
        --name stack-deposits \
        --resource-group rg-depositsApplication \
        --action-on-unmanage deleteAll
    
  2. 스택 및 지정된 리소스를 삭제할지 확인하라는 메시지가 표시됩니다.

    Azure CLI를 사용하여 배포 스택을 삭제하는 명령줄 확인을 보여 주는 스크린샷.

  3. 삭제 작업이 완료되면 Azure Portal을 열고 배포 스택 및 해당 리소스가 제거되었는지 확인합니다.

  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 Portal을 열고 배포 스택 및 해당 리소스가 제거되었는지 확인합니다.

  4. 이러한 연습에 사용되는 리소스 그룹을 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.

    Remove-AzResourceGroup `
        -Name rg-depositsApplication
    
  5. 리소스 그룹을 제거할지 확인하라는 메시지가 표시됩니다. 'Y'를 누른 다음 'Enter'를 누릅니다.

    Azure PowerShell을 사용하여 리소스 그룹을 삭제하는 명령줄 확인을 보여 주는 스크린샷.

  1. Azure Portal로 돌아갑니다.

  2. 왼쪽 패널에서 리소스 그룹을 선택합니다.

  3. rg-depositsApplication이 더 이상 존재하지 않는지 확인합니다.