내 컴에선 잘 되던데?Vagrant로 서버와동일한 개발환경 꾸미기기술전략팀 | 강소리
@curioe 강소리입니다
@curioe 강소리입니다ravash
디버깅의 6단계디버깅의 6단계
디버깅의 6단계            디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
디버깅의 6단계            디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
디버깅의 6단계             디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 ...
디버깅의 6단계             디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 ...
디버깅의 6단계               디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리...
디버깅의 6단계               디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리...
디버깅의 6단계               디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리...
왜 내 컴에서만 잘 되는 걸까?                                개발 환경 불일치Image - http://futurist.se/gldt/page/3/
왜 내 컴에서만 잘 되는 걸까?개발 환경 불일치
왜 내 컴에서만 잘 되는 걸까?      프로젝트마다 다 달라Image - http://itprojectguide.blogspot.kr/2007/02/project-variation.html
해결책은 있어요          해결책은 있어요Image - http://www.flickr.com/photos/86979666@N00/7623744678/
해결책은 가상화해결책은 가상화
해결책은 가상화              로컬에 서버 VM 설치Image - http://www.flickr.com/photos/catch2205/4361365020/sizes/o/in/photostream/
해결책은 가상화
해결책은 가상화
해결책은 가상화쓰기 불편한 것은 마찬가지
로컬 가상머신을 손쉽게 빌드하자로컬 가상머신을 손쉽게 관리하자.
개발과 실서버의 일치를 위해 개발과 실서버의 일치를 위해로컬 가상머신을 손쉽게 관리하자.
vagrant up$ vagrant up
Vagrant를 소개합니다.     Vagrant 개발과 실서버의 일치를 위해로컬 가상머신을 손쉽게 관리하자.
Vagrant를 소개합니다.          Vagrant가상머신 관리 툴http://vagrantup.com
Vagrant를 소개합니다.             Vagrant@mitchellh오픈소스 MIT 라이센스Ruby현재 1.0.5<< 1.0.0 - 2012.03.07<< 0.1.0 - 2010.03.07
Vagrant를 소개합니다.
Vagrant로 로컬에 VM 실행하기우분투 10.04            Ubun tu VM
Vagrant로 로컬에 우분투 VM 실행하기  준비물
Vagrant로 로컬에 우분투 VM 실행하기VirtualBox 설치http://virtualbox.org
Vagrant로 로컬에 우분투 VM 실행하기       Vagrant 설치http://downloads.vagrantup.com
Vagrant로 로컬에 우분투 VM 실행하기$ vagrantUsage: vagrant [-v] [-h] command [<args>]    -v, --version                    Print the v...
Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add ↵    lucid32 ↵    http://files.vagrantup.com/lucid32.box@work$  내 로컬에서의 별칭 ...
Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add    lucid32    http://files.vagrantup.com/lucid32.box@work$ mkdir project@wo...
Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add    lucid32    http://files.vagrantup.com/lucid32.box@work$ mkdir project@wo...
Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add    lucid32    http://files.vagrantup.com/lucid32.box@work$ mkdir project@wo...
Vagrant로 로컬에 우분투 VM 실행하기@project$ vagrant sshLinux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04UTC 2012 i68...
Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add    lucid32    http://files.vagrantup.com/lucid32.box@work$ mkdir project@wo...
Vagrant 기본 지식@work$ vagrant box add    lucid32    http://files.vagrantup.com/lucid32.boxh3@work$ mkdir projecth3@work$ cd ...
Vagrant 기본 지식@work$ vagrant box add <name> <url>           VM 이미지 다운로드                B OX
Vagrant 기본 지식        Box기본 설정을 가진 VM 템플릿 이미지
Vagrant 기본 지식        Box기본 설정을 가진 VM 템플릿 이미지         메모리         파일시스템         네트워크
Vagrant 기본 지식$ vagrant box add lucid32 http://~~$ cd ~/.vagrant.d/box@$[HOME]/.vagrant.d/box$ ls -aldrwxr-xr-x Oct 31 17:0...
Vagrant 기본 지식          box 다운로드공식 http://files.vagrantup.com/[box이름].box- lucid32, lucid64, precise32, precise643rd party ...
Vagrant 기본 지식@project$ vagrant init <box-name>       Vagrant 프로젝트 설정 파일                 r antfile             V ag
Vagrant 기본 지식$ vagrant init lucid32   # -*- mode: ruby -*-   # vi: set ft=ruby :   Vagrant::Config.run do |config|     # E...
Vagrant로 개발 환경 구성하기미니 개발 상황극
Vagrant로 개발 환경 구성하기     개발자 5명  서버: 우분투 10.04SW: 자바6, 메이븐2(톰캣)  소스위치: /service     포트: 8080
Vagrant로 개발 환경 구성하기        문제 #1서버              로컬              윈도우 2우분투      !=   맥210.04              우분투 1             ...
Vagrant로 개발 환경 구성하기             문제 #2     서버              로컬 자바 1.6.0_24         자바 1.6.0_24 메이븐 2.2.1           메이븐 2.2.1...
Vagrant로 개발 환경 구성하기               문제 #3localhost:8080/spring-mvc-showcase            Address already in use               ...
Vagrant로 개발 환경 구성하기            문제 #4( 소프트웨어 다운로드 + 설치 + 설정 ) * 5
Vagrant로 개발 환경 구성하기“Vagrant 를 사용해보자”
Vagrant로 개발 환경 구성하기@work$ cd project@project$ lsVagrantfile@project$ vagrant up@project$
Vagrant로 개발 환경 구성하기    문제 #1 해결서버            로컬                      Ubuntu VM             윈도우 2우분투     ==   맥2       Ubun...
Vagrant로 개발 환경 구성하기@project$ git clone https://github.com/SpringSource/spring-mvc-showcase@project$@project$ lsVagrantfile...
Vagrant로 개발 환경 구성하기$ vagrant sshvagrant@lucid32:~$ sudo apt-get install openjdk-6-jdkvagrant@lucid32:~$ sudo apt-get insta...
Vagrant로 개발 환경 구성하기$ vagrant package
Vagrant로 개발 환경 구성하기                  box 공유curioe$ vagrant packagecurioe$
Vagrant로 개발 환경 구성하기                  box 공유curioe$ vagrant packagecurioe$
Vagrant로 개발 환경 구성하기                  box 공유curioe$ vagrant packagecurioe$tebica$ vagrant box add newbox        http://kthc...
Vagrant로 개발 환경 구성하기                  box 공유curioe$ vagrant packagecurioe$tebica$ vagrant box add newbox        http://kthc...
Vagrant로 개발 환경 구성하기   문제 #2, #4 동시 해결     환경이 설치된 box 공유     버전 설정 모두 동일소프트웨어 다운로드 + 설치 + 설정 1명만
Vagrant로 개발 환경 구성하기  미니 개발 상황극 (계속)“VM쓰라고?”“로그인해서 개발해야해?”“내가 쓰는 에디터 쓰고 싶은데!”
거룩한 전쟁   돌발상황Vim이 최고!      싸우자SublimeText 2가 대세            구글 행아웃에서              싸우자!에막스 지옥! 진리의 젯브레인!이클립스 완전구려!
Vagrant로 개발 환경 구성하기          파일 동기화config.vm.share_folder “v-data”,“/service”, “spring-mvc-showcase”    $ vagrant reload
Vagrant로 개발 환경 구성하기파일 동기화           service      VMspring-mvc-showcase                      Host
Vagrant로 개발 환경 구성하기프로젝트는 무사 진행Vim이 최고!       싸우자 SublimeText 2가 대세             구글 행아웃에서               싸우자!에막스 지옥! 진리의 젯브레인...
Vagrant로 개발 환경 구성하기                   포트 포워딩    config.vm.forward_port 8080, 8088             $ vagrant reloadOutside(    ...
Vagrant로 개발 환경 구성하기            문제 #3 해결localhost:8088/spring-mvc-showcase                   8088                          ...
Vagrant로 개발 환경 구성하기                           SSH$ vagrant ssh$ ssh vagrant@localhost -p 2222  Outside(             Host( ...
Vagrant로 개발 환경 구성하기$ git add Vagrantfile$ git commit -m ‘개발 환경 설정’$ git push
Vagrant로 개발 환경 구성하기서버 OS != 로컬 OS서버 OS == 로컬 OS설치 환경 문서로 공유설치 환경 자체가 공유소프트웨어 버전 불일치소프트웨어 버전 전부 일치개발자마다 개발 환경 구축설치는 단 한명이!쓰...
Vagrant로 개발 환경 구성하기$ vagrant destroy
Vagrant로 개발 환경 구성하기“사실은 더 복잡해요”
분산 환경 구성하기                     Multi-VMVagrant::Config.run do |config|  config.vm.define :web do |web_config|    web_confi...
분산 환경 구성하기           Host-Only 네트워킹Vagrant::Config.run do |config|  config.vm.define :web do |web_config|    web_config.vm...
Vagrant 사용           일반적인 사용법1. box 는 사내 웹서버에 업로드   $ vagrant box add ~2. 프로젝트 내에 Vagrantfile을 포함   $ git add Vagrantfile ...
Vagrant 사용                    facebook/tornadohttps://github.com/facebook/tornado/blob/master/maint/vm/ubuntu10.04/Vagrant...
프로비저닝      조금 아쉬워요소프트웨어 버전 업데이트box는 이미 배포 완료
프로비저닝             프로비저닝Image - http://www.scalarium.com/features/automation/
프로비저닝          프로비저닝config.vm.provision :{provisioner}shellchefpuppet
Chef 프로비저닝Chef Server 프로비저닝
Chef 프로비저닝Chef Server 프로비저닝             VM
Chef 프로비저닝           Chef Server 프로비저닝config.vm.provision :chef_client do |chef|    chef.chef_server_url = "http://cocina....
Chef 프로비저닝  “Chef 서버없어도 실망 마세요~”
Chef 프로비저닝Chef Solo 프로비저닝 VM
Chef 프로비저닝            Chef Solo 프로비저닝              !"" cookbooks               #"" apache2               #"" apt          ...
Chef 프로비저닝
Vagrant로 VM을 관리하자     Vagrant 개발과 실서버의 일치를 위해로컬 가상머신을 손쉽게 관리하자.
vagrant up프로젝트를 새로 시작할 때
vagrant up$ vagrant up
vagrant up프로젝트에 새 동료가 참여할 때
vagrant up$ vagrant up
vagrant up   서버와 동일한개발 환경을 꾸미기 위해
vagrant up$ vagrant up
감사합니다.개발실 / 기술전략팀 / 강소리 curioe@kthcorp.com       @curioe
고마워요, 레퍼런스                     레퍼런스https://speakerdeck.com/mitchellh/develop-and-test-configuration-management-scripts-wit...
Upcoming SlideShare
Loading in …5
×

내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기

2,201 views

Published on

H3 2012 에서 발표했던 자료입니다.

"내 컴에선 잘되던데?" 개발자들이 로컬에서 개발 후 서버에 Deploy 했을 때 가장 많이 하는 말 중 하나입니다.
실제 개발환경과 프로덕션 환경의 차이는 다양한 오류들을 만들어 내는 주범입니다. 이를 위해 로컬 가상 머신을 손쉽게 관리하여 서버와 똑같은 개발환경을 만들어주는 Vagrant 를 소개합니다.
또한 DevOps 에서 가장 많이 얘기되는 Chef 를 이용하여 자신의 개발환경에서도 Configuration Management 를 하는 방법을 설명합니다.

0 Comments
31 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,201
On SlideShare
0
From Embeds
0
Number of Embeds
38
Actions
Shares
0
Downloads
49
Comments
0
Likes
31
Embeds 0
No embeds

No notes for slide

내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기

  1. 1. 내 컴에선 잘 되던데?Vagrant로 서버와동일한 개발환경 꾸미기기술전략팀 | 강소리
  2. 2. @curioe 강소리입니다
  3. 3. @curioe 강소리입니다ravash
  4. 4. 디버깅의 6단계디버깅의 6단계
  5. 5. 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
  6. 6. 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
  7. 7. 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
  8. 8. 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
  9. 9. 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성
  10. 10. 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  11. 11. 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  12. 12. 왜 내 컴에서만 잘 되는 걸까? 개발 환경 불일치Image - http://futurist.se/gldt/page/3/
  13. 13. 왜 내 컴에서만 잘 되는 걸까?개발 환경 불일치
  14. 14. 왜 내 컴에서만 잘 되는 걸까? 프로젝트마다 다 달라Image - http://itprojectguide.blogspot.kr/2007/02/project-variation.html
  15. 15. 해결책은 있어요 해결책은 있어요Image - http://www.flickr.com/photos/86979666@N00/7623744678/
  16. 16. 해결책은 가상화해결책은 가상화
  17. 17. 해결책은 가상화 로컬에 서버 VM 설치Image - http://www.flickr.com/photos/catch2205/4361365020/sizes/o/in/photostream/
  18. 18. 해결책은 가상화
  19. 19. 해결책은 가상화
  20. 20. 해결책은 가상화쓰기 불편한 것은 마찬가지
  21. 21. 로컬 가상머신을 손쉽게 빌드하자로컬 가상머신을 손쉽게 관리하자.
  22. 22. 개발과 실서버의 일치를 위해 개발과 실서버의 일치를 위해로컬 가상머신을 손쉽게 관리하자.
  23. 23. vagrant up$ vagrant up
  24. 24. Vagrant를 소개합니다. Vagrant 개발과 실서버의 일치를 위해로컬 가상머신을 손쉽게 관리하자.
  25. 25. Vagrant를 소개합니다. Vagrant가상머신 관리 툴http://vagrantup.com
  26. 26. Vagrant를 소개합니다. Vagrant@mitchellh오픈소스 MIT 라이센스Ruby현재 1.0.5<< 1.0.0 - 2012.03.07<< 0.1.0 - 2010.03.07
  27. 27. Vagrant를 소개합니다.
  28. 28. Vagrant로 로컬에 VM 실행하기우분투 10.04 Ubun tu VM
  29. 29. Vagrant로 로컬에 우분투 VM 실행하기 준비물
  30. 30. Vagrant로 로컬에 우분투 VM 실행하기VirtualBox 설치http://virtualbox.org
  31. 31. Vagrant로 로컬에 우분투 VM 실행하기 Vagrant 설치http://downloads.vagrantup.com
  32. 32. Vagrant로 로컬에 우분투 VM 실행하기$ vagrantUsage: vagrant [-v] [-h] command [<args>] -v, --version Print the version and exit. -h, --help Print this help.Available subcommands: box destroy gem halt init Command Line Interface package provision reload GUI 없어요 resume ssh ssh-config status suspend up
  33. 33. Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add ↵ lucid32 ↵ http://files.vagrantup.com/lucid32.box@work$ 내 로컬에서의 별칭 미리 빌드된 우분투 10.04 가상머신 이미지
  34. 34. Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box@work$ mkdir project@work$ cd project@project$
  35. 35. Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box@work$ mkdir project@work$ cd project@project$ vagrant init lucid32@project$ 방금 우분투 가상머신 별칭
  36. 36. Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box@work$ mkdir project@work$ cd project@project$ vagrant init lucid32@project$ vagrant up@project$
  37. 37. Vagrant로 로컬에 우분투 VM 실행하기@project$ vagrant sshLinux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04UTC 2012 i686 GNU/LinuxUbuntu 10.04.4 LTSWelcome to Ubuntu! * Documentation: https://help.ubuntu.com/New release precise available.Run do-release-upgrade to upgrade to it.Welcome to your Vagrant-built virtual machine.Last login: Fri Sep 14 07:26:29 2012 from 10.0.2.2vagrant@lucid32:~$ uname -naLinux lucid32 2.6.32-38-generic #83-UbuntuSMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/Linuxvagrant@lucid32:~$
  38. 38. Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box@work$ mkdir project@work$ cd project@project$ vagrant init lucid32@project$ vagrant up@project$
  39. 39. Vagrant 기본 지식@work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.boxh3@work$ mkdir projecth3@work$ cd project@project$ vagrant init lucid32@project$ vagrant up 분해 요. 알아도충 명령 만 요
  40. 40. Vagrant 기본 지식@work$ vagrant box add <name> <url> VM 이미지 다운로드 B OX
  41. 41. Vagrant 기본 지식 Box기본 설정을 가진 VM 템플릿 이미지
  42. 42. Vagrant 기본 지식 Box기본 설정을 가진 VM 템플릿 이미지 메모리 파일시스템 네트워크
  43. 43. Vagrant 기본 지식$ vagrant box add lucid32 http://~~$ cd ~/.vagrant.d/box@$[HOME]/.vagrant.d/box$ ls -aldrwxr-xr-x Oct 31 17:07 lucid32 Ubuntu VM Ubunt Ubuntu VM u Ubuntu VM Ubuntu VM Ubuntu VM
  44. 44. Vagrant 기본 지식 box 다운로드공식 http://files.vagrantup.com/[box이름].box- lucid32, lucid64, precise32, precise643rd party http://vagrantbox.es
  45. 45. Vagrant 기본 지식@project$ vagrant init <box-name> Vagrant 프로젝트 설정 파일 r antfile V ag
  46. 46. Vagrant 기본 지식$ vagrant init lucid32 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant::Config.run do |config| # Every Vagrant virtual environment requires a box to build off of. config.vm.box = "lucid32" # The url from where the config.vm.box box will be fetched if it # doesnt already exist on the users system. config.vm.box_url = "http://files.vagrantup.com/lucid32.box" # Forward a port from the guest to the host, which allows for outside # computers to access the VM, whereas host only networking does not. config.vm.forward_port 8080, 8088 # Share an additional folder to the guest VM. The first argument is # an identifier, the second is the path on the guest to mount the # folder, and the third is the path on the host to the actual folder. config.vm.share_folder "v-showcase", "/service", "spring-mvc-showcase" # Update Server config.vm.provision :shell do |shell| shell.inline = "apt-get update --fix-missing" end end
  47. 47. Vagrant로 개발 환경 구성하기미니 개발 상황극
  48. 48. Vagrant로 개발 환경 구성하기 개발자 5명 서버: 우분투 10.04SW: 자바6, 메이븐2(톰캣) 소스위치: /service 포트: 8080
  49. 49. Vagrant로 개발 환경 구성하기 문제 #1서버 로컬 윈도우 2우분투 != 맥210.04 우분투 1 12.04
  50. 50. Vagrant로 개발 환경 구성하기 문제 #2 서버 로컬 자바 1.6.0_24 자바 1.6.0_24 메이븐 2.2.1 메이븐 2.2.1 자바 1.7설치환경 문서 공유; 버전 제각각 위험
  51. 51. Vagrant로 개발 환경 구성하기 문제 #3localhost:8080/spring-mvc-showcase Address already in use 8080
  52. 52. Vagrant로 개발 환경 구성하기 문제 #4( 소프트웨어 다운로드 + 설치 + 설정 ) * 5
  53. 53. Vagrant로 개발 환경 구성하기“Vagrant 를 사용해보자”
  54. 54. Vagrant로 개발 환경 구성하기@work$ cd project@project$ lsVagrantfile@project$ vagrant up@project$
  55. 55. Vagrant로 개발 환경 구성하기 문제 #1 해결서버 로컬 Ubuntu VM 윈도우 2우분투 == 맥2 Ubuntu VM10.04 우분투 1 Ubuntu VM 12.04
  56. 56. Vagrant로 개발 환경 구성하기@project$ git clone https://github.com/SpringSource/spring-mvc-showcase@project$@project$ lsVagrantfile spring-mvc-showcase
  57. 57. Vagrant로 개발 환경 구성하기$ vagrant sshvagrant@lucid32:~$ sudo apt-get install openjdk-6-jdkvagrant@lucid32:~$ sudo apt-get install maven2vagrant@lucid32:~$vagrant@lucid32:~$ java -versionjava version "1.6.0_24"OpenJDK Runtime Environment (IcedTea6 1.11.5)(6b24-1.11.5-0ubuntu1~10.04.2)OpenJDK Client VM (build 20.0-b12, mixed mode, sharing)vagrant@lucid32:~$vagrant@lucid32:~$ mvn -versionApache Maven 2.2.1 (rdebian-1)Java version: 1.6.0_24Java home: /usr/lib/jvm/java-6-openjdk/jreDefault locale: en_US, platform encoding:ANSI_X3.4-1968OS name: "linux" version: "2.6.32-38-generic" arch:"i386" Family: "unix"
  58. 58. Vagrant로 개발 환경 구성하기$ vagrant package
  59. 59. Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$
  60. 60. Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$
  61. 61. Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$tebica$ vagrant box add newbox http://kthcorp.com/package.box
  62. 62. Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$tebica$ vagrant box add newbox http://kthcorp.com/package.boxtebica$ vagrant init newboxtebica$ vagrant uptebica$
  63. 63. Vagrant로 개발 환경 구성하기 문제 #2, #4 동시 해결 환경이 설치된 box 공유 버전 설정 모두 동일소프트웨어 다운로드 + 설치 + 설정 1명만
  64. 64. Vagrant로 개발 환경 구성하기 미니 개발 상황극 (계속)“VM쓰라고?”“로그인해서 개발해야해?”“내가 쓰는 에디터 쓰고 싶은데!”
  65. 65. 거룩한 전쟁 돌발상황Vim이 최고! 싸우자SublimeText 2가 대세 구글 행아웃에서 싸우자!에막스 지옥! 진리의 젯브레인!이클립스 완전구려!
  66. 66. Vagrant로 개발 환경 구성하기 파일 동기화config.vm.share_folder “v-data”,“/service”, “spring-mvc-showcase” $ vagrant reload
  67. 67. Vagrant로 개발 환경 구성하기파일 동기화 service VMspring-mvc-showcase Host
  68. 68. Vagrant로 개발 환경 구성하기프로젝트는 무사 진행Vim이 최고! 싸우자 SublimeText 2가 대세 구글 행아웃에서 싸우자!에막스 지옥! 진리의 젯브레인!이클립스 완전구려!
  69. 69. Vagrant로 개발 환경 구성하기 포트 포워딩 config.vm.forward_port 8080, 8088 $ vagrant reloadOutside( Host( VM( :8080( :8088(
  70. 70. Vagrant로 개발 환경 구성하기 문제 #3 해결localhost:8088/spring-mvc-showcase 8088 8080
  71. 71. Vagrant로 개발 환경 구성하기 SSH$ vagrant ssh$ ssh vagrant@localhost -p 2222 Outside( Host( VM( :22( :2222(
  72. 72. Vagrant로 개발 환경 구성하기$ git add Vagrantfile$ git commit -m ‘개발 환경 설정’$ git push
  73. 73. Vagrant로 개발 환경 구성하기서버 OS != 로컬 OS서버 OS == 로컬 OS설치 환경 문서로 공유설치 환경 자체가 공유소프트웨어 버전 불일치소프트웨어 버전 전부 일치개발자마다 개발 환경 구축설치는 단 한명이!쓰고 있는 포트 충돌손쉬운 포트 포워딩
  74. 74. Vagrant로 개발 환경 구성하기$ vagrant destroy
  75. 75. Vagrant로 개발 환경 구성하기“사실은 더 복잡해요”
  76. 76. 분산 환경 구성하기 Multi-VMVagrant::Config.run do |config| config.vm.define :web do |web_config| web_config.vm.box = "web" web_config.vm.forward_port 80, 8080 end config.vm.define :db do |db_config| db_config.vm.box = "db" db_config.vm.forward_port 3306, 3306 endend
  77. 77. 분산 환경 구성하기 Host-Only 네트워킹Vagrant::Config.run do |config| config.vm.define :web do |web_config| web_config.vm.box = "web" web_config.vm.forward_port 80, 8080 web_config.vm.network :hostonly, "10.11.12.13" end config.vm.define :db do |db_config| db_config.vm.box = "db" db_config.vm.forward_port 3306, 3306 db_config.vm.network :hostonly, "10.11.12.14" endend
  78. 78. Vagrant 사용 일반적인 사용법1. box 는 사내 웹서버에 업로드 $ vagrant box add ~2. 프로젝트 내에 Vagrantfile을 포함 $ git add Vagrantfile $ git commit -m ‘개발 환경 설정’3. Vagrant 사용 $ vagrant up
  79. 79. Vagrant 사용 facebook/tornadohttps://github.com/facebook/tornado/blob/master/maint/vm/ubuntu10.04/Vagrantfile
  80. 80. 프로비저닝 조금 아쉬워요소프트웨어 버전 업데이트box는 이미 배포 완료
  81. 81. 프로비저닝 프로비저닝Image - http://www.scalarium.com/features/automation/
  82. 82. 프로비저닝 프로비저닝config.vm.provision :{provisioner}shellchefpuppet
  83. 83. Chef 프로비저닝Chef Server 프로비저닝
  84. 84. Chef 프로비저닝Chef Server 프로비저닝 VM
  85. 85. Chef 프로비저닝 Chef Server 프로비저닝config.vm.provision :chef_client do |chef| chef.chef_server_url = "http://cocina.kthcorp.com" chef.validation_key_path = "chef/validation.pem" chef.run_list = ["role[baas]"]end
  86. 86. Chef 프로비저닝 “Chef 서버없어도 실망 마세요~”
  87. 87. Chef 프로비저닝Chef Solo 프로비저닝 VM
  88. 88. Chef 프로비저닝 Chef Solo 프로비저닝 !"" cookbooks #"" apache2 #"" apt #"" php !"" php_sampleconfig.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe "php_sample"end https://github.com/curioe/vagrant_sample
  89. 89. Chef 프로비저닝
  90. 90. Vagrant로 VM을 관리하자 Vagrant 개발과 실서버의 일치를 위해로컬 가상머신을 손쉽게 관리하자.
  91. 91. vagrant up프로젝트를 새로 시작할 때
  92. 92. vagrant up$ vagrant up
  93. 93. vagrant up프로젝트에 새 동료가 참여할 때
  94. 94. vagrant up$ vagrant up
  95. 95. vagrant up 서버와 동일한개발 환경을 꾸미기 위해
  96. 96. vagrant up$ vagrant up
  97. 97. 감사합니다.개발실 / 기술전략팀 / 강소리 curioe@kthcorp.com @curioe
  98. 98. 고마워요, 레퍼런스 레퍼런스https://speakerdeck.com/mitchellh/develop-and-test-configuration-management-scripts-with-vagranthttps://speakerdeck.com/u/lewg/p/consistent-local-development-with-vagrant-and-chef

×