Azure Automation으로 퇴근시간에 자동으로 가상컴퓨터 끄기

클라우드 컴퓨팅 환경에서는 비용을 최소화 하기 위한 노력이 필요하다. 가끔 스토리지에 쓰지 않는 파일이나 백업이 들어 있다던지 테스트로 만든 가상머신들이 삭제되지 않고 쌓여 있는 걸 볼 수 있다. 신경써서 관리 하지 않으면 어느 순간 “그냥 서버사서 쓰는게 더 싼거 아니야”라는 의견이 나올 수도 있다. 클라우드 서비스 비용을 아끼려는 노력이 몸에 베인 팀에서는 가끔 밤에 테스트용 서버는 자동으로 끌 수 없는지 문의가 오기도 한다. 이 글에서 Azure Automation을 이용해서 저녁 7시에 특정 Resource Group에 들어 있는 테스트용 가상 컴퓨터들을 Stop 시켜 밤새 쓸데없이 나가는 비용을 줄이는 방법에 대해서 알아보자.

Azure Automation

Azure Automation은 Azure를 관리할 때 자주 그리고 수동으로 해야하는 일을 자동화 시키는데 유용하다. 예를들어 밤시간에는 방문자가 적은 웹 애플리케이션이라면 새벽시간에 낮은 가격대로 내렸다가 다시 아침에는 원래 가격으로 올린다던지 특정 리소스에서 발생하는 로그를 모으거나 Azure SQL 데이터베이스의 쿼리를 수행해서 데이터를 정리하는 등 반복적인 관리작업들이 있다. Azure Automation은 이런 작업들을 Powershell을 이용하여 수행하며 그래픽 툴을 제공하기 때문에 PowerShell 코드 작성을 최소화해서 구현해 낼 수 있다. Runbook이라는 작업들의 집합 단위로 수행되는데 Runbook 갤러리가 있어서 이미 만들어져 있는 Runbook을 가져다 쓸 수 있다. Runbook을 어떻게 만들고 실행하는지는 “내 첫 번째 그래픽 Runbook” 문서를 천천히 따라하면 전체 내용을 파악할 수 있다.

Azure Automation 만들기

리소스그룹(Resource Group)을 하나 만들어서 Azure Automation 계정을 하나 만들자. Automation 계정과 Runbook을 모두 하나의 리소스그룹에 관리하면 깔끔하다. 현재(2017-04-06)은 Korea Central이나 Korea South 지역에는 없다. 다른 지역에 만들자. 트래픽이 오가는 리소스는 아니기 때문에 다른 지역이라도 비용이 크게 발생하지는 않을 것이다. 만들때 꼭 “Azure 실행 계정 만들기”를 예로 선택해야 한다. 실행 계정은 PowerShell이 Azure에서 일을 하기 위해서 로그인을 자동으로 해주는 역할을 한다.

 

갤러리에서 “StopAzureV2Vm” Runbook 가져오기

Automation이 만들어 졌다. VM을 특정 시간에 자동으로 Stop 시키는 Runbook을 갤러리에서 찾아서 가져오자. 새로만든 Automation에서 Runbook을 선택한 후 “갤러리 찾아보기”를 눌러 “Stop Azure V2 VMs”를 선택해서 “가져오기”를 눌러 가져온다. 이 Runbook은 그래픽 타입이다. 이렇게 가져오면 작성상태가 “새로 만들기”로 표시되고 아직 게시되지 않은 상태다.

StopAzureV2Vm 설정

가져온 Runbook을 눌러서 상세정보를 표시하고 “편집” 버튼을 누른다. 이 화면은 Runbook을 편집하는 화면이고 오른쪽에 순서도 처럼 생긴 프로세스가 표시되고 왼쪽에 사용할 수 있는 PowerShell Cmdlet 등이 표시된다. 왼쪽의 라이브러리의 항목을 그래픽화면에 추가하고 화살표를 연결한 후 파라미터를 지정하는 식으로 편집 할 수 있다. 지금은 잘 만들어진 StopAzureV2Vm Runbook을 그대로 사용할 것이기 때문에 편집하지 않고 바로 “게시” 버튼을 눌러 게시한다.

Runbook 테스트

게시된 화면에서 시작을 누르면 바로 실행이 된다. 테스트로 시작버튼을 눌러 실행해보자. 매개변수를 입력하게 되어 있다. 특정 리소스 그룹에 들어있는 모든 VM을 끄고 싶으면 RESOURCEGROUPNAME에 입력하고 특정 VM을 끄고 싶으면 VM이름을 입력한다. AZURECONNECTIONASSETNAME 은 기본값으로 남겨둡니다. 기본값으로 Azure에 로그인 됩니다. “확인”을 누르면 큐에서 대기하다가 실행이 된다. 완료되면 출력을 눌러 로그를 확인해본다. 문제없이 잘 작동한다면 이제 특정 시간에 실행 되도록 스케줄링만 해주면 된다.

Runbook 실행 일정 설정

“일정”버튼을 눌르고 “일정추가”버튼을 누른다. 매일 오후 7시에 실행이 되도록 그림과 같이 설정한다. 그리고 매개 변수에 리소스그룹이름이나 가상컴퓨터 이름을 입력한다. 모든 설정이 끝났다. 내일 아침에 잘 실행되었는지 확인 하면 된다. 모든 개발자와 시스템 엔지니어들이 6시에 퇴근하고 이렇게 설정된 Automation이 혼자 실행되길 바래본다.