
리눅스를 포함한 현대 운영체제는 최근 몇 년간 크게 발전하면서 일반 PC에서도 운영체제 가상화를 손쉽게 활용할 수 있게 되었습니다. 하이퍼바이저(hypervisor)를 이용해 여러 운영체제를 동시에 실행하면 개발자, 시스템 관리자, 그리고 호기심 많은 사용자들이 작고 버려도 무방한 가상 환경을 만들어 다양한 실험과 학습을 진행할 수 있습니다. 가상화가 점점 대중화되면서 사용자의 삶을 편하게 해주겠다고 약속하는 소프트웨어들도 끊임없이 등장하고 있는데, 그중 대표적인 도구가 바로 Vagrant입니다. 이번 글에서는 리눅스에서 Vagrant를 시작하는 방법을 살펴보겠습니다. Vagrant가 무엇인지, 기본 시스템에 어떻게 설치하는지, 그리고 어떤 방식으로 유용하게 활용할 수 있는지까지 자세히 알아봅니다.
Vagrant란 무엇인가?
Vagrant는 VirtualBox나 VMware 같은 가상화 소프트웨어와 함께 작동하는 도구로, 알려진 상태(known state)의 가상 머신을 손쉽게 생성, 구성, 재현할 수 있게 해줍니다. 미리 구성된 가상 머신 이미지인 '박스(box)'를 Vagrant Cloud에서 가져와 초기화한 뒤 내 시스템에서 바로 실행할 수 있습니다. 덕분에 누구나 이미지를 내려받아 간단한 명령어 몇 개만 입력하면 마음껏 만져볼 수 있는 가상 서버를 준비할 수 있습니다.
Vagrant 설치하기
공식 다운로드 페이지에서 Vagrant zip 파일을 내려받아 압축을 풀면 AppImage 형태의 실행 파일을 찾을 수 있습니다. 실행 권한을 부여한 후 바로 실행하면 됩니다.
또는 배포판의 패키지 저장소를 통해 설치할 수도 있습니다:
Ubuntu/Debian 및 우분투 계열 배포판:
sudo apt install vagrant
Fedora:
sudo dnf install vagrant

Vagrant는 Hyper-V, VMware, Parallels, VirtualBox, libvirt 등 다양한 하이퍼바이저와 함께 사용할 수 있습니다. 이 글에서는 리눅스 커널에 내장된 하이퍼바이저인 libvirt를 기준으로 설명합니다.
Vagrant libvirt 프로바이더(provider)를 설치하려면 다음 명령어 중 하나를 사용하세요:
sudo apt install vagrant-libvirt
또는
vagrant plugin install vagrant-libvirt

첫 번째 Vagrant 박스 시작하기
Vagrant를 본격적으로 사용하려면 먼저 박스를 추가하고, 가상 머신(VM)용 디렉터리를 생성한 뒤 두 가지 Vagrant 명령어를 실행해야 합니다. 하나는 시스템 초기화용이고, 다른 하나는 VM 시작용입니다.
먼저 시스템에 박스를 추가합니다:
vagrant box add centos/7 --provider=libvirt
이때 반드시 프로바이더를 플래그(flag)로 지정해야 합니다. 더 많은 박스는 Vagrant Cloud 카탈로그에서 확인할 수 있습니다.
다음으로 디렉터리를 만들고 해당 디렉터리로 이동합니다:
mkdir vagrant-test
cd vagrant-test
이제 Vagrant를 초기화합니다:
vagrant init centos/7
초기화 과정에서 Vagrant는 현재 작업 디렉터리에 "Vagrantfile"이라는 파일을 생성합니다. 원하는 만큼 여러 디렉터리를 만들고 Vagrant를 초기화할 수 있으며, 각 디렉터리와 Vagrantfile은 하나의 가상 머신을 의미합니다. 이렇게 만든 VM들은 같은 박스를 기반으로 할 수도 있고, 서로 다른 박스를 기반으로 할 수도 있습니다.
VM을 시작하려면 다음 명령어를 실행합니다:
vagrant up
부팅이 완료되면 가상 머신은 헤드리스(headless) 모드, 즉 모니터나 가상 화면 없이 실행되며 SSH를 통해서만 접속할 수 있습니다. 네트워크상의 다른 컴퓨터에서 일반 SSH 클라이언트로 접속하거나, Vagrant에 내장된 ssh 명령어를 사용할 수 있습니다. 별도의 SSH 클라이언트를 사용하려면 올바른 IP 주소는 호스트 머신(Vagrant와 프로바이더가 실행 중인 PC)의 주소이되 포트가 다르다는 점에 유의하세요. 부팅 과정에서 Vagrant는 22번 포트(SSH)가 어디로 포워딩되었는지 보여주는데, 대개 2222번 포트입니다.
내장된 ssh 명령어를 사용하려면 다음과 같이 입력합니다:
vagrant ssh
이제 VM에 접속된 상태입니다. SSH 연결을 종료하려면 "exit"를 입력하거나 Ctrl + D를 누르세요.
첫 번째 Vagrant 박스 종료하기
실행 중인 VM을 정지하려면:
vagrant halt
VM을 삭제하려면:
vagrant destroy
VM이 삭제되더라도 기본 운영체제(.box 파일)는 Vagrant 내부에 그대로 보관되므로, 필요할 때마다 .box 파일을 다시 내려받지 않고도 새로운 VM을 언제든 즉시 시작할 수 있습니다.
단 두 개의 명령어(vagrant init과 vagrant up)만으로 Vagrant는 SSH로 접속 가능한 완전한 기능의 가상 리눅스 머신을 띄워줍니다. 고급 설정은 Vagrantfile을 통해 진행하며, 자세한 내용은 Vagrant 공식 문서에서 확인할 수 있습니다.
가상화에 대해 더 알고 싶다면 가상화란 무엇이며 왜 사용해야 하는지, 그리고 리눅스에서 Virtual Machine Manager를 시작하는 방법 등 다른 관련 글도 함께 확인해 보세요.