詳細検索

Vagrant를 아주 쉽고 편리하게 사용해 봅시다!

아바타
글쓴이 平形大樹

Vagrant를 아주 쉽고 편리하게 사용해 봅시다!
日本語에서 번역 • 원문 보기

안녕하세요. 이건 개발자의 평면 형태입니다.

소개

이 글에서는 Vagrant를 사용하는 방법을 설명하겠습니다. 이 글은 시리즈의 연속이므로, 아직 읽지 않으셨다면 먼저 다음 글을 읽어보시길 권장합니다. Vagrant, GitHub, Travis, Chef, OpsWorks 등으로 DevOps 시대에 애자일 확장 가능한 개발 환경을 구축하세요

Vagrant란 무엇인가?

Vagrant는 FLOSS의 가상 개발 환경 구축 소프트웨어입니다[1]. 또한 VirtualBox와 같은 가상화 소프트웨어와 Chef, Salt, Puppet과 같은 구성 관리 소프트웨어의 래퍼로 간주될 수 있습니다. Vagrant를 사용하면 구성 정보를 설명하는 구성 파일을 기반으로 가상 환경의 구축 및 구성을 자동으로 수행할 수 있습니다. 처음에는 VirtualBox를 대상으로 했으나, 버전 1.1 이후부터는 VMware 같은 다른 가상화 소프트웨어나 Amazon EC2와 같은 서버 환경도 타겟팅할 수 있게 되었습니다. Vagrant 자체는 Ruby로 작성되었지만, PHP, Python, Java, C#, JavaScript 등 다른 프로그래밍 언어 개발에도 사용할 수 있습니다. 출처: 위키

왜 방랑자인가?

먼저, 현재 문제점에 대해 이야기하겠습니다. 이런 종류의 문제가 있나요?

  • 개발자의 PC OS가 분리되어 있어 환경 구축 절차를 만드는 것이 어렵습니다.
  • 윈도우 생각조차 하고 싶지 않아.
  • 실습 시 환경이 다 달라서 행동도 다르고, 난 그게 싫어.

Vagrant에서는 이런 식으로 할 수 있습니다.

  • 코드가 사용할 가상 머신의 운영 체제, 네트워크 설정, 시스템 자원을 지정하는 것.
  • Chef와 같은 구성 관리 도구를 사용하여 환경을 구축할 수 있습니다.

다음과 같은 혜택이 제공됩니다:

  • 여러 개발자에게 공통 개발 환경을 배포합니다.
  • 가상 머신 설정은 단일 파일로 관리할 수 있어 쉽게 인식할 수 있습니다.
  • Windows, Mac, Linux에서 공통 개발 환경을 제공할 수 있습니다.

vagrant 쓰는 게 번거롭다고 생각하세요? 정말 쉬워요! 아직 안 써보셨다면 일단 설치해 보세요!

설치

버추얼박스

Vagrant는 VirtualBox와 같은 가상화 소프트웨어를 사용해 가상 머신을 실행할 예정입니다. 이번에는 VirtualBox를 사용할 예정입니다.

여기서 다운로드하고 설치하세요.

부랑자

여기서 다운로드하고 설치하세요.

퀵 스타트

운영체제는 Ubuntu 12.04(32비트)가 될 예정입니다.

먼저, 작업 장소 디렉터리를 만드세요.

$ mkdir vagrant_test
$ CD vagrant_test

다음으로, Vagrant용 설정 파일을 만드세요.

$ vim Vagrantfile

'Vagrantfile'에 다음 내용을 붙여넣으세요.

# -*- 모드: 루비 -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/Precise32" 
끝

가상 머신을 시작하세요.

$ 부랑자 업

그게 다예요. 어때요? 정말 쉽죠? 코피 나나요? 참고로 이번에는 우분투를 선택했는데, 다른 운영체제도 지정할 수 있어요. 아래 카탈로그에서 좋아하는 OS를 골라 박스 이름으로 지정해 주세요. 박스 카탈로그

베이그런트의 기본 작전

  • 'vagrant up' 가상 머신 실행
  • 'vagrant ssh' 가상 머신에 SSH 로그인
  • 가상 머신의 'Vagrant provision' 프로비저닝(chef와 같은 구성 관리 도구를 사용할 때 설정 업데이트)
  • 'Vagrant 정지' 가상 머신 종료
  • 'Vagrant suspend' 가상 머신 일시 중단
  • 'vagrant destroy' 가상 머신 삭제

당분간은 이걸 기억하는 데 신경 쓸 필요 없어.

방랑자 파일

vagrantfile에서 상세한 가상 머신 설정을 수행하세요.

IP 주소

IP 주소를 '192.168.50.100'으로 설정하세요.

config.vm.network "private_network", IP: "192.168.50.100" 

가상 머신이 사용하는 CPU의 메모리 양과 코어 수를 설정합니다.

메모리를 '2048MB'로 설정하고 CPU 코어 수를 2로 설정하세요.

config.vm.provider :virtualbox do |vb|
  vb.memory = 2048
  vb.cpus = 2
끝

디렉터리 동기화

호스트 측의 './data' 디렉터리를 게스트 측의 '/srv/website'와 동기화하세요. 이는 'data' 디렉터리가 존재한다는 전제입니다.

config.vm.synced_folder "./data", "/srv/website" 

예를 들어, 웹 애플리케이션을 개발할 경우 문서 경로를 여기서 지정하는 것이 편리합니다.

SSH로 로그인하세요

'vagrant ssh'로 빠르게 로그인할 수 있습니다.

$ 부랑자 쉿
Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)에 오신 것을 환영합니다.

 * 문서: https://help.ubuntu.com/ 
신규 릴리스 '14.04.2 LTS'가 제공됩니다. 
'do-release-upgrade'를 실행하면 업그레이드가 가능합니다. 

Vagrant가 만든 가상 머신에 오신 것을 환영합니다. 
마지막 로그인: 2012년 9월 14일 금요일 06:22:31, 2.2.2 10.0.2에서
vagrant@precise32:~$ 

설정은 필요 없어요. 선명해요.

여러 가지를 만지작거리고, 부수고, 버려도 괜찮아요. 무슨 일이 생기면 처음부터 다시 시작할 수 있어요. 리메이크할 때는 'vagrant destroy'와 'vagrant up'을 사용하세요.

이번에 내가 쓴 방랑자 파일

# -*- 모드: 루비 -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/Precise32" 
  config.vm.network "private_network", IP: "192.168.50.100" 
  config.vm.provider :virtualbox do |vb|
    vb.memory = 2048
    vb.cpus = 2
  끝
  config.vm.synced_folder "./data", "/srv/website" 
끝

vagrantfile을 변경했다면 'vagrant reload'로 다시 시작하세요.

결론

어땠나요? 어려웠나요? 지금은 Vagrant의 힘을 크게 느끼지 못하는 것 같아요. 하지만 다음부터는 몸타처럼 작용할 거예요.

다음에

Chef에서 구성 관리를 어떻게 하는지 이야기하겠습니다.

Related Articles