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