[세미나] Vagrant 이지원

20
개개개개개 개개개개… 개개개 개개개 개개개개 개개개

Transcript of [세미나] Vagrant 이지원

Page 1: [세미나] Vagrant 이지원

개발기에선 잘되던데…

서버와 동일한 개발환경 꾸미기

Page 2: [세미나] Vagrant 이지원

개발기에선 잘되던데…• Human Error or Human Virus

•환경설정의 차이• But… 이일 저일 하다보면… 서버랑 환경이

달라져요…

Page 3: [세미나] Vagrant 이지원

해결책은 ?

•가상머신• 개발기 놔두고 왜 ?

•여러 사람이 사용하지 않아 오염되지 않는다 .

Page 4: [세미나] Vagrant 이지원

Vagrant

• “ 개발과 실서버의 일치를 위한 로컬 VM 을 손쉽게 빌드하자 .”

Page 5: [세미나] Vagrant 이지원

Vagrant

• https://github.com/mitchellh/vagrant • Mac OS X 10.5+, Windows 7, Debian,

Ubuntu, Redhat, CentOS, Fedora, Arch, and Gentoo

•VirtualBox 에 의존

Page 6: [세미나] Vagrant 이지원

설치• VirtualBox 설치• https://www.virtualbox.org/wiki/Downloads

• Vagrant 설치• http://downloads.vagrantup.com/

•패키지 방식의 설치 권장

• 지원되는것이 없다면… cmd> gem install vagrant <- 루비필요

Page 7: [세미나] Vagrant 이지원
Page 8: [세미나] Vagrant 이지원

Vagrant 프로젝트 셋업• http://files.vagrantup.com/NAME.box (lucid32, lucid64, pre-

cise32, precise64)

•http://vagrant-box.es

Page 9: [세미나] Vagrant 이지원

Vagrant 프로젝트 셋업• VM 을 만들기 위한 이미지가 필요

•BOX• 기본적으로 root 파일시스템 , Ram, Disk

사이즈 같은 설정을 가지고 있는 기본 이미지• Usage: vagrant box add <name> <url>

• 저장경로 : %HOMEPATH%\.vagrant.d\boxes

Page 10: [세미나] Vagrant 이지원
Page 11: [세미나] Vagrant 이지원

Vagrant 프로젝트 셋업• cmd> vagrant init <name>

Page 12: [세미나] Vagrant 이지원

Vagrant 프로젝트 셋업• cmd> vagrant up

Page 13: [세미나] Vagrant 이지원

Vagrant 프로젝트 셋업• VM 을 생성하고 실행하는 방법

•vagrant box add •vagrant init•vagrant up

Page 14: [세미나] Vagrant 이지원

어떻게 동작하는 거지 ?

• Command Line Interface– vagrant [sub command]

•vagrantfile– vagrantfile 이 생성된 디렉토리 = vagrnat

프로젝트

–VM 에 대한 모든 초기 설정을 관리

Page 15: [세미나] Vagrant 이지원

어떻게 동작하는 거지 ?

Page 16: [세미나] Vagrant 이지원

어떻게 동작하는 거지 ?

• vagrangfile 로드 순서• gem 디렉토리의 Vagrantfile 이 로드됩니다 . 이것은 모든

디폴트들을 포함하고 수정되지 않습니다 .• box 가 지정이 되었다면 box 디렉토리의 Vagrantfile 이

로드됩니다 . 만약 패키징할 때 --vagrantfile 옵션을 사용했다면 , 이것은 그 box 안에 패키지된 vagrantfile 입니다 .

• home 디렉토리 ( 디폴트 ~/.vagrant.d/) 의 vagrantfil 가 있다면 그것이 로드됩니다 . 이 vagrantfile 에 사용자에게 특화될 수 있는 몇 가지 디폴트값을 설정할 수 있습니다 .

• 프로젝트 디렉토리의 , 사용자가 수정할 수 있는 vagrantfile 이 로드됩니다 .

Page 17: [세미나] Vagrant 이지원

vagrantfile 의 설정들• config.vm.auto_port_range• config.vm.base_mac• config.vm.boot_mode• config.vm.box• config.vm.box_url• config.vm.customize

• config.vm.define• config.vm.forward_port• config.vm.guest• config.vm.host_name

• config.vm.network• config.vm.provision• config.vm.share_folder• config.nfs.map_uid• config.nfs.map_gid• config.package.name• config.ssh.username• config.ssh.host• config.ssh.port• config.ssh.guest_port• config.ssh.max_tries• config.ssh.timeout• config.ssh.private_key_path• config.ssh.forward_agent• config.ssh.forward_x11• config.ssh.shell• config.vagrant.dotfile_name• config.vagrant.host

Page 18: [세미나] Vagrant 이지원

MULTI VMVagrant::Config.run do |config|

config.vm.define :web do |web_config| web_config.vm.box = "web"

web_config.vm.forward_port 8080, 8088 end

config.vm.define :db do |db_config| db_config.vm.box = "db"

db_config.vm.forward_port 3306, 3306 endend

cmd> vagrant up webcmd> vagrant ssh web

Page 19: [세미나] Vagrant 이지원

Host-only NetworkingVagrant::Config.run do |config| config.vm.define :web do |web_config| # ... web_config.vm.network :hostonly, "10.11.12.13" end config.vm.define :db do |db_config| # ... db_config.vm.network :hostonly, "10.11.12.14" end end

Page 20: [세미나] Vagrant 이지원

정리• 실 서버 환경에 맞출려면 역시 어렵다 .• 한명이 총대 매고 box 만들면 나머지는 오염

걱정없이 사용할 수 있다 .