Today Key : Vagrant, Development, Environment, lightweight, reproducible, portable, Automation
Vagrant
개 요
▪ 2010년 1월에 Mitchell Hashimoto에 이해 시작된 Open Source Project.
▪ 일종의 VM 관리 도구
▪ 완벽한 개발 환경을 구축하기 위한 도구
- 환경 구축의 자동화 및 일치
▪ 동일한 VM 환경을 사용하기 쉬운 Workflow 및 자동화에 초점을 맞춰서, 개발 환경을 위한 구축에 필요한 시간을 줄이고,
개발/생산성을 높이면서 환경의 상이함에 따라서 정상적으로 동작하지 않았던 문제점을 해결.
특 징
▪ VirtualBox(default), Vmware(별도 사용 라이선스 필요), AWS 등을 지원
▪ VirtualBox를 기본으로 지원하며, Vmware와 같은 다른 Provider 지원을 위해서는 별도의 Plugin 설치 필요
▪ Wndows, Linux(Debian / Redhat 계열), MAC OS X
▪ Shell Scripts, Chef, Puppet 등을 지원
▪ Ruby 스크립트로 작성
▪ 수 분내로 전체 시스템을 어디에서나 구축 가능하며, 어디서나 동일한 환경을 구축
▪ Single file (Vagrant 파일) / Single command (vagrant up)
구성 요소
▪ Box
- VM을 만들기 위한 기본 OS 이미지를 포함한 VM 설정에 대한 템플릿
- 이미 만들어진 BOX 파일을 가져오거나, 직접 원하는 환경으로 생성 가능.
- 공개 Box 파일 공유 사이트 : http://www.vagrantbox.es
https://atlas.hashicorp.com/boxes/search
▪ Vagrant File
- Vagrant를 사용하여 VM 생성 시에 필요한 초기 설정 파일
: Box File, VM hardware 설정(CPU, Memory, Network Card, Port forwarding etc)
- Vagrant init 명령 수행을 하게 되면 Vagrantfile 이라는 이름의 파일로 생성.
Provisioning
▪ VM 생성 시에, Shell Script나 Automation Tool인 Chef, Puppet 등을 사용하여 VM에 대한 Provision을 수행할 수 있다
▪ 해당 Provision에 대한 사항은 Vagrantfile에서 실행될 수 있도록 작성한다. (실제 실행 코드는 별도)
Vagrant 설치하기
▪ Vagrant 홈페이지에서 설치 파일을 다운받아서 실행하고, 그냥 Next만 눌러도 설치가 완료된다.
- 아래 예에서는 설치 위치만 임의로 변경하였다.
Vagrant 실행해보기
▪ VM BOX 이미지를 가지고, VM을 하나 생성.
▪ Vagrant BOX 이미지 받기
- vagrant box add box_name box_url
- 본 예제에서는 Cent OS 5.6 Minimal 버전 다운
▪ Vagrant 초기화
- vagrant init box_name
- Vagrantfile 생성 됨.
- 별도의 BOX 이미지를 받지 않고, 기본 BOX 공유 웹에 있는 BOX_Name으로 지정할 경우에 해당 Web에서 자동 다운
▪ Vagrantfile 보기
- VM 생성에 필요한 다양한 옵션을 지정할 수 있음.
▪ Vagrant 실행
- Vagrantfile의 초기 상태 값에 따라서 VM을 생성
- Vagrant up
▪ VirtualBOX 확인
- 정상적으로 VirtualBOX에 VM 생성 확인
▪ VM 접속확인
- VM에 접속하여 확인을 해보면, 초기에 다운 받은 CentOS 5.6 BOX 이미지가 정상적으로 구동되었음을 볼 수 있다.