vagrant

vagrant

업무상 고객사의 서버환경을 살펴보면, 대부분 단일 서버로 모든 트래픽을 처리하는 곳은 아직까지 보지못하였다. ( 어찌보면 당연하다. )
Xen Server를 사용하여 가상화를 통해 서버자원을 극대화하던지, 실제 물리서버를 2대로 운영을하던지, 그러던도중 vagrant라는 놈을 만나게되었다 .
Xen Server나 vmware와 가장 두드러지게 다른점이라면, 환경구성하고자하는 os를 직접 준비할 필요가 없다는점이다. 필요한 os를 설정파일에 설정하게되면 아주간단히 가상환경을 구축할수있다.
필자는 앞으로 소개할 docker swarm cluster 를위해 vagrant로 환경구성을 해보려한다 .

virtual box 와 vagrnat 설치

vagrnat 가상환경을 만들기위해 기본적으로 virtualbox와 vagrant 가 설치되어있어야한다 .
virtualbox
vagrant
설치가 진행되었다면 vagrant 로 환경구성 을 진행해보자 .

vagrant 설정

1
$ vagrant init

VagrantFile 이 생성된다 ( DockerFile 이생각나지왜 .. )
VagrantFile을 열어보면 다음과같이 설정되어있고, 기타설정들은 모두 주석처리되어있는것을 확인할수있다 .

1
config.vm.box = "base"

필자는 가상화서버 2대를 centos7로 사용할것이기에 다음과 같이 진행하였다 .

server1

1
2
3
config.vm.box = "centos/7"
config.vm.hostname = "server1"
config.vm.network "private_network", ip: "10.10.10.11"

server2

1
2
3
config.vm.box = "centos/7"
config.vm.hostname = "server2"
config.vm.network "private_network", ip: "10.10.10.22"

필자는 가상화 서버 hostname 설정 => config.vm.hostname
고정아이피 설정 => config.vm.network
그리고 사용할 os는 centos 7를 사용하였다 .
구성하고자 하는 os는 다음 사이트에서 확인할수있다.
vagrant support os

vagrant 가상환경 구축

설정이 끝났다면 이제 설정된 정보 기반으로 vagrant 가상환경을 구축한다.
VagrantFile 이 위치한 경로에서 다음의 명령어를 사용한다.

1
$ vagrant up

설치진행이 모두 완료되었다면 다음의 명령어로 가상환경으로 접속한다.

1
2
$ vagrant ssh
[vagrant@server1 ~]$

구성한 설정정보로 server1의 hostname으로 접속된것을 확인할수있다.

1
$ yum update

깔끔하게 centos package update 최신으로 업데이트 하고, 각자가 원하는 추가구성 또는 설치를 진행한다.

vagrant 명령어

1
2
3
4
5
6
7
$ vagrant up => 구축
$ vagrant ssh => 접속
$ vagrant destroy => 삭제
$ vagrant halt => 종료
$ vagrant suspend => 일시중지 ( 현재상태저장 )
$ vagrant resume => 다시시작 ( suspend된 후 )
$ vagrant reload => 재시동 ( 설정파일변경 등 )

견해

vagrant로 정말 간단하게 원하는 환경을 쉽고 빠르게 구축할수있었다.
간간히 구글링을하면 vagrant 와 docker 비교관련 키워드를 심심치 않게 마주치게되는데,
그럼 docker 와 vagrant는 무엇이다를까 ?
docker와 vagrant 모두 독자적인 os 환경을 구성할수있다는 공통점이 있지만 docker는 가상환경이라닌 ‘격리’ 라는 표현을 사용한다.
host os의 linux 자원을 geust os 가 공유하여 사용함으로 vagrant와 같이 가상화를 수행하지않고도 빠르게 가상환경과 같은 효과를 낼수있다 .
window에서 docker 환경을 구성한다면 가상환경을 사전에 먼저 구성해야 할것이다. ( host linux os 로부터 자원을 공유받아야하므로 .. )