카테고리 없음

Azure Tag를 이용한 VM 자동 종료 및 시작 설정 방법

idea9329 2025. 2. 18. 13:33
반응형

 

Azure에서는 자동화된 스케줄링을 위해 Azure Tags와 Azure Automation, Logic Apps, Azure Function 등을 활용하여 VM을 자동으로 시작 및 종료할 수 있습니다.


1. Azure Tag를 이용한 VM 자동 시작/종료 개념

 Azure Tag를 활용하는 이유

  • VM별로 개별적인 스케줄을 설정 가능
  • 리소스 그룹과 VM을 그룹화하여 특정 태그가 있는 VM만 자동 시작/종료 가능
  • 비용 절감 (필요한 시간에만 VM 실행)

 태그 예시

태그 키(Key)태그 값(Value)설명

AutoShutdown 20:00 매일 20:00에 자동 종료
AutoStart 08:00 매일 08:00에 자동 시작

2. Azure Tag를 이용한 자동 종료 및 시작 구현 방법

Azure에서는 Azure Automation 및 Logic Apps를 활용하여 Tag 기반으로 스케줄링할 수 있습니다.

방법 1️⃣: Azure Automation + Runbook (PowerShell 또는 Python 사용)

 1) Azure Automation 계정 생성

  1. Azure Portal → Automation 계정 생성
    • Azure Portal에서 "Automation 계정" 검색 후 새로 만들기
    • "Run As Account" 활성화 선택 (자동 관리 ID 사용 가능)
  2. Automation 계정에서 Runbook 생성
    • Runbook 유형: PowerShell 또는 Python 선택

 2) PowerShell Runbook 코드 작성

# 필요한 Azure 모듈 가져오기
Import-Module Az.Compute
Import-Module Az.Resources

# Automation 계정에서 인증
$AzureContext = (Connect-AzAccount -Identity).Context

# 현재 구독 설정
Set-AzContext -SubscriptionId $AzureContext.Subscription.Id

# 모든 VM 가져오기
$VMs = Get-AzVM

# 현재 시간 가져오기 (UTC 기준)
$CurrentTime = (Get-Date).ToString("HH:mm")

foreach ($VM in $VMs) {
    # VM의 태그 정보 가져오기
    $Tags = $VM.Tags

    # VM 자동 종료 처리
    if ($Tags.ContainsKey("AutoShutdown") -and $Tags["AutoShutdown"] -eq $CurrentTime) {
        Write-Output "Stopping VM: $($VM.Name)"
        Stop-AzVM -Name $VM.Name -ResourceGroupName $VM.ResourceGroupName -Force
    }

    # VM 자동 시작 처리
    if ($Tags.ContainsKey("AutoStart") -and $Tags["AutoStart"] -eq $CurrentTime) {
        Write-Output "Starting VM: $($VM.Name)"
        Start-AzVM -Name $VM.Name -ResourceGroupName $VM.ResourceGroupName
    }
}

 3) Runbook 실행 및 예약 (Schedule 설정)

  1. Azure Portal → Automation 계정 → Runbooks → 새 Runbook 추가
  2. PowerShell 코드 입력 후 저장 및 게시
  3. "일정 추가(Schedule)"을 클릭하여 매 5분 실행 설정
    • UTC 시간 기준이므로 태그 값을 UTC로 설정해야 함
  4. Runbook 실행 및 로그 확인

방법 2️⃣: Logic Apps를 활용한 VM 자동 시작 및 종료

Azure Logic Apps를 활용하면 GUI 기반으로 손쉽게 자동화 가능합니다.

 1) Logic Apps 생성

  1. Azure Portal → Logic Apps → 새로 만들기
  2. 트리거 선택: "Recurrence (반복 실행)" 선택
    • 실행 간격 설정: 5분마다 실행

 2) Azure Resource Manager (ARM) 액션 추가

  1. "Azure Resource Manager" 선택
  2. "List Virtual Machines" 추가 (구독 내 VM 목록 가져오기)

 3) "For Each" 루프 추가하여 태그 확인

  1. "List Virtual Machines"의 결과를 반복문으로 처리
  2. 조건문(If Condition) 추가하여 AutoShutdown 또는 AutoStart 태그 값을 비교

 4) 조건 충족 시 VM 시작 또는 종료

  • AutoShutdown 태그의 값이 현재 시간과 일치하면 "Stop Virtual Machine" 실행
  • AutoStart 태그의 값이 현재 시간과 일치하면 "Start Virtual Machine" 실행

3. 보안 및 성능 고려사항

 Azure Managed Identity를 사용하여 VM을 제어하도록 설정
 Azure Automation Runbook 실행 시, Automation 계정에 충분한 권한 부여 (Contributor 권한 필요)
 Logic Apps 사용 시, API 호출 횟수 제한을 고려하여 실행 주기를 최적화
 UTC 시간 변환 필요 (Azure는 기본적으로 UTC 기준으로 작동)


4. 결론: Azure Tag를 이용한 VM 자동 시작/종료 요약

 Azure Tags를 활용하면 개별 VM마다 다른 스케줄을 설정 가능
 Azure Automation Runbook(PowerShell) 또는 Logic Apps로 구현 가능
 Automation Runbook은 강력한 제어 기능 제공, Logic Apps는 GUI 기반으로 설정이 쉬움
 보안과 성능을 고려하여 적절한 실행 주기 및 권한 설정 필요

🚀 Azure Tag + Automation을 활용하면 운영 비용을 절감하고, 불필요한 VM 사용을 최소화할 수 있습니다!

반응형