사용되지 않거나 고아 상태인 Azure 리소스를 삭제하는 Azure PowerShell 스크립트

개요

Azure에서 사용되지 않거나 고아 상태인 리소스를 관리하면 클라우드 지출과 운영 효율성에 큰 영향을 미칠 수 있습니다. 「Azure Resource Cleanup」 도구는 클라우드 관리자가 사용되지 않거나 고아 상태인 Azure 리소스를 식별하고 삭제하도록 돕기 위해 설계된 포괄적인 PowerShell 스크립트로, 비용 최적화와 리소스 관리 개선을 보장합니다.

이 스크립트는 기본적으로 안전하고 비파괴적인 보고 모드로 동작하므로 관리자는 정리 작업을 시작하기 전에 고아 상태인 리소스를 검토할 수 있습니다.

GitHub에서 프로젝트에 액세스할 수 있습니다. AzureOpsScripts – Resource Cleanup.



주요 기능

Azure Resource Cleanup 스크립트는 다음과 같은 기능을 제공합니다.

  • 고아 상태인 NIC: VM 또는 엔드포인트에 연결되지 않은 네트워크 인터페이스를 식별합니다.
  • 오래된 Azure 디스크 스냅샷: 보존 기간을 초과한 스냅샷을 감지합니다.
  • 스토리지 계정 Blob 스냅샷: 정의된 보존 기간보다 오래된 Blob 스냅샷에 플래그를 지정합니다.
  • 파일 공유 스냅샷: 보존 한도를 초과한 파일 공유 스냅샷을 식별합니다.
  • 고아 상태인 관리 디스크: VM에 연결되지 않은 디스크를 찾습니다.
  • 고아 상태인 공용 IP: 사용되지 않는 공용 IP 주소를 찾습니다.
  • 사용되지 않는 네트워크 보안 그룹: 리소스와 연결되지 않은 NSG를 식별합니다.
  • 사용되지 않는 가용성 집합: 더 이상 사용되지 않는 가용성 집합을 감지합니다.
  • 빈 리소스 그룹: 활성 리소스가 없는 리소스 그룹에 플래그를 지정합니다.
  • 사용되지 않는 가상 네트워크: 사용되지 않을 가능성이 있는 가상 네트워크를 강조 표시합니다(강조 표시만 하며 스크립트가 삭제하지는 않습니다).
  • 예약되었지만 사용되지 않는 IP 주소: 예약되었지만 적극적으로 할당되지 않은 IP 주소를 식별합니다.

요구 사항

Azure Resource Cleanup 스크립트를 사용하려면 다음 사전 요구 사항이 충족되는지 확인하세요.

  • PowerShell 버전: 5.1 이상
  • Az PowerShell 모듈: 다음 명령을 사용하여 설치합니다.Install-Module -Name Az
  • Azure 계정 권한: 리소스를 보고 삭제할 수 있는 적절한 권한이 있는지 확인합니다.

사용법

보고 모드

보고 모드로 스크립트를 실행하여 고아 상태인 리소스에 대한 자세한 보고서를 생성합니다.

.\Azure-Resource-Cleanup.ps1  

사용되지 않거나 고아 상태인 Azure 리소스 삭제

정리 모드

식별된 리소스를 삭제하려면 정리 모드를 사용하세요.

.\Azure-Resource-Cleanup.ps1 -DeleteResources  

스냅샷 보존 기간 사용자 지정

스냅샷 보존 일수를 지정하여 정리를 위해 오래된 스냅샷을 식별합니다.

.\Azure-Resource-Cleanup.ps1 -SnapshotRetentionDays 7 -DeleteResources  

사용되지 않거나 고아 상태인 Azure 리소스 삭제

스토리지 스냅샷 검사 제외

대규모 환경에서는 스토리지 계정 Blob 및 파일 공유 스냅샷 검사를 건너뜁니다.

.\Azure-Resource-Cleanup.ps1 -IncludeStorageSnapshots:$false  


중요 참고 사항

허용된 가상 네트워크에서 실행

스크립트가 허용된 가상 네트워크 내에서 실행되는지 확인하세요. 네트워크 제한으로 인해 일부 스토리지 계정은 컨테이너나 파일 스냅샷에 대한 액세스를 금지할 수 있습니다. 스토리지 계정이 삭제 작업을 지원하지 않는 경우 이러한 리소스를 정리하려고 할 때 오류가 발생할 수 있습니다.

개발/테스트 환경에서 테스트

프로덕션에서 사용하기 전에 개발 또는 테스트 환경에서 스크립트를 테스트하는 것이 좋습니다. 이를 통해 스크립트 동작을 검토하고, 잠재적인 문제를 식별하고, 정리 대상으로 플래그가 지정된 리소스를 확인할 수 있습니다.

보고 전용 모드 사용

프로덕션 환경에서는 항상 보고서 전용 모드(-DeleteResources 매개변수 없이)로 스크립트 실행을 시작하세요. 이를 통해 고아 상태인 리소스에 대한 자세한 보고서를 얻을 수 있으며, 정리 작업을 시작하기 전에 플래그가 지정된 항목을 검토하고 검증할 수 있습니다.


매개변수

스크립트는 여러 사용자 지정 가능한 매개변수를 지원합니다.

매개변수유형기본값설명
SnapshotRetentionDaysInteger3스냅샷 보존 기간(일). 이보다 오래된 스냅샷은 정리 대상으로 플래그가 지정됩니다.
DeleteResourcesSwitch$false식별된 리소스의 삭제를 활성화합니다. 기본적으로 스크립트는 보고만 수행합니다.
IncludeStorageSnapshotsSwitch$trueBlob 및 파일 공유 스냅샷 검사를 포함합니다. $false로 설정하면 이러한 검사가 제외됩니다.

보고서 출력

스크립트는 타임스탬프가 있는 폴더에 자세한 보고서를 생성합니다. 여기에는 다음이 포함됩니다.

  • orphaned_nics.csv
  • old_managed_snapshots.csv
  • old_blob_snapshots.csv
  • old_fileshare_snapshots.csv
  • orphaned_disks.csv
  • orphaned_public_ips.csv
  • orphaned_nsgs.csv
  • unused_availability_sets.csv
  • empty_resource_groups.csv
  • unused_vnets.csv
  • subnet_ip_usage.csv
  • cleanup_log.txt (수행된 작업의 포괄적인 로그)출력 Excel 파일 및 로깅

모범 사례

  1. 보고 모드부터 시작: 플래그가 지정된 리소스를 검토하려면 항상 -DeleteResources 매개변수 없이 스크립트를 실행하세요.
  2. 보고서 검토: 정리 작업을 시작하기 전에 생성된 CSV 파일을 신중하게 분석하세요.
  3. 보존 기간 설정: 조직 정책에 따라 스냅샷 보존 기간을 사용자 지정합니다.
  4. 비프로덕션 환경에서 테스트: 프로덕션에서 사용하기 전에 개발/테스트 환경에서 스크립트를 실행하여 동작을 검증합니다.
  5. 허용된 가상 네트워크에서 실행: 스토리지 계정 정리 시 네트워크 관련 오류를 방지하기 위해 스크립트가 허용된 vNet 내에서 실행되는지 확인하세요.

예제 워크플로

다음 워크플로에 따라 Azure 리소스를 안전하게 정리하세요.

  1. 보고 모드로 스크립트를 실행합니다..\Azure-Resource-Cleanup.ps1
  2. 생성된 보고서를 검토하여 플래그가 지정된 리소스를 확인합니다.
  3. 정리 모드로 자신 있게 진행합니다..\Azure-Resource-Cleanup.ps1 -DeleteResources

참고 자료

댓글 남기기