티스토리 뷰

개요

  • 개발자에게 VM은 이미 익숙한 개념이다. VM 덕분에 매번 고통스러운 환경설정 없이 나만의 개발환경을 순식간에 구축할 수 있으며 필요할 때마다 여러 개발환경을 전환할 수도 있다. Vagrant는 한 발 더 나아가 베이스 박스라는 개념을 도입하여 필요한 기초 환경을 미리 제공하고 제어할 수 있게 해주는 툴이다. 이번 글을 통해 베이그런트와 익숙해져보자.

용어사전

  • 박스(Box): Vagrant에 의해 다운로드되고 관리되는 가상머신 박스, 최초 vagrant init에 의해 다운로드되는 박스를 베이스 박스(Base Box)라고 부른다.
  • 프로바이더(Provider): Vagrant가 가상머신 박스를 실행하기 위해 호출하는 가상머신 애플리케이션(ex: Oracle VM VirtualBox)
  • 호스트 머신(Host Machine): Vagrant가 설치된 물리적 시스템
  • 게스트 머신(Guest Machine): Vagrant에 의해 실행(vagrant up) 중인 가상머신 박스

Oracle VM VirtualBox 설치

  • Vagrant는 혼자 작동하지 못한다. 프로바이더 역할을 해줄 VM이 필요하다. 본 글에서는 무료 VMOracle VM VirtualBox를 예로 들어 진행한다. 여기를 클릭하여 다운로드 및 설치를 진행한다.

Vagrant 설치

  • 여기를 클릭하여 Vagrant를 다운로드하여 설치한다. (설치 후 재부팅을 요구한다.)
# 정상 설치 확인
$ vagrant -v
Vagrant 2.2.6

# vagrant-share 플러그인 설치
$ vagrant plugin install vagrant-share

# 파일 공유를 위한 vagrant-vbguest 플러그인 설치
$ vagrant plugin install vagrant-vbguest

CentOS 6.9 베이스 박스 다운로드 및 기동

  • CentOS 6.9의 베이그런트 베이스 박스를 예로 들어 다운로드 및 작동을 진행해보자.
# Windows 10 Pro 사용자의 경우 오류 방지를 위해 HyperVisor 비활성화 후 재부팅
$ bcdedit /set hypervisorlaunchtype off

$ md centos_6
$ cd centos_6

# 베이그런트 베이스 박스를 받기 위한 초기회
$ vagrant init centos/6

# 베이그런트 베이스 박스를 다운로드 및 작동
$ vagrant up --provider virtualbox

# 기동된 이미지에 SSH 접속
$ vagrant ssh
$ rpm --query centos-release
centos-release-6-9.el6.12.3.x86_64

$ pwd
/home/vagrant

$ sudo passwd root
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

[vagrant@localhost ~]$ su root
  • 베이그런트의 원리는 미리 만들어진 가상머신 베이스 박스(ex: CentOS 6)를 리파지토리에서 제공 받아 프로바이더(ex: Oracle VM VirtualBox)를 통해 작동시키는 것이다. vagrant init 명령으로 어떤 베이스 박스를 다운로드할 것인가에 대한 메타 정보를 생성할 수 있다.


  • 실제 가상머신의 베이스 박스의 다운로드는 vagrant up 명령으로 실행한다. --provider virtualbox 옵션을 통해 박스의 다운로드와 작동을 진행한다. 다운로드는 최초 1번만 발생한다.


  • 박스의 작동이 완료되면 vagrant ssh 명령으로 쉘에 접속할 수 있다.

Vagrant 주요 명령어

### 베이스 박스 업데이트, 수시로 해주는 것이 좋음
$ vagrant box update

### 박스 실행, VboxSVC.exe가 프로세스에 등장
$ vagrant up

### 실행 중인 박스에 SSH 접속, vagrant 계정으로 로그인
$ vagrant ssh

### 박스 종료, VboxSVC.exe가 프로세스에서 완전히 종료
$ vagrant halt

### 박스 종료 및 초기화, VboxSVC.exe가 프로세스에서 완전히 종료
$ vagrant destroy

### 현재 설치된 박스 목록 조회
$ vagrant box list

### centos/7 박스를 제거
$ vagrant box remove centos/7

사설 IP 주소 지정

  • 프로바이더VirtualBox를 사용한다면 호스트 머신에 VirtualBox Host-Only Network라는 가상의 랜카드가 시스템에 추가되는데, 별도의 설정 변경을 하지 않는다면 기본적으로 192.168.56.1라는 사설 IP 주소를 부여 받게 된다. 이를 통해 각 게스트 머신의 IP 주소를 192.168.56.2부터 192.168.56.254까지 임의로 지정할 수 있으며, 가상의 사설 네트워크 내에서 서로 간의 통신이 가능해진다. 아래는 임의의 사설 IP 주소를 지정한 예이다.
config.vm.network "private_network", ip: "192.168.56.2"
  • 위와 같이 별도의 사설 IP 주소를 지정하지 않으면 10.0.2.15라는 독립적이고 고립된 IP 주소를 할당한다. 이 경우, 복수개의 게스트 머신끼리 서로 통신이 불가능하므로 되도록 사설 IP 주소를 직접 지정하는 방법을 추천한다.

포트 포워딩

  • 박스 루트(vagrant init을 실행한 위치)의 Vagrantfile 파일에 아래 내용을 추가한다.
# 가상머신의 80포트를 현재 시스템의 8080포트로 포워딩
config.vm.network "forwarded_port", guest: 80, host: 8080

# 호스트 머신과 공유할 디렉토리를 설정
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
config.vm.synced_folder "c:/", "/home/c", type: "virtualbox"
config.vm.synced_folder "d:/", "/home/d", type: "virtualbox"
  • 만약, CentOS 7 기반 게스트 머신에서 포트 포워딩 설정이 작동하지 않을 경우, 아래와 같이 host_ip 항목을 추가해주면 정상 작동한다.
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

Vagrant가 주는 보너스, 리눅스 유틸리티

  • Vagrant를 설치하면 C:\HashiCorp\Vagrant\embedded\usr\bin 폴더에 여러 실행 파일이 설치되는데 ssh, scp, grep, wget 등과 같이 평소 리눅스 환경에서 유용하게 써오던 명령어들이다. 즉, Windows 환경에는 없는 유용한 리눅스 명령어들을 공짜로 얻을 수 있다.

트러블슈팅

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "8500b6a7-0116-4710-b6e3-107c4a584470", "--type", "headless"]

Stderr: VBoxManage.exe: error: The virtual machine 'centos-69_default_1494531013071_18929' has terminated unexpectedly during startup with exit code -1073741819 (0xc0000005).  More details may be available in 'C:\Users\JSONObject\VirtualBox VMs\centos-69_default_1494531013071_18929\Logs\VBoxHardening.log'
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap, interface IMachine
  • 박스 실행시 위와 같이 -1073741819 오류가 발생한다면 2가지를 조치해본다. 첫째, C:\Program Files\Oracle\VirtualBox\VBoxManage.exe 파일을 관리자 실행 권한으로 변경한다. 둘째, Windows에 설치된 MacType 프로그램에 예외 목록에 아래와 같이 추가한다.
$ notepad C:\Program Files\MacType\ini\Default.ini
[UnloadDll]
VBoxSVC.exe

참고 글


댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함