티스토리 뷰
개요
- 개발자에게 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이 필요하다. 본 글에서는 무료 VM인
Oracle 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
참고 글
- Oracle VirtualBox terminated unexpectedly, with exit code -1073741819 (0xc0000005)
- install virtualbox virtual machine on centos7
- How To Install Vagrant On CentOS 6
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자전거
- Kendo UI Web Grid
- DynamoDB
- jstl
- 로드 바이크
- kotlin
- 알뜰폰
- java
- jsp
- maven
- jpa
- Spring MVC 3
- MySQL
- JavaScript
- node.js
- chrome
- Kendo UI
- JHipster
- 평속
- spring
- 태그를 입력해 주세요.
- Docker
- Tomcat
- Spring Boot
- 구동계
- bootstrap
- CentOS
- 로드바이크
- Eclipse
- graylog
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함