첨부파일 : 

invalid-file


동일한 개발환경을 지닌 가상머신(인스턴스) 의 배포를 손쉽게할 수 있다면, 얼마나 좋을까! 라는 생각을 구현한 멋진 서비스가 아닐까? 서버 리소스를 스케일업하는 클라우드 컴퓨팅 환경에서 인스턴스 관리를 위한 도구로 사용할 수 있지 않을까라는 상상을 잠시 해본다. 사용하려는 서버환경을 구축한 후에 이것을 box로 만들어 확장하는 서버 이미지를 대신하도록 만들어두고, 처음 가동할 때 chef에 의해서 기본적인 추가작업(내가 우분투를 설치하고 로그인하여 처음 실행하는 sudo apt-get update; sudo apt-get upgrade; 도 자동화할 수 있겠지.)이 실행되도록 할 수 있으니, 증설한 서버에 대한 반복적인 작업이 확실히 줄어들 것이다. 스터디가 진행될수록, 개발PC 가상머신을 배포하기 위한 용도보다는 클라우드 컴퓨팅에서 사용할 인스턴스 배포용으로 적합할 것 같다는 생각을 가지게 되었다.


Vagrant

  • 사이트 : http://www.vagrantup.com/
  • 동일한 서버 개발환경 꾸미기
    • 개발과 실서버의 일치를 위해 로컬 가상머신을 손쉽게 관리하자.
    • 로컬 개발서버를 가상머신으로 관리하나? ㅡ_-)? 그러고보니, 전에 몇번 그랬던 적은 있다.
  • 관련 정보
    • 작성자 : @mitchellh
    • 오픈소스 MIT 라이센스
    • Ruby로 작성됨
    • 현재 1.0.5
    • 사용OS : ubuntu 12.04까지 나왔심.
  • Vagrant Command Line Interface
    • package : 지금까지 구성된 인스턴스를 vox로 만들어서 배포
    • halt : shutdown
    • provision :
    • up : start!
  • 실행방법
    1. vagrant box add <config.vm.box name> http://files.vagrantup.com/<box-image>.box
    2. vagrant init <config.vm.box name>
      • 선택적으로 config.vm.box 에 지정되는 value를 지정할 수 있다.
      • <config.vm.box name>을 지정하지 않으면 base로 기본등록된다.
      • 이 명령이 실행된 위치에 Vagrantfile 라는 설정파일이 생성된다.
    3. vagrant up : 실행!!

      Bringing machine ‘default’ up with ‘virtualbox’ provider…
        [default] Setting the name of the VM…
        [default] Clearing any previously set forwarded ports…
        [default] Creating shared folders metadata…
        [default] Clearing any previously set network interfaces…
        [default] Preparing network interfaces based on configuration…
        [default] Forwarding ports…
        [default] – 22 => 2222 (adapter 1)
        [default] Booting VM…
        [default] Waiting for VM to boot. This can take a few minutes.
        [default] VM booted and ready for use!
        [default] Configuring and enabling network interfaces…
        [default] Mounting shared folders…
        [default] – /vagrant
        ihoneymon:vagrant ihoneymon$

      • 실행이 완료된 후 vagrant ssh 를 입력하면 실행된 가상머신에 터미널로 접속가능하다.
      • port forwarding : 22 => 2222
    4. vagrant halt : 가상머신 끄기
  • 기타명령
    • package
      • vagrant package –help
        • VirtualBox에 이미 등록되어 있는 가상머신을 vagrant box로 패키징하여 바이너리 파일로 만들어 배포가능하도록 만든다.
      • vagrant package –base vagrant_1368646716 –output ubuntu-lucid32.box
        • ubuntu-lucid32.box
    • vagrant package 로 box 만들기

      • vagrant package –base vagrant_1368621809 –output ubuntu-lucid32.box

      ihoneymon:temp ihoneymon$ vagrant package –base vagrant_1368621809 –output ubuntu-lucid32.box
        [vagrant_1368621809] Clearing any previously set forwarded ports…
        [vagrant_1368621809] Creating temporary directory for export…
        [vagrant_1368621809] Exporting VM…
        [vagrant_1368621809] Compressing package to: /ihoneymon/temp/ubuntu-lucid32.box
        ihoneymon:temp ihoneymon$ ls
        vagrant_lucid32.box

      package로 생성한 ubuntu-lucid32.box를 test라는 이름으로 추가하고 확인

      • vagrant box add test ./ubuntu-lucid32.box

      ihoneymon:temp ihoneymon$ vagrant box add test ./ubuntu-lucid32.box
        Downloading or copying the box…
        Extracting box…te: 200M/s, Estimated time remaining: –:–:–)
        Successfully added box ‘test’ with provider ‘virtualbox’!
        ihoneymon:temp ihoneymon$ vagrant box list
        lucid32 (virtualbox)
        test    (virtualbox)
        ihoneymon:temp ihoneymon$


Chef

  • vagrant up 실행시 최초실행되는 매크로(간단하게 말하면, 스크립트를 조건에 맞춰서 자동실행하는 것이랄까?
  • 운영체제에 종속적인 편이다.
    • 스터디 중에 능력자가 운영체제를 식별하여 실행환경에 맞는 명령을 수행하는 것이 하지 않을까 하는 이야기를 나누었지만, 그런 수고스러운 삽질을 하는 것을 권장하고 싶지는 않다. 운영체제에 맞춰서 작성하면 간결하고 깔끔하겠다는 개인적인 생각을 했다.
  • Chef Solo Provisioning
    • Chef Server 없이 미리 opscode-cookbooks organization 에서 설정하려고 하는 운영체제에 맞춰서 receipe를 내려받은 후 가상머신 실행 후 추가명령 실행을 지원하는 기능이다. 이걸 잘 설정해두면, 여러 개의 인스턴스를 만들어서 실행할 때, 서버의 업데이트 상태를 최신상태로 갱신하고 사용하는데 필요한 패키지를 설치하도록 만들 수 있다.


참고자료


### 문제발생

vagrant box add "lucid32" http://files.vagrantup.com/lucid32.box

명령으로 lucid32.box를 내려받고 실행할려고 하는 순간 아래의 메시지가 보여지며 실행되지 않는다.

The box 'base' could not be found.

'base' box를 찾을 수 없단다. 내가 추가한 box는 'lucid32'인데?


### 해결책

box를 내려받은 위치에보면 

Vagrantfile

라는 파일이 있다. 이 파일을 열어보자.

파일의 내용 중 

config.vm.box = "base"

로 되어 있는 항목이 보일 것이다.

config.vm.box = "lucid32"

로 변경하자.


box 'base' not fond 문제 처리 후 실행화면


### 설명

vagrant box를 내려받으면서 "lucid32"라는 이름을 부여했는데, vagrant 설정파일Vagrantfile에 기본설정에는 "base"로 되어 있어서 발생한 문제다.



프로그래머로 사는 법

저자
샘 라이트스톤 지음
출판사
한빛미디어 | 2012-10-04 출간
카테고리
컴퓨터/IT
책소개
성공하는 소프트웨어 프로그래머를 위한 경력 관리 비결!『프로그래...
가격비교 글쓴이 평점  

  어제 정기적으로 모이는 스터디가 있었다. 그 스터디에는 다양한 분야, 다양한 회사의 사림들이 모여들었다. 그들은 저마다의 목표를 가지고 늦은 밤, 희의실에 모여 스터디를 시작했다.


  개발자가 자신의 몫을 할 수 있는 위치로 성장하기 위해서는 배워야 하는 것이 많다. 

  학교나 학원에서 프로그래밍에 필요한 것들을 가르쳐줄 수 있다. 개발 환경을 잡고 개발툴을 설치하는 방법을 알려줄 수는 있다. 그러나 어떻게 코딩하고 요구사힝을 어떻게 구현할 지는 순수히 개발자 자신의 능력에 달려있다고 할 수 있다. 처음 프로그래밍을 시작하는 개발자가 능숙하게 알고리듬을 이해하고 문제를 해결할 수 있을리는 없다. 이 프로그래밍 능력은 학습과 경험에 의해 지속적으로 성장할 수 있다. 개인에 따라서 진척도의 차이는 있겠지만, 꾸준히 노력하면 성장되는 것은 분명하다.


  어제 스터디를 하면서 느꼈던 안타까운 점이 하나 있었다.

  발표 내용이, 내가 처음 이 바닥에 들어와 고민했던 내용들이라는 점들이라는 것이다. 왜 안타까웠느냐 하면, 저런 시행착오나 설정에 대해서 잘 알고 있는 사람이 곁에 있었다면 겪지 않았을 시행착오인 것들이라 누군가가 곁에 있었다면, 손쉽게 해결하고 다음단계로 진행힐 수 있는 것인데 그러지 못하고 많은 시간을 지체하면서 손해를 본 것이 안타까웠다. 시간은 그들에게나 회사에게나 소중한데.

  스터디에 참여하려는 노력을 하는 사람들은 그 안에서 다른 사람의 경험을 공유받을 수 있겠지만, 스터디 등의 활동을 하지 않는 사람들은 그런 경험을 공유받을 기회 조차 가지지 못한다.


  아직 우리나라 개발자들은 자신의 경험을 공유하는 것에 인색하거나 낯설어 하는 이들이 많다. 상당한 회사들에서 선임개발자가 후임개발자들에게 많은 것을 전해주고 싶지만, 그 방법을 체계적으로 익히지 못했기에 대부분 주먹구구식으로 전달해줄 수밖에 없다. 이렇게 될 경우 종종 중요한 포인트들을 빠뜨리고 예시들에 대해서만 설명하거나 말로 두리뭉실하게 설명하는 것에 그치게 될 가능성이 높다. 

  

faith
faith by jenny downing 저작자 표시

  이 바닥에 뛰어들었을 때는 모든게 낯설었다. 어떤 일을 하면서 일어나는 것들에 화들짝 놀라는 경우도 있었다. 


  '내가 잘못 건드려서 시스템 전체에 영향을 미치는 경우가 생기면 어쩌지??'

  라는 불안감을 안고서 한동안은 조심히 시스템을 살폈다.  딱히 나에게 어떻게 하라고 가이드 해주는 사람들도 없었다. (방치되고 있었다고나 할까?) 그러다가 주변의 것이 익숙해지기 시작하자 나름의 시도들을 해봤다. 구버전의 이클립스를 최신버전(이때는 헬리오스가 최신버전이었다!)으로 바꾸고 로컬개발환경을 조금더 깔끔하게 만들고, 별도의 버전관리도구(SVN)를 도입하고 새로운 것들을 계속 배우려고 했다. 

  그 때 그런 경험을 가진 사람들이 곁에 있었다면, 시행착오를 줄이고 조금 더 많은 것을 배우고 익혔을텐데 라는 아쉬움이 아직도 남아있다. '이 회사에서는 배울게 없겠다'는 생각이 들면서 그것을 이유로 그 회사를 나오기를 결심했다. 나는 여전히 배움에 목적이 있다. 

  그 회사에 들어갈 때 개발(SI)쪽으로 넣어주길 바란다고 했지만, 회사에서는 나를 유지보수(SM)으로 꽂아넣었다. 회사의 사정과 내 사정이 서로 다르다. 서로 다른 사정에 대해서 이해하고 넘어갈 수도 있겠지만, 그렇지 못할 경우도 있다. 그럴 경우에는 자연스럽게 회사를 떠나게 되는 것이다.

  대부분의 개발자가 처음에 겪는 시행착오는 선배개발자들이 겪은 것들이 대부분이다. 조금만 관심을 기울여주면 그런 시행착오를 겪고 해결하기 위해 들이는 시간과 노력을 줄여줄 수 있고, 빠르게 성장할 수 있는 계기를 만들어줄 수가 있다. 그런데 그렇지 못하는 경우가 너무나 많다.


days of yore
days of yore by brainware3000 저작자 표시

  '나도 겪었으니까 너도 겪어봐!'

  라는 못된 심보를 가지게 되는 것이랄까?

  내가 가진 경험을 다른 사람에게 전달해줄 수 있다면, 다른 사람은 조금 더 빠르게 성장할 수 있다고 생각한다. 나 역시 아직은 이런 경험을 전달하는 것에 익숙치 않은 탓에 많은 부분에서 헛점들이 존재한다. 


  이런 시행착오를 줄여줄 수 있도록 도와줄 수 있는 노력들을 해보려고 한다. 당장은 구체적인 것들을 보여주기는 어렵겠지만, 블로그에 기록들을 남기고 필요하다면 세미나장에서 발표도 하고 공유할 수 있는 흐름을 만들어보고 싶다.

내가 밥벌어먹고 사는 프로그래밍 언어인 '자바'에 대한 내용들을 정리하기 위해 만든 이 블로그.

한동안 잠들어 있었는데, 이제 다시 이 녀석을 활성화하기로 한다.

4~5개월 동안 진행하는 SLiPP 스터디와 관련한 내용은 이 카테고리 내에 기록하겠다.

관련한 내용도...

+ Recent posts