vagrant의 sandbox 플러그인

너무 글을 안써서 글을 좀 써야겠다는 마음으로 짧지만 삶에 도움되는
vagrant sandbox 명령어를 사용할 수 있게 해주는
sahara라는 플러그인을 소개하려고 한다.

해당 플러그인의 소스 저장소는 다음의 링크를 참고하시라.

sahara

sahara가 뭐하는 녀석인가?

사하라 하면 사막!
사막하면 모래!
모래 하면 sandbox 이다! (말도안되지만..그냥 넘어가자..ㅎ)
vagrant에서 사용하는 virtualbox를 sandbox 처럼 사용할 수 있게 해주는 플러그인이다.

주의

  • sahara는 Vagrant 1.0 이하에서는 제대로 동작하지 않는다.

설치

리눅스 계열은 요렇게 하면된다. (윈도우즈는….ㅠㅠ)

[code lang=text]
$ git clone https://github.com/ryuzee/sahara.git
$ cd sahara
$ bundle install
$ vagrant plugin install sahara
[/code]

설치 잘됐는지 확인

아래와 같이 나오면 잘되는 것이다.

[code lang=text]
$vagrant plugin list
sahara (0.0.17)
[/code]

사용법

이름은 sahara 인데 설치하면 사용할 수 있는 명령어는 sandbox 이다. 그냥 이름이 sandbox 였으면 안헷갈렸을것 같다.
명령어는 달랑 5개 밖에 없긴 한데, 그걸로도 충분하다.

[code lang=text]
### 샌드박스 모드 활성화
$ vagrant sandbox on

### 스냅샷 저장하기
$ vagrant sandbox commit

### 롤백하기
$ vagrant sandbox rollback

### 샌드박스 모드 끄기
$ vagrant sandbox off

### 샌드박스 상태 확인
$ vagrant sandbox status
[/code]

sandbox commit은 겁나 느리다

이걸 빠르게 하려면 가상머신을 끄고 하면 빠르다
~~근데 다시 켜는 시간은..읍읍..~~

[code lang=text]
$ vagrant halt
$ vagrant sandbox commit
[/code]

이제 이걸로 좀 더 편하게 chef질을 할 수 있게 됐다~! 예이!

참고로 virtualbox 뿐 아니라 VMware fusion, libvirt, parallels 도 지원한다~!

Chef의 테스트 환경을 만드는데 매우 적합한 툴 – Vagrant

Vagrant : 가상머신을 간단히 만들고, 부수고 할 수 있는 VirtualBox의 프론트 엔드툴.

Chef Solo로 만든 레시피를 실험해보기엔 최적이다.

공식 사이트

http://www.vagrantup.com/

문서

  • 당연한 말이지만, 문서에 읽어볼 만한게 많다. 기본적인건 아래의 글을 참고하고, 좀 더 추가적인 기능들은 문서를 참고하길!

http://docs.vagrantup.com/v2/

Vagrant 도입하기

http://downloads.vagrantup.com/ 에서 다운 받을 수 있는데, 나는
http://downloads.vagrantup.com/tags/v1.2.7 에서 Mac용 dmg파일을 받아서 설치했다. 설치는 매우 쉬우니 생략.

가상서버 올리기

서버 올리는거는 커맨드라인에서 vagrant명령어를 실행하는 걸로 됨. 처음에는 Vagrant Box라는 OS 이미지를 다운로드 해야함.

http://www.vagrantbox.es 에 Vagrant용 OS이미지가 종류별로 공개되어 있음.

vagrant box add {title} {url}

요거 실행하면, ~/.vagrant.d/boxes라는 디렉토리아래에 {title}이라는 디렉토리가 생기고,
그 아래에 virtualbox라는 폴더 아래에 버추얼 머신 관련 파일이 다 들어 있음.

을 실행하는 것으로 가능.

적당한 디렉토리를 만들고 거기에 들어간다음

$ vagrant init {title}

을 실행하면 해당 디렉토리 내에 Vagrantfile이라는 ruby로 된 설정파일이 만들어진다.

그리고 나서 기동

$ vagrant up

실제로 내가 테스트해본 커맨드는 아래와 같다.

$ vagrant box add ubuntu http://dl.dropbox.com/u/1537815/precise64.box
(실행후 이미지 다운받느라 시간 좀 걸림)
$ mkdir virtualEnv
$ cd virtualEnv
$ vagrant init ubuntu
$ vagrant up

ssh로 로그인 하려면(1)

$ vagrant ssh

와 같은 명령어를 실행해 주면 된다.

vagrant ssh말고 ssh 커맨드로 가상머신에 들어가고 싶을 때에는 Vagrantfile의 네트워크 설정을 조금 수정해야한다.

아래와 같은 코드가 주석 처리 되어 있는데, 주석을 풀어주면 된다.
config.vm.network :private_network, ip: "192.168.33.10"

그러면 ssh로도 들어갈 수는 있지만, 암호를 물어보는데, 이렇게 말고 Vagrant의 비밀키를 디폴트로 사용하게끔 설정 가능하다.

ssh로 로그인 하려면(2)

$ vagrant ssh-config --host [호스트 명]
이렇게 하면, 가상머신 서버에 관한 ssh설정이 나오는데,

$ vagrant ssh-config --host [호스트 명] >> ~/.ssh/config
이렇게 해두면

$ ssh [호스트 명]
으로 접속 가능하다.

※ ssh 커맨드는 knife-solo같은 툴에서 기본적으로 사용하니 ssh로 로그인 할 수 있게 해두는게 좋다.

정지 / 부수기

$ vagrant halt #정지
$ vagrant destory #부수기

일단 이렇게 해서 한번 설정을 해두면, 2번째 부터는 VagrantFile이 있는 디렉토리에 들어가서 vagrant up만 해주면 된다.

다른 가상 머신을 만들어 보려면

  1. 임의로 폴더를 만들고
  2. vagrant init를 실행하고
  3. Vagrantfile의 네트워크 설정을 변경해주고
  4. vagrant up
  5. vagrant ssh-config --host [별칭] >> ~/.ssh/config 로 ssh설정해주기
  6. vagrant sshssh [별칭]으로 게스트OS에 접속 가능.

$ mkdir sandbox
$ cd sandbox
$ vagrant init
$ vi Vagrantfile #네트워크 쪽 설정 수정하기.
$ vagrant up
$ vagrant ssh-config --host box >> ~/.ssh/config