[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
Upcoming SlideShare
Loading in...5
×
 

[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기

on

  • 11,030 views

H3 2012 발표자료

H3 2012 발표자료
내컴에선 잘되던데?
- vagrant로 서버와 동일한 개발환경 꾸미기
-KTH 강소리

Statistics

Views

Total Views
11,030
Views on SlideShare
7,020
Embed Views
4,010

Actions

Likes
59
Downloads
165
Comments
2

21 Embeds 4,010

http://mobicon.tistory.com 1970
http://h3.kthcorp.com 1792
http://www.minorgc.com 98
http://niceman114.tistory.com 38
http://www.scoop.it 25
http://h3.paran.com 21
http://datatune.iptime.org 17
http://h3.localhost.com 14
http://wiki.jtl.pe.kr 8
http://webcache.googleusercontent.com 7
http://www.jsd.or.kr 4
http://wp.minorgc.com 3
http://gb.minorgc.com 2
https://twitter.com 2
http://doku.jtl.pe.kr 2
http://wiki.infobank.net 2
http://translate.googleusercontent.com 1
http://115.140.24.79 1
http://plus.url.google.com 1
http://getpocket.com 1
http://211.62.44.161 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • 잘 봤습니다. 감사합니다~
    Are you sure you want to
    Your message goes here
    Processing…
  • 훌륭한 슬라이드 잘 보았습니다. 이제 막 Vagrant를 공부하고 있었는데, 개념 잡는데, 그리고 어떻게 사용하는지에 대한 일목요연하게 잘 알 수 있었습니다. 감사합니다. ^^
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기 [H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기 Presentation Transcript

  • 내 컴에선 잘 되던데?Vagrant로 서버와동일한 개발환경 꾸미기기술전략팀 | 강소리
  • @curioe 강소리입니다
  • @curioe 강소리입니다ravash
  • 디버깅의 6단계디버깅의 6단계
  • 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
  • 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
  • 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
  • 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
  • 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성
  • 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  • 디버깅의 6단계 디버깅의 6단계1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  • 왜 내 컴에서만 잘 되는 걸까? 개발 환경 불일치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 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
  • Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add ↵ lucid32 ↵ http://files.vagrantup.com/lucid32.box@work$ 내 로컬에서의 별칭 미리 빌드된 우분투 10.04 가상머신 이미지
  • Vagrant로 로컬에 우분투 VM 실행하기@work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box@work$ mkdir project@work$ cd project@project$
  • 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로 로컬에 우분투 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$
  • 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:~$
  • 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$
  • 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 분해 요. 알아도충 명령 만 요
  • 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:07 lucid32 Ubuntu VM Ubunt Ubuntu VM u Ubuntu VM Ubuntu VM Ubuntu VM
  • Vagrant 기본 지식 box 다운로드공식 http://files.vagrantup.com/[box이름].box- lucid32, lucid64, precise32, precise643rd party http://vagrantbox.es
  • 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| # 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
  • Vagrant로 개발 환경 구성하기미니 개발 상황극
  • Vagrant로 개발 환경 구성하기 개발자 5명 서버: 우분투 10.04SW: 자바6, 메이븐2(톰캣) 소스위치: /service 포트: 8080
  • Vagrant로 개발 환경 구성하기 문제 #1서버 로컬 윈도우 2우분투 != 맥210.04 우분투 1 12.04
  • Vagrant로 개발 환경 구성하기 문제 #2 서버 로컬 자바 1.6.0_24 자바 1.6.0_24 메이븐 2.2.1 메이븐 2.2.1 자바 1.7설치환경 문서 공유; 버전 제각각 위험
  • Vagrant로 개발 환경 구성하기 문제 #3localhost:8080/spring-mvc-showcase Address already in use 8080
  • Vagrant로 개발 환경 구성하기 문제 #4( 소프트웨어 다운로드 + 설치 + 설정 ) * 5
  • Vagrant로 개발 환경 구성하기“Vagrant 를 사용해보자”
  • Vagrant로 개발 환경 구성하기@work$ cd project@project$ lsVagrantfile@project$ vagrant up@project$
  • Vagrant로 개발 환경 구성하기 문제 #1 해결서버 로컬 Ubuntu VM 윈도우 2우분투 == 맥2 Ubuntu VM10.04 우분투 1 Ubuntu VM 12.04
  • Vagrant로 개발 환경 구성하기@project$ git clone https://github.com/SpringSource/spring-mvc-showcase@project$@project$ lsVagrantfile spring-mvc-showcase
  • 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"
  • Vagrant로 개발 환경 구성하기$ vagrant package
  • Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$
  • Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$
  • Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$tebica$ vagrant box add newbox http://kthcorp.com/package.box
  • Vagrant로 개발 환경 구성하기 box 공유curioe$ vagrant packagecurioe$tebica$ vagrant box add newbox http://kthcorp.com/package.boxtebica$ vagrant init newboxtebica$ vagrant uptebica$
  • 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( Host( VM( :8080( :8088(
  • Vagrant로 개발 환경 구성하기 문제 #3 해결localhost:8088/spring-mvc-showcase 8088 8080
  • Vagrant로 개발 환경 구성하기 SSH$ vagrant ssh$ ssh vagrant@localhost -p 2222 Outside( Host( VM( :22( :2222(
  • 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_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
  • 분산 환경 구성하기 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
  • Vagrant 사용 일반적인 사용법1. box 는 사내 웹서버에 업로드 $ vagrant box add ~2. 프로젝트 내에 Vagrantfile을 포함 $ git add Vagrantfile $ git commit -m ‘개발 환경 설정’3. Vagrant 사용 $ vagrant up
  • Vagrant 사용 facebook/tornadohttps://github.com/facebook/tornado/blob/master/maint/vm/ubuntu10.04/Vagrantfile
  • 프로비저닝 조금 아쉬워요소프트웨어 버전 업데이트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.kthcorp.com" chef.validation_key_path = "chef/validation.pem" chef.run_list = ["role[baas]"]end
  • Chef 프로비저닝 “Chef 서버없어도 실망 마세요~”
  • Chef 프로비저닝Chef Solo 프로비저닝 VM
  • 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
  • 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-with-vagranthttps://speakerdeck.com/u/lewg/p/consistent-local-development-with-vagrant-and-chef