카테고리 없음
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 계정 생성
- Azure Portal → Automation 계정 생성
- Azure Portal에서 "Automation 계정" 검색 후 새로 만들기
- "Run As Account" 활성화 선택 (자동 관리 ID 사용 가능)
- 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 설정)
- Azure Portal → Automation 계정 → Runbooks → 새 Runbook 추가
- PowerShell 코드 입력 후 저장 및 게시
- "일정 추가(Schedule)"을 클릭하여 매 5분 실행 설정
- UTC 시간 기준이므로 태그 값을 UTC로 설정해야 함
- Runbook 실행 및 로그 확인
방법 2️⃣: Logic Apps를 활용한 VM 자동 시작 및 종료
Azure Logic Apps를 활용하면 GUI 기반으로 손쉽게 자동화 가능합니다.
✅ 1) Logic Apps 생성
- Azure Portal → Logic Apps → 새로 만들기
- 트리거 선택: "Recurrence (반복 실행)" 선택
- 실행 간격 설정: 5분마다 실행
✅ 2) Azure Resource Manager (ARM) 액션 추가
- "Azure Resource Manager" 선택
- "List Virtual Machines" 추가 (구독 내 VM 목록 가져오기)
✅ 3) "For Each" 루프 추가하여 태그 확인
- "List Virtual Machines"의 결과를 반복문으로 처리
- 조건문(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 사용을 최소화할 수 있습니다!
반응형