hello

Vagrant 소개 및 사용법

Vagrant는 개발 환경을 코드로 관리할 수 있도록 도와주는 오픈 소스 도구

📌 Vagrant란 무엇인가요?

Vagrant는 개발 환경을 코드로 관리할 수 있도록 도와주는 오픈 소스 도구입니다. 주로 가상 머신(VM)을 쉽게 생성하고 관리할 수 있게 해주며, 개발 환경의 표준화에 매우 유용합니다.

Vagrant는 다음과 같은 상황에서 활용됩니다:

  • 팀원 간 동일한 개발 환경 구성
  • 테스트용 임시 서버 실행
  • 로컬에서의 인프라 테스트 자동화
⚙️ 기본적으로 Vagrant는 VirtualBox와 함께 사용되며, Docker, VMware 등도 백엔드로 사용할 수 있습니다.

🔗 관련 링크


👨‍💻 누가 만들었나요?

Vagrant는 2010년, 당시 대학생이었던 Mitchell Hashimoto에 의해 처음 개발되었습니다.

  • Mitchell Hashimoto는 나중에 HashiCorp라는 회사를 공동 창업하게 됩니다.
  • HashiCorp는 Vagrant 외에도 Terraform, Consul, Vault, Packer 등 DevOps 분야의 강력한 도구들을 개발한 회사입니다.
🎓 참고: Hashimoto는 개인 프로젝트로 Vagrant를 개발했으며, 커뮤니티의 큰 반응을 얻은 이후 이를 기반으로 HashiCorp를 설립했습니다.

📜 라이선스는 어떤가요?

Vagrant는 MIT 라이선스로 배포됩니다.

✅ MIT 라이선스란?

  • 누구나 자유롭게 소스 코드를 복사, 수정, 배포할 수 있습니다.
  • 상업적 사용도 가능합니다.
  • 단, **원 저작자에 대한 표시(MIT license notice)**는 유지해야 합니다.
✔️ MIT 라이선스는 오픈소스 라이선스 중에서도 가장 관대한 형태입니다.

🧱 Vagrant의 주요 특징

기능 설명
환경 구성 자동화 Vagrantfile을 통해 VM 설정을 코드로 관리
다양한 Provider 지원 VirtualBox, Docker, Hyper-V 등 다양한 백엔드 지원
플랫폼 간 호환성 Windows, macOS, Linux에서 모두 사용 가능
프로비저닝 지원 Shell script, Ansible, Chef 등을 통한 환경 설정 자동화

💻 설치 방법 (2024년 기준 최신)

1. Vagrant 설치

아래 링크에서 본인의 운영체제에 맞는 Vagrant를 다운로드하여 설치합니다:

🔗 https://www.vagrantup.com/downloads

2. VirtualBox 설치 (기본 Provider)

VirtualBox가 없다면 함께 설치해주세요:

🔗 https://www.virtualbox.org/wiki/Downloads


📂 Vagrant 기본 사용법

1. 프로젝트 폴더 생성

mkdir my-vagrant && cd my-vagrant

2. Vagrantfile 초기화

vagrant init ubuntu/xenial64
  • 초기화 시 Vagrantfile이 생성됩니다.

3. Vagrantfile 예시

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/bionic64"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end
end
위 설정은 Ubuntu VM을 생성하고, 포트 80을 로컬 포트 8080으로 포워딩하며, 메모리 1GB로 설정합니다.

4. 가상 머신 실행

vagrant up
VM이 다운로드되고 자동으로 부팅됩니다.

5. SSH 접속

vagrant ssh
생성된 VM에 직접 접속할 수 있습니다.

6. 가상 머신 중지

vagrant halt

7. 가상 머신 삭제

vagrant destroy

📦 Vagrant Box란?

Vagrant에서 사용하는 운영 체제 이미지를 Box라고 합니다. Box는 다음 명령어로 검색하거나 추가할 수 있습니다.

Box 검색

vagrant cloud search ubuntu

Box 추가

vagrant box add ubuntu/xenial64

🛠️ 프로비저닝 예시 (Shell Script 사용)

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt update
    sudo apt install -y nginx
  SHELL
end
위 설정은 VM 생성 시 자동으로 Nginx를 설치합니다.

📁 관련 명령어 요약

명령어 설명
vagrant init Vagrantfile 생성
vagrant up 가상 머신 실행
vagrant ssh SSH 접속
vagrant halt 가상 머신 중지
vagrant destroy 가상 머신 삭제
vagrant status 현재 상태 확인
vagrant box list 설치된 Box 목록 확인