SlideShare ist ein Scribd-Unternehmen logo
1 von 98
Downloaden Sie, um offline zu lesen
내 컴에선 잘 되던데?
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 실행하기


$ vagrant
Usage: 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 ssh
Linux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04
UTC 2012 i686 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome 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.2
vagrant@lucid32:~$ uname -na
Linux lucid32 2.6.32-38-generic #83-Ubuntu
SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/
Linux
vagrant@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.box
h3@work$ mkdir project
h3@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 -al
drwxr-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, precise64

3rd 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
     # doesn't already exist on the user's 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.04
SW: 자바6, 메이븐2(톰캣)
  소스위치: /service
     포트: 8080
Vagrant로 개발 환경 구성하기



        문제 #1
서버              로컬
              윈도우 2
우분투      !=   맥2
10.04
              우분투 1
                12.04
Vagrant로 개발 환경 구성하기



             문제 #2
     서버              로컬

 자바 1.6.0_24         자바 1.6.0_24
 메이븐 2.2.1           메이븐 2.2.1
                     자바 1.7
설치환경 문서 공유; 버전 제각각 위험
Vagrant로 개발 환경 구성하기



               문제 #3

localhost:8080/spring-mvc-showcase



            Address already in use


                            8080
Vagrant로 개발 환경 구성하기



            문제 #4

( 소프트웨어 다운로드 + 설치 + 설정 ) * 5
Vagrant로 개발 환경 구성하기




“Vagrant 를 사용해보자”
Vagrant로 개발 환경 구성하기




@work$ cd project
@project$ ls
Vagrantfile
@project$ vagrant up
@project$
Vagrant로 개발 환경 구성하기



    문제 #1 해결
서버            로컬
                      Ubuntu VM
             윈도우 2
우분투     ==   맥2       Ubuntu VM
10.04
             우분투 1
                      Ubuntu VM
              12.04
Vagrant로 개발 환경 구성하기




@project$ git clone https://github.com/
SpringSource/spring-mvc-showcase
@project$
@project$ ls
Vagrantfile spring-mvc-showcase
Vagrant로 개발 환경 구성하기

$ vagrant ssh
vagrant@lucid32:~$ sudo apt-get install openjdk-6-jdk
vagrant@lucid32:~$ sudo apt-get install maven2
vagrant@lucid32:~$
vagrant@lucid32:~$ java -version
java 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 -version
Apache Maven 2.2.1 (rdebian-1)
Java version: 1.6.0_24
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: en_US, platform encoding:
ANSI_X3.4-1968
OS name: "linux" version: "2.6.32-38-generic" arch:
"i386" Family: "unix"
Vagrant로 개발 환경 구성하기




$ vagrant package
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$




tebica$ vagrant box add newbox
        http://kthcorp.com/package.box
Vagrant로 개발 환경 구성하기



                  box 공유
curioe$ vagrant package
curioe$




tebica$ vagrant box add newbox
        http://kthcorp.com/package.box
tebica$ vagrant init newbox
tebica$ vagrant up
tebica$
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      VM


spring-mvc-showcase
                      Host
Vagrant로 개발 환경 구성하기



프로젝트는 무사 진행
Vim이 최고!
       싸우자

 SublimeText 2가 대세
             구글 행아웃에서
               싸우자!

에막스 지옥! 진리의 젯브레인!
이클립스 완전구려!
Vagrant로 개발 환경 구성하기



                   포트 포워딩

    config.vm.forward_port 8080, 8088



             $ vagrant reload
Outside(
           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-VM
Vagrant::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
  end
end
분산 환경 구성하기



           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"
  end
end
Vagrant 사용



           일반적인 사용법
1. box 는 사내 웹서버에 업로드
   $ vagrant box add ~

2. 프로젝트 내에 Vagrantfile을 포함
   $ git add Vagrantfile
   $ git commit -m ‘개발 환경 설정’

3. Vagrant 사용
   $ vagrant up
Vagrant 사용



                    facebook/tornado




https://github.com/facebook/tornado/blob/master/maint/vm/ubuntu10.04/Vagrantfile
프로비저닝



      조금 아쉬워요
소프트웨어 버전 업데이트
box는 이미 배포 완료
프로비저닝



             프로비저닝




Image - http://www.scalarium.com/features/automation/
프로비저닝



          프로비저닝

config.vm.provision :{provisioner}



shell
chef
puppet
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_sample


config.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-vagrant

https://speakerdeck.com/u/lewg/p/consistent-local-development-
with-vagrant-and-chef

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
가상 환경에서의 CentOS 6.8 설치
가상 환경에서의 CentOS 6.8 설치가상 환경에서의 CentOS 6.8 설치
가상 환경에서의 CentOS 6.8 설치
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
 
랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 
DevOps with Docker
DevOps with DockerDevOps with Docker
DevOps with Docker
 
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
[D2 COMMUNITY] Open Container Seoul Meetup - Docker security
 
Truly understanding container
Truly understanding containerTruly understanding container
Truly understanding container
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 

Andere mochten auch

E1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciE1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ci
NAVER D2
 
생활코딩 oauth 소개
생활코딩 oauth 소개생활코딩 oauth 소개
생활코딩 oauth 소개
Binseop Ko
 

Andere mochten auch (20)

스타트업3년사용기
스타트업3년사용기스타트업3년사용기
스타트업3년사용기
 
왜 레진코믹스는 구글앱엔진을 선택했나
왜 레진코믹스는 구글앱엔진을 선택했나왜 레진코믹스는 구글앱엔진을 선택했나
왜 레진코믹스는 구글앱엔진을 선택했나
 
Google App Engine의 이해
Google App Engine의 이해Google App Engine의 이해
Google App Engine의 이해
 
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개
 
E1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ciE1_Deview nhn애자일개발 ci
E1_Deview nhn애자일개발 ci
 
Sublime Text tips & trikcs
Sublime Text tips & trikcsSublime Text tips & trikcs
Sublime Text tips & trikcs
 
Naver vs daum - 정구승
Naver vs daum - 정구승Naver vs daum - 정구승
Naver vs daum - 정구승
 
1시 36분
1시 36분1시 36분
1시 36분
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Test and ci
Test and ciTest and ci
Test and ci
 
Continuous Integration & Collaboration
Continuous Integration & CollaborationContinuous Integration & Collaboration
Continuous Integration & Collaboration
 
XE 모듈 개발 - 걸음마부터 날기까지 - 달리기
XE 모듈 개발 - 걸음마부터 날기까지 - 달리기XE 모듈 개발 - 걸음마부터 날기까지 - 달리기
XE 모듈 개발 - 걸음마부터 날기까지 - 달리기
 
스프링 Generic autowired이용해보기
스프링 Generic autowired이용해보기스프링 Generic autowired이용해보기
스프링 Generic autowired이용해보기
 
Go 페이징게시판만들기
Go 페이징게시판만들기Go 페이징게시판만들기
Go 페이징게시판만들기
 
FIrebase를 이용한 호우호우 미니게임 만들기
FIrebase를 이용한 호우호우 미니게임 만들기FIrebase를 이용한 호우호우 미니게임 만들기
FIrebase를 이용한 호우호우 미니게임 만들기
 
생활코딩 oauth 소개
생활코딩 oauth 소개생활코딩 oauth 소개
생활코딩 oauth 소개
 
팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법
 
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
 
구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐구글앱엔진+스프링+스프링datajpa+메이븐
구글앱엔진+스프링+스프링datajpa+메이븐
 
구글 앱 엔진의 활용(Google App Engine) 2부
구글 앱 엔진의 활용(Google App Engine) 2부구글 앱 엔진의 활용(Google App Engine) 2부
구글 앱 엔진의 활용(Google App Engine) 2부
 

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

망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
종인 전
 
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
슬 김
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축
Heo Seungwook
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
Ted Won
 

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

jbug-vagrant
jbug-vagrantjbug-vagrant
jbug-vagrant
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
Virtual Development Environment Setting
Virtual Development Environment SettingVirtual Development Environment Setting
Virtual Development Environment Setting
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324망고100 메뉴얼 환경부터포팅까지-2011-0324
망고100 메뉴얼 환경부터포팅까지-2011-0324
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
K8s in action02
K8s in action02K8s in action02
K8s in action02
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
Udamp3 django apache-my_sql_python3_ubuntu14.04-v11
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
Internship backend
Internship backendInternship backend
Internship backend
 
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
pip, virtualenv, vagrant - Python Korea 2014년 6월 세미나
 
Sharepoint2010을 활용한 개발환경 구축
Sharepoint2010을 활용한 개발환경 구축Sharepoint2010을 활용한 개발환경 구축
Sharepoint2010을 활용한 개발환경 구축
 
MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축MS SharePoint를 활용한 개발환경 구축
MS SharePoint를 활용한 개발환경 구축
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기
 

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

  • 1. 내 컴에선 잘 되던데? Vagrant로 서버와 동일한 개발환경 꾸미기 기술전략팀 | 강소리
  • 5. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정
  • 6. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피
  • 7. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심
  • 8. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석
  • 9. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석 5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성
  • 10. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석 5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성 6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  • 11. 디버깅의 6단계 디버깅의 6단계 1. 에러라고? 그럴 리 없어 ・・・・・・・・・・・・・・・・・・・・・・ 부정 2. 내 컴에선 잘 되던데? ・・・・・・・・・・・・・・・・・・・・・・・・ 회피 3. 그럴리가 없을텐데 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 의심 4. 왜 그렇게 되었지? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 분석 5. 헉... 알았다! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 각성 6. 이게 어떻게 동작했던거지? @.@ ・・・・・・・・・ 반성
  • 12. 왜 내 컴에서만 잘 되는 걸까? 개발 환경 불일치 Image - http://futurist.se/gldt/page/3/
  • 13. 왜 내 컴에서만 잘 되는 걸까? 개발 환경 불일치
  • 14. 왜 내 컴에서만 잘 되는 걸까? 프로젝트마다 다 달라 Image - http://itprojectguide.blogspot.kr/2007/02/project-variation.html
  • 15. 해결책은 있어요 해결책은 있어요 Image - http://www.flickr.com/photos/86979666@N00/7623744678/
  • 17. 해결책은 가상화 로컬에 서버 VM 설치 Image - http://www.flickr.com/photos/catch2205/4361365020/sizes/o/in/photostream/
  • 21. 로컬 가상머신을 손쉽게 빌드하자 로컬 가상머신을 손쉽게 관리하자.
  • 22. 개발과 실서버의 일치를 위해 개발과 실서버의 일치를 위해 로컬 가상머신을 손쉽게 관리하자.
  • 24. Vagrant를 소개합니다. Vagrant 개발과 실서버의 일치를 위해 로컬 가상머신을 손쉽게 관리하자.
  • 25. Vagrant를 소개합니다. Vagrant 가상머신 관리 툴 http://vagrantup.com
  • 26. Vagrant를 소개합니다. Vagrant @mitchellh 오픈소스 MIT 라이센스 Ruby 현재 1.0.5 << 1.0.0 - 2012.03.07 << 0.1.0 - 2010.03.07
  • 28. Vagrant로 로컬에 VM 실행하기 우분투 10.04 Ubun tu VM
  • 29. Vagrant로 로컬에 우분투 VM 실행하기 준비물
  • 30. Vagrant로 로컬에 우분투 VM 실행하기 VirtualBox 설치 http://virtualbox.org
  • 31. Vagrant로 로컬에 우분투 VM 실행하기 Vagrant 설치 http://downloads.vagrantup.com
  • 32. Vagrant로 로컬에 우분투 VM 실행하기 $ vagrant Usage: 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. Vagrant로 로컬에 우분투 VM 실행하기 @work$ vagrant box add ↵ lucid32 ↵ http://files.vagrantup.com/lucid32.box @work$ 내 로컬에서의 별칭 미리 빌드된 우분투 10.04 가상머신 이미지
  • 34. Vagrant로 로컬에 우분투 VM 실행하기 @work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box @work$ mkdir project @work$ cd project @project$
  • 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. 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. Vagrant로 로컬에 우분투 VM 실행하기 @project$ vagrant ssh Linux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/Linux Ubuntu 10.04.4 LTS Welcome 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.2 vagrant@lucid32:~$ uname -na Linux lucid32 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/ Linux vagrant@lucid32:~$
  • 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. Vagrant 기본 지식 @work$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box h3@work$ mkdir project h3@work$ cd project @project$ vagrant init lucid32 @project$ vagrant up 분해 요. 알아도충 명령 만 요
  • 40. Vagrant 기본 지식 @work$ vagrant box add <name> <url> VM 이미지 다운로드 B OX
  • 41. Vagrant 기본 지식 Box 기본 설정을 가진 VM 템플릿 이미지
  • 42. Vagrant 기본 지식 Box 기본 설정을 가진 VM 템플릿 이미지 메모리 파일시스템 네트워크
  • 43. Vagrant 기본 지식 $ vagrant box add lucid32 http://~~ $ cd ~/.vagrant.d/box @$[HOME]/.vagrant.d/box$ ls -al drwxr-xr-x Oct 31 17:07 lucid32 Ubuntu VM Ubunt Ubuntu VM u Ubuntu VM Ubuntu VM Ubuntu VM
  • 44. Vagrant 기본 지식 box 다운로드 공식 http://files.vagrantup.com/[box이름].box - lucid32, lucid64, precise32, precise64 3rd party http://vagrantbox.es
  • 45. Vagrant 기본 지식 @project$ vagrant init <box-name> Vagrant 프로젝트 설정 파일 r antfile V ag
  • 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 # doesn't already exist on the user's 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. Vagrant로 개발 환경 구성하기 미니 개발 상황극
  • 48. Vagrant로 개발 환경 구성하기 개발자 5명 서버: 우분투 10.04 SW: 자바6, 메이븐2(톰캣) 소스위치: /service 포트: 8080
  • 49. Vagrant로 개발 환경 구성하기 문제 #1 서버 로컬 윈도우 2 우분투 != 맥2 10.04 우분투 1 12.04
  • 50. Vagrant로 개발 환경 구성하기 문제 #2 서버 로컬 자바 1.6.0_24 자바 1.6.0_24 메이븐 2.2.1 메이븐 2.2.1 자바 1.7 설치환경 문서 공유; 버전 제각각 위험
  • 51. Vagrant로 개발 환경 구성하기 문제 #3 localhost:8080/spring-mvc-showcase Address already in use 8080
  • 52. Vagrant로 개발 환경 구성하기 문제 #4 ( 소프트웨어 다운로드 + 설치 + 설정 ) * 5
  • 53. Vagrant로 개발 환경 구성하기 “Vagrant 를 사용해보자”
  • 54. Vagrant로 개발 환경 구성하기 @work$ cd project @project$ ls Vagrantfile @project$ vagrant up @project$
  • 55. Vagrant로 개발 환경 구성하기 문제 #1 해결 서버 로컬 Ubuntu VM 윈도우 2 우분투 == 맥2 Ubuntu VM 10.04 우분투 1 Ubuntu VM 12.04
  • 56. Vagrant로 개발 환경 구성하기 @project$ git clone https://github.com/ SpringSource/spring-mvc-showcase @project$ @project$ ls Vagrantfile spring-mvc-showcase
  • 57. Vagrant로 개발 환경 구성하기 $ vagrant ssh vagrant@lucid32:~$ sudo apt-get install openjdk-6-jdk vagrant@lucid32:~$ sudo apt-get install maven2 vagrant@lucid32:~$ vagrant@lucid32:~$ java -version java 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 -version Apache Maven 2.2.1 (rdebian-1) Java version: 1.6.0_24 Java home: /usr/lib/jvm/java-6-openjdk/jre Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux" version: "2.6.32-38-generic" arch: "i386" Family: "unix"
  • 58. Vagrant로 개발 환경 구성하기 $ vagrant package
  • 59. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$
  • 60. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$
  • 61. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$ tebica$ vagrant box add newbox http://kthcorp.com/package.box
  • 62. Vagrant로 개발 환경 구성하기 box 공유 curioe$ vagrant package curioe$ tebica$ vagrant box add newbox http://kthcorp.com/package.box tebica$ vagrant init newbox tebica$ vagrant up tebica$
  • 63. Vagrant로 개발 환경 구성하기 문제 #2, #4 동시 해결 환경이 설치된 box 공유 버전 설정 모두 동일 소프트웨어 다운로드 + 설치 + 설정 1명만
  • 64. Vagrant로 개발 환경 구성하기 미니 개발 상황극 (계속) “VM쓰라고?” “로그인해서 개발해야해?” “내가 쓰는 에디터 쓰고 싶은데!”
  • 65. 거룩한 전쟁 돌발상황 Vim이 최고! 싸우자 SublimeText 2가 대세 구글 행아웃에서 싸우자! 에막스 지옥! 진리의 젯브레인! 이클립스 완전구려!
  • 66. Vagrant로 개발 환경 구성하기 파일 동기화 config.vm.share_folder “v-data”, “/service”, “spring-mvc-showcase” $ vagrant reload
  • 67. Vagrant로 개발 환경 구성하기 파일 동기화 service VM spring-mvc-showcase Host
  • 68. Vagrant로 개발 환경 구성하기 프로젝트는 무사 진행 Vim이 최고! 싸우자 SublimeText 2가 대세 구글 행아웃에서 싸우자! 에막스 지옥! 진리의 젯브레인! 이클립스 완전구려!
  • 69. Vagrant로 개발 환경 구성하기 포트 포워딩 config.vm.forward_port 8080, 8088 $ vagrant reload Outside( Host( VM( :8080( :8088(
  • 70. Vagrant로 개발 환경 구성하기 문제 #3 해결 localhost:8088/spring-mvc-showcase 8088 8080
  • 71. Vagrant로 개발 환경 구성하기 SSH $ vagrant ssh $ ssh vagrant@localhost -p 2222 Outside( Host( VM( :22( :2222(
  • 72. Vagrant로 개발 환경 구성하기 $ git add Vagrantfile $ git commit -m ‘개발 환경 설정’ $ git push
  • 73. Vagrant로 개발 환경 구성하기 서버 OS != 로컬 OS 서버 OS == 로컬 OS 설치 환경 문서로 공유 설치 환경 자체가 공유 소프트웨어 버전 불일치 소프트웨어 버전 전부 일치 개발자마다 개발 환경 구축 설치는 단 한명이! 쓰고 있는 포트 충돌 손쉬운 포트 포워딩
  • 74. Vagrant로 개발 환경 구성하기 $ vagrant destroy
  • 75. Vagrant로 개발 환경 구성하기 “사실은 더 복잡해요”
  • 76. 분산 환경 구성하기 Multi-VM Vagrant::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 end end
  • 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" end end
  • 78. Vagrant 사용 일반적인 사용법 1. box 는 사내 웹서버에 업로드 $ vagrant box add ~ 2. 프로젝트 내에 Vagrantfile을 포함 $ git add Vagrantfile $ git commit -m ‘개발 환경 설정’ 3. Vagrant 사용 $ vagrant up
  • 79. Vagrant 사용 facebook/tornado https://github.com/facebook/tornado/blob/master/maint/vm/ubuntu10.04/Vagrantfile
  • 80. 프로비저닝 조금 아쉬워요 소프트웨어 버전 업데이트 box는 이미 배포 완료
  • 81. 프로비저닝 프로비저닝 Image - http://www.scalarium.com/features/automation/
  • 82. 프로비저닝 프로비저닝 config.vm.provision :{provisioner} shell chef puppet
  • 84. Chef 프로비저닝 Chef Server 프로비저닝 VM
  • 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. Chef 프로비저닝 “Chef 서버 없어도 실망 마세요~”
  • 87. Chef 프로비저닝 Chef Solo 프로비저닝 VM
  • 88. Chef 프로비저닝 Chef Solo 프로비저닝 !"" cookbooks #"" apache2 #"" apt #"" php !"" php_sample config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe "php_sample" end https://github.com/curioe/vagrant_sample
  • 90. Vagrant로 VM을 관리하자 Vagrant 개발과 실서버의 일치를 위해 로컬 가상머신을 손쉽게 관리하자.
  • 93. vagrant up 프로젝트에 새 동료가 참여할 때
  • 95. vagrant up 서버와 동일한 개발 환경을 꾸미기 위해
  • 97. 감사합니다. 개발실 / 기술전략팀 / 강소리 curioe@kthcorp.com @curioe
  • 98. 고마워요, 레퍼런스 레퍼런스 https://speakerdeck.com/mitchellh/develop-and-test-configuration- management-scripts-with-vagrant https://speakerdeck.com/u/lewg/p/consistent-local-development- with-vagrant-and-chef