< E74BFCD20416E C65C0BB20C0CCBFEBC7D120B0B3B9DF20C8AFB0E620B1B8C3E C6EDC1FD29322E687770>

Similar documents
를 이용한 발 환 Ansible과 Vagrant 개 경구 김 ( 용환 축 #1 이 글은 양이 많은 관계로 다음 주소의 글에 게재된 내용으로 축소되었다. 오타가 많고 정리가 안되었으나, 배경지식을 많이 할애한 관계로 공개

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

<313033C8A35FB0F8C7D05FC6AEB7BBB5E55F E74BFCD5F416E C65C0BB5FC0CCBFEBC7D15FB0B3B9DF5FC8AFB0E65FB1B8C3E05F F E687770>

슬라이드 1

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Install stm32cubemx and st-link utility

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

오픈소스배포툴 (propvision tool) 이며환경설정툴 (configuration management tool) 이고 remote 서버에접근후명령실행툴 (ad hoc task execution) 은 puppet, chef, ansible, salt 가유명하다. 여

슬라이드 1

PowerPoint 프레젠테이션

SBR-100S User Manual

Microsoft Word - src.doc

PowerPoint Template

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Microsoft PowerPoint - 10Àå.ppt

PowerPoint 프레젠테이션

슬라이드 1

OnTuneV3_Manager_Install

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

운영체제실습_명령어

vm-웨어-01장

JDK이클립스

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

01장

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

BEA_WebLogic.hwp

gcloud storage 사용자가이드 1 / 17

4S 1차년도 평가 발표자료

슬라이드 1

opennaru

Windows Server 2012

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Windows Server NTP 설정가이드 Author 이종하 (lovemind.tistory.com) 1

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

untitled

Keil Flexlm 라이선스 설명서

Chapter 1

untitled

슬라이드 1

PowerPoint 프레젠테이션

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

opennaru

Remote UI Guide

<49534F C0CEC1F520BBE7C8C4BDC9BBE720C4C1BCB3C6C320B9D D20BDC3BDBAC5DB20B0EDB5B5C8AD20C1A6BEC8BFE4C3BBBCAD2E687770>

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2003) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2003 Exchange Server 2003 GFI MailEssentials 2010 fo


Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Cloud Friendly System Architecture

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

PowerPoint 프레젠테이션

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

PowerPoint 프레젠테이션

!K_InDesginCS_NFH

문서의 제목 나눔고딕B, 54pt

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

DE1-SoC Board

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

단계

작성자 : 기술지원부 김 삼 수

PCServerMgmt7

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Microsoft Word - Armjtag_문서1.doc

<3836C8A35FB0F8C7D05FC6AEB7BBB5E55F F466C6F77B8A65FC8B0BFEBC7D15FC8BFB0FAC0FBC0CE5FBCD2BDBA5FC7FCBBF35FB0FCB8AE5F F332E687770>

Network seminar.key

슬라이드 1

문서 대제목

ODS-FM1

USB 케이블만을이용한리눅스 NFS 개발환경 (VirtualBox) 최초작성 : 2010 년 10 월 21 일 작성자 : 김정현 수정내용 최초작성 by 김정현 스크립트추가, 설명보충 by 유형목 1. VritualBox

PowerPoint Presentation

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

슬라이드 1

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

Tomcat 4.x 웹서버에 J2SE 를설치를확인합니다. java -version java version "1.4.2_05" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04) Java HotSp

PowerPoint Presentation

슬라이드 1

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

PowerPoint 프레젠테이션

목 차 Ⅰ. 일반사항 1 Ⅱ. 특기사항 3 Ⅲ. 물품내역 및 세부규격 8 Ⅳ. 주의사항

RHEV 2.2 인증서 만료 확인 및 갱신

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

Spotlight on Oracle V10.x 트라이얼프로그램설치가이드 DELL SOFTWARE KOREA

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

Transcription:

Vagrant 와 Ansible 을이용한개발환경구축 Part 1 : Vagrant 의이해 2014.8.12.[ 제 102 호 ] Ⅰ. 가상머신이용배경 Ⅱ. Vagrant 의소개와설치

SW 공학트렌드 동향분석 Webzine Ⅰ. 가상머신이용배경 일반적인서버개발환경은 < 그림 1> 처럼 DB 는 IDC 내의서버를활용하고, 웹서버는로컬환경을이용하는단순한웹서버개발환경을사용하고있었다. 따라서개발자가테스트하는동안테스터는개발버전을테스트할수없고개발서버로배포될때까지기다려야했다. 그림 1_ 일반적인웹서버의개발방식 이방법은두가지이슈가있다. 첫번째, DB 를초기화해다시셋팅하고 DAO 유닛테스트를통해서 CI (Continuous Integration) 를진행하는과정을할수없다. 그이유는 DB 는모든이들이함께쓰는장비이기때문이다. 그래서이부분은진행을할수없다. DB 데이터를모든개발자가공유할수는있지만, 모든테스트를다진행할수없는형태이다. 그림 2_ 가상머신내에웹서버와 Database 를설치한환경 두번째, 테스터는개발되고있는버전이완료되었다는테스트시작을알려주기전까 지는기다려야한다. 애자일개발방법으로진행할때, 2 주단위로구현하고테스트하는 일정이존재하면개발자가개발서버에따로배포해줄때까지기다리는것말고는마땅 01 2014 August (No.102)

공학트렌드 히할수있는방법이없다. 이런불편함을제거하기위해서 < 그림 2> 와같이하나의가상머신으로통일화할수있다. 웹서버와 Database를함께설치하면하나의개발서버를구축할수있고, 이구축된가상머신은개발자와테스터간에공유될수있을것이다. 또한설정을통해서웹서버에접속할포트역시하나의포트로통일시킬수있고, 필요하다면로컬 PC 에서충돌하지않을포트를지정하여서비스할수있다. 이런방법은다음의장점들을제공한다. 첫째, CI 철학에맞게가상머신에서 DB 초기화를진행할수있다. 따라서 DAO 테스트를완벽하게진행할수있다. ( 물론, staging 환경에맞게 production 레벨에서는테스트코드가동작되지못하게진행해야한다.) 둘째, 테스터는가상머신만받을수있으면언제든지테스트를진행할수있다. 테스터가개발자로부터어느버전을테스트할지미리알고있는상태라면, 해당소스의버전을다운로드해테스트를병행으로진행하면서스크럼팀의빠른스피드의개발을진행시킬수있도록도와준다. 셋째, 개발자 - 테스터뿐아니라, 연동이필요한다른개발자에게도움을줄수있다. 즉, 일종의개발환경킷을제공하는효과를가질수있다. < 그림 3> 또는 < 그림 4> 와같이가상머신위에 API 테스트 Layer(API 테스트베드 ) 를두어웹서버의환경을두어 Acceptance Test 환경을만들수있다. 이런사례는 Facebook 이나 Twitter 의개발자센터와같은비슷한모델로구현이가능하다. 넷째, 사무실 IP 에서 IDC 로의연결이방화벽으로막혀있는환경에서유용하다. 전자금융거래법 ( 일명전금법 ) 이적용되거나, 개인정보를가지고테스트해야하는상황에서는 < 그림 1> 과같은방식은더이상개발이불가능해진다. 즉, 로컬개발환경에서 Production 이아닌개발단계라할지라도 IDC 의서버나 DB 에연결하는방식이어려워진다. 보안이더욱대두되는상황이기때문이다. 다섯째, 로컬환경에서소프트웨어테스트를위해새로설치하고삭제하는것이번거로울수있다. 예를들어새로출시된 JDK8 위에서동작하는 WAS 를테스트하기위해서 JDK8 을설치했다가테스트하고다시삭제해야하는경우가있는데, 가상머신을이용해서이런번거로움을해결할수있다. 02

SW 공학트렌드 동향분석 Webzine 그림 3_ 가상머신위에 API Test Layer 를위치한개발환경 Practical 한개발자환경은 < 그림 3> 에서조금더진화한 < 그림 4> 의모습이다. 개발자환경기반위에다양한유틸리티를포함한그림이될것이다. 일반유틸리티부터개발자나테스터를위한소스배포툴, 재시작스크립트, DB 쪽스크립트를포함한그림이될것이다. 그림 4_ 그림 10에서형상관리툴과필요한 Utility 가포함된개발환경 가상머신이존재하는것은간단한작업을하는웹서버를테스트하기위함보다는여러개의웹서버와 DB 또는 Nosql 이존재하는다양한스토리지가존재하는테스트환경을테스트하는경우가더많다. 이를위해서는가상머신내에서는다양한시스템을설치하고테스트할수있는환경을 < 그림 5> 와같이구성할수있을것이다. 03 2014 August (No.102)

공학트렌드 그림 5_ 연동가능한개발환경과 API Test Layer 가포함된가상머신 이렇게만들가상머신은 Vagrant 로테스트환경구현이가능하다. 그리고배포는 shell script, puppet, chef, ansible 과같은자동화툴로가상머신을만들수있는배포기능 을추가할수있다. 유지보수가가능한가상머신을계속만들수있다. Ⅱ. Vagrant 의소개와설치 2.1 Vagrant 소개 Vagrant 는가상머신관리도구이다. 즉, 가상머신플랫폼 (Hypervisor) 이먼저설치되어야하고그가상머신플랫폼을관리하는 CLI 로관리하는도구가 Vagrant 이다. Vagrant 를쓰는이유는자동화가편하다는점때문이다. 즉, virtual box 를실행시키기위한설정과설치, 시작 / 중지 / 종료등이런작업을일일이해야하는작업을 Vagrant 를이용하면 CLI(command line interface) 기반에서할수있다. 즉, < 그림 6> 의예처럼 Mac OS 에서 Windows 7이나 Ubuntu 리눅스를실행시키려면 Oracle VM Virtual Box 에서이미지를다운로드해서이미지의설정을정하고시작 / 중지 / 종료버튼을눌러야한다. 이과정은사람이수동으로작업해야한다. 그러나 Vagrant 는이를 CLI 상에서쉽게해결할수있다. 예를들어시작은 vagrant up, 종료는 vagrant halt 이다. 자세한설명은뒤에서하도록한다. 04

SW 공학트렌드 동향분석 Webzine 그림 6_Oracle VM Virtual Box 화면 Vagrant 는가상서버를구현하는좋은툴로서, 지금까지얘기한모든것이가능하도록지원한다. 우선간단하게소개하자면다음과같다. 라이선스 : MIT License 개발언어 : Ruby 메인개발자 : Mitchell Hashimoto http://mitchellh.com/ 홈페이지 : http://www.vagrantup.com/ 사용할수있는이미지목록 : http://www.vagrantbox.es/ 버전 1.6.3 (2014.7.7 현재 ) 1.0.0 (2012.3.7) 문서 : http://docs.vagrantup.com/v2/ 2.2 Vagrant 설치 Virtualbox download url(https://www.virtualbox.org/wiki/downloads) 에접속해서가장먼저가상머신플랫폼 (Hypervisor) 인 Oracle 의 Virtual Box 를설치한다. Oracle Virtual Box 는 GPL License 이기때문에사용하는데는별다른이슈가없다. 저자는 Mac OS X 사용자이므로 OS X hosts 용을다운로드했다 1). 다음은 Vagrant 설치를진행한다. http://www.vagr antup.com/ 에접속해서하단좌측 Download 버튼을클릭한다. Vagrant download 화면 (http: 1) 본필자는 MAC OS X 를사용하므로 MAC OS X 기준으로설명하도록하겠다. 05 2014 August (No.102)

공학트렌드 //www.vagrantup.com/downloads.html) 에서 Vagrant 를운영체제에맞게설치한다. 설치한이후에는 Vagrant 의버전을확인한다. $ vagrant v Vagrant 1.6.3 2.3 Vagrant 실행 2.3.1 가상머신이미지다운로드및 vagrant init ( 초기화 ) 먼저프로젝트디렉토리를생성하고생성한디렉토리로접근한다. $ mkdir idp testbox $ cd idp testbox Vagrant 이미지를다운로드해서 local 에저장한다. 아래예는 precise(ubuntu 12.04) 64 비트버전을다운로드한예시이다. precise64 는 Vagrant 안에서사용되는이름또는 별칭이다. OS 가설치된가상머신이미지를 box 로생각하면된다. $ vagrant box add precise64 http://files.vagrantup.com/precise64.box 참고로저장된 vagrant 가상머신이미지는 Mac 의경우 ~/.vagrant.d/boxes 디렉토리 에저장된다. ~/.vagrant 디렉토리에는가상머신에대한메타정보가포함되어있다. vagrant init 명령어를사용하여 box 를초기화한다. 그래서 vagrant 메타파일인 Vagrantfile 을생성하도록한다. $ vagrant init $ ls Vagrantfile Vagrantfile 파일을 ansible 로 provision 할수있도록수정한다. 관련없는내용과주석 을제외해서 Vagrantfile 파일을아래와같이수정한다. # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do config config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.hostname = "web" config.vm.network "private_network", ip: "192.168.1.50" config.vm.network :forwarded_port, guest: 9966, host: 8888 config.vm.provision "ansible" do ansible ansible.playbook = "playbook.yml" 06

SW 공학트렌드 동향분석 Webzine config.vm.box 에 precise64 로선택하고 config.vm.box_url 을이미지를다운로드할수있 는 url 로지정했다. 가상머신의 host 이름을 web 이라지칭했다. config.vm.network 프로 퍼티를이용해 private_network ip 를사용하도록했다. 그리고가상서버에서 9966 포트로 띄운서버를 Host 서버에서 8888 포트로포트포워딩방식을사용한다. 예를들어가상 서버에서는 http://192.168.1.50:9966/view 라는주소를가진웹주소를호스트서버에서는 http://127.0.0.1:8888/view 라는주소로접근할수있음을의미한다. config.vm.provision 은가상서버로어떤툴로 provision( 배포 ) 할것인지를지정하는것이 다. config.vm.provision ansible 의의미는 Ansible 을이용해서하겠다는의미를가진다. ansible.playbook = playbook.yml 은 ansible provisioning 메타파일로 playbook.yml 파일을 사용하겠다는의미를가진다. ansible 에서사용하는스크립트를 playbook 이라고하며 yml 파일은 yaml 이라는표준스펙을지킨다. 자세한얘기는다음장에서설명할예정 이다. 예제로 playbook.yml 을다음과같이저장한다. 간단하게설명하면 vagrant 계정으 로 ls -al /home 결과를화면에출력하라는샘플정보이다. hosts: all user: vagrant tasks: name : test action: command ls al /home register: vagrant debug: var=vagrant.stdout_lines 2.3.2 vagrant up 그림 7_ 평상시 Virtual Box 상태 < 그림 7> 과같이평소가상머신의상태는 전원꺼짐 으로되어있다. 사용자가 vagrant up 명령을이용하면 < 그림 8> 과같이가상머신의상태는 실행중 으로바뀐다. 07 2014 August (No.102)

공학트렌드 그림 8_vagrant up 명령이후가상머신의 status 가 실행중 " 으로변경된화면 vagrant up 명령을내린다. $ vagrant up 상황에따라서는 provision 하지않은가상머신시작을하고싶을때는 --no-provision 을명령어뒤에붙여사용한다. provision 되지않은상태임을확인할수있다. $ vagrant up no provision 2.3.3 vagrant susp 가상머신을잠깐중지하려면 vagrant susp 명령을실행한다. < 그림 9> 와같이가상머신의상태가 저장됨 " 으로바뀐다. $ vagrant susp 그림 9_vagrant susp 명령이후가상머신의 status 가 저장됨 " 으로변경 08

SW 공학트렌드 동향분석 Webzine 2.3.4 vagrant resume 중지된가상머신을다시재개하려면 vagrant resume 을실행하면된다. < 그림 8> 과같은 실행중 인화면으로변경된다. $ vagrant resume 2.3.5 vagrant provision 위에서언급했던 playbook.yml 을기반으로 provisioning 을한다. vagrant provioning 명 령을하면다음과같이가상머신서버로들어가 ls -al /home 결과를화면에출력한다. $ vagrant provision ==> default: Running provisioner: ansible... PLAY [all] ******************************************************************** GATHERING FACTS *************************************************************** ok: [default] TASK: [test] ****************************************************************** changed: [default] TASK: [debug var=vagrant.stdout_lines] **************************************** ok: [default] => { "vagrant.stdout_lines": [ "total 12", "drwxr xr x 3 root root 4096 Sep 14 2012.", "drwxr xr x 25 root root 4096 Jun 27 06:00..", "drwxr xr x 7 vagrant vagrant 4096 Jun 30 05:50 vagrant" ] } PLAY RECAP ******************************************************************** default : ok=3 changed=1 unreachable=0 failed=0 만약 provision 을 ansible 이아닌 shell 기반으로수정한다. Vagrantfile 을아래예제의 볼드체로표시한부분 ( 가상머신에서 test.sh 을실행 ) 하는부분으로수정한다. $ cat Vagrantfile # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do config config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" #config.vm.network :public_network config.vm.hostname = "web" config.vm.network "private_network", ip: "192.168.1.50" config.vm.network :forwarded_port, guest: 9966, host: 8888 config.vm.provision :shell, :path => "test.sh" 09 2014 August (No.102)

공학트렌드 test.sh 파일은간단히 /home 디렉토리출력하는것이다. $ cat test.sh #!/bin/sh ls al /home 그결과는 ansible 로이용했던것과결과가같다. shell 결과 ansible 결과를비교해볼 때고급스러운개념이있다는것을확인할수있다. $ vagrant provision ==> default: Running provisioner: shell... default: Running: /var/folders/nx/lkzmd37d6fj3sg9kg5flt3yr0000gp/t/vagrant shell20140710 58428 mkmu26.sh ==> default: stdin: is not a tty ==> default: total 12 ==> default: drwxr xr x 3 root root 4096 Sep 14 2012. ==> default: drwxr xr x 25 root root 4096 Jun 27 06:00.. ==> default: drwxr xr x 7 vagrant vagrant 4096 Jun 30 05:50 vagrant 2.3.6 vagrant status 가상머신 status 정보를보려면 vagrant status 명령을사용한다. 아래와같이영어로 실행중을의미하는 running 이출력되는것을볼수있다. $ vagrant status Current machine states: default running (virtualbox) 2.3.7 vagrant ssh vagrant ssh 를이용하여가상머신서버로접근이가능한지테스트한다. ssh 로가상 서버로접근한다. 위에서 config.vm.hostname 으로지정된호스트명 web 을확인할수있 으며, 기본계정은 vagrant 이다. $ vagrant ssh vagrant@web:~$ ssh 포트가열려있으니 ssh 연결하는방법은당연히존재한다. RSA 알고리즘의 ssh key 인 id_rsa( 개인키 ), id_rsa.pub 키를 $HOME/.ssh 에생성하도록한다. $ ssh keygen t rsa host 의 ssh 키를가상서버에복사한다. vagrant 설정에서지정한 config.vm.network private_network ip 로지정한 ip 를입력한다. $ ssh copy id vagrant@192.168.1.50 이후 ssh 연결시정상적으로접근한것으로나온다. 10

SW 공학트렌드 동향분석 Webzine $ ssh vagrant@192.168.1.50 vagrant@web:~$ 2.3.8 vagrant halt vagrant halt 명령을내려가상머신을종료한다. < 그림 7> 의상태로복귀하게된다. $ vagrant halt 2.3.9 vagrant package vagrant package 를통해서패키징하여다른개발자에게전달할수있다. $ vagrant package $ ls package.box package.box 가상머신을 virtual box 가상머신리스트에서삭제를할수있다. < 그림 10> 과같이 vagrant up 을해서 vagrant-test_default_1401100903183_2186 이란이 름을가진가상머신을실행했다. 그림 10_vagrant up 으로가상머신이 실행중 인화면 2.3.10 vagrant destroy 이때 vagrant destroy 명령을내리면다시한번 destroy 를확인한다. y를입력하고엔터를입력한다. $ vagrant destroy < 그림 11> 과같이 virtual box 가상머신리스트화면을보면 vagrant-test_default_14011 11 2014 August (No.102)

공학트렌드 00903183_2186 이름을가진가상머신은삭제되었다. 그림 11_ 실행중이었던가상머신이삭제된화면 2.3.11 vagrant reload Vagrantfile 수정이후반영을하려면 vagrant reload 명령을실행하면설정파일을읽고반영한다. 가상머신도종료했다가다시실행한다. $ vagrant reload 2.3.12 가상서버이름지정하기 Vagrantfile 에지금까지 name 을주지않았다. 아래와같이 config.vm.box 와 config.vm.box_url 만 지정하면 < 그림 12> 와같이 디렉토리명 _testing_1405275482326_94624 의명을가지게된다. Vagrant.configure(VAGRANTFILE_API_VERSION) do config config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box"... 그림 12_ 이름을따로주지않았을때나오는가상서버디폴트이름 12

SW 공학트렌드 동향분석 Webzine virtual box 의화면에서이름을직접수정하지않고 Vagrantfile 의내용을수정하여이름을변 경할수있다. 아래예제는 < 그림 13> 의디폴트가상서버이름을 web 으로바꾸는예제이다. Vagrant.configure(VAGRANTFILE_API_VERSION) do config config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.provider :virtualbox do vb vb.name = "web".. 그림 13_ 예제실행후가상서버의디폴트이름이 web 으로변경됨 2.3.13 여러가상서버 (Multiple VM) 을통제하기 다른디렉토리를하나생성한후, Vagrantfile 파일을아래와같이수정한다. 가상머 신 2 대를동시에실행 / 종료또는하나만실행이가능하다. $ cat Vagrantfile # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do config config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.provision :shell, :path => "test.sh" config.vm.define :web do web_config web_config.vm.box = "web" web_config.vm.define "foohost" do foohost web_config.vm.hostname = "web" web_config.vm.network "private_network", ip: "192.168.1.50" web_config.vm.provider :virtualbox do vb vb.name = "web" 13 2014 August (No.102)

공학트렌드 config.vm.define :mysql do mysql_config mysql_config.vm.box = "mysql" mysql_config.vm.define "foohost" do foohost mysql_config.vm.hostname = "mysql" mysql_config.vm.network "private_network", ip: "192.168.1.51" mysql_config.vm.provider :virtualbox do vb vb.name = "mysql" config.vm.box_url 으로정의한 "http://files.vagrantup.com/precise64.box" vagrant 이미지 를다운로드해 web 과 mysql 이라는이름으로각각 virtual box 이미지의이름을변경한 다. 가상머신이름 (config.vm.define) 과프로바이더 (config.vm.provider) 의이름을정의할 수있다. 프로바이더 (config.vm.provider) 를잘활용하면 cpu 나 memory 설정을구체적으 로지정할수있다. config.vm.provider "virtualbox" do v v.memory = 1024 v.cpus = 2 vagrant up 명령을실행하면 web 과 mysql 이라는이름의가상서버를아래와같이실행 한다. < 그림 14> 와같이두개의가상머신이실행중인것을확인할수있다. $ vagrant up 그림 14_ 가상머신 2 개를동시에실행시킨이후화면 만약각가상머신별로실행을따로하려면 vagrant up web 또는 vagrant up mysql 을 사용한다. 참고로 json 파일로여러개의가상머신을생성할수있다. 아래블로그글 14

SW 공학트렌드 동향분석 Webzine 을참고하면힌트를얻을수있을것이다. http://programmaticponderings.wordpress.com/2 014/02/27/multi-vm-creation-using-vagrant-and-json/ 지금까지가상머신을활용한배경을이야기했고, vagrant 에대한설치, 소개를모두 마쳤다. Part 2 에서는 Ansible 을활용한방식을상세히살펴보도록하겠다. 참고자료 1. https://docs.vagrantup.com 2. https://www.virtualbox.org 3. http://stackoverflow.com/questions/17845637/vagrant-default-name 15 2014 August (No.102)