연습 - 배포 스택에서 관리되는 리소스 분리 및 삭제
새로운 예금 애플리케이션을 위한 스프린트 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 파일을 수정합니다.
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
현재 구독에 스택이 이미 존재한다는 메시지가 표시됩니다. 관리되지 않는 작업 매개 변수의 값이 변경되면 경고가 새 값을 알려 줍니다.
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 Portal에서 배포 스택의 유효성을 검사해 보겠습니다.
Azure Portal로 이동합니다.
왼쪽 패널에서 리소스 그룹을 선택합니다.
rg-depositsApplication을 선택합니다.
필요한 경우 설정 메뉴를 확장합니다.
배포 스택을 선택합니다.
stack-deposits을 선택합니다.
관리되는 리소스 4개와 분리된 리소스 2개(Log Analytics 및 Application Insights)가 있는지 확인합니다.
Azure SQL Server 및 데이터베이스를 분리 및 삭제하도록 Bicep 파일 수정
예금 팀은 배포 스택 및 Azure에서 Azure SQL Server 및 데이터베이스를 분리 및 삭제할 것을 요청했습니다. 먼저 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 Server 및 데이터베이스가 분리되고 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
현재 구독에 스택이 이미 존재한다는 메시지가 표시됩니다. 관리되지 않는 작업 매개 변수의 값이 변경되면 경고가 새 값을 알려 줍니다.
y
을(를) 누른 다음 'Enter'를 누릅니다.다음 작업으로 이동하기 전에 업데이트 작업이 완료되기를 기다립니다.
Bicep 파일을 수정하여 스택에서 Azure SQL Server 및 데이터베이스가 분리되고 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 Server/데이터베이스를 더 이상 관리하지 않는지 검증합니다. 또한 리소스가 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 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에서 삭제되었는지 확인하려고 합니다.
배포 스택의 구성을 보려면 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 Server 및 데이터베이스는 더 이상 관리되는 리소스로 표시되지 않습니다.
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm
Azure Portal로 돌아갑니다.
왼쪽 패널에서 리소스 그룹을 선택합니다.
rg-depositsApplication을 선택합니다.
필요한 경우 설정 메뉴를 확장합니다.
배포 스택을 선택합니다.
stack-deposits을 선택합니다.
App Service 요금제 및 앱 서비스가 관리되는 리소스로 계속 존재하고 다른 리소스가 삭제되었는지 확인합니다.
배포 스택 삭제
배포 스택 및 관리되는 리소스를 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.
az stack group delete \ --name stack-deposits \ --resource-group rg-depositsApplication \ --action-on-unmanage deleteAll
스택 및 지정된 리소스를 삭제할지 확인하라는 메시지가 표시됩니다.
삭제 작업이 완료되면 Azure Portal을 열고 배포 스택 및 해당 리소스가 제거되었는지 확인합니다.
이러한 연습에 사용되는 리소스 그룹을 삭제하려면 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 Portal을 열고 배포 스택 및 해당 리소스가 제거되었는지 확인합니다.
이러한 연습에 사용되는 리소스 그룹을 삭제하려면 Visual Studio Code의 터미널에서 다음 명령을 실행합니다.
Remove-AzResourceGroup ` -Name rg-depositsApplication
리소스 그룹을 제거할지 확인하라는 메시지가 표시됩니다. 'Y'를 누른 다음 'Enter'를 누릅니다.
Azure Portal로 돌아갑니다.
왼쪽 패널에서 리소스 그룹을 선택합니다.
rg-depositsApplication이 더 이상 존재하지 않는지 확인합니다.