vagrant 기본 명령어 및 웹서버를 사용하기 위한 설정 방법

2020, Sep 04    

Vagrant

  • Vagrantfiles은 Ruby로 되어 있음 (하지만 간단한 변수할당 정도이므로 Ruby를 몰라도 됨)
  • 포터블 가상화 소프트웨어 개발 환경의 생성 및 유지보수 제품 (간단하게 말하면 Virtual Box, Hyper-V, Docker Container, VM ware, AWS의 생성 및 유지보수를 위한 오픈 소스 제품 중 하나)
  • Vagrant용 이미지들은 Vagrant Cloud에서 접속해서 다운로드 받을 수 있다.
  • Vagrant 다운로드 페이지에서 호스트 머신의 시스템에 따라 Debian Linux, Centos Linux, Windows, Mac OS X 중 하나를 선택해서 설치

기본 명령어

vagrant init [name [url]]

현재 디렉터리룰 Vagrant 환경으로 초기화한다.

 vagrant init centos/7
# "centos/7" 로 바꾸면 centos/7 가상머신을 자동으로 받음
config.vm.box = "base"

vagrant up [name|id]

이 명령은 Vagrant 파일에 따라 가상머신을 생성 및 구성한다

# SSL로 인해 되지 않을 경우 추가한 뒤 다시 vagrant up 한다.
vagrant box add centos/7

vagrant ssh [name|id][– extra_ssh_args]

해당 가상머신으로 ssh 접속을 한다.

(window cmd창이나 putty, poderosa와 같은 별도 클라이언트에서도 가능)

기본적으로 SSH 클라이언트를 사용할 아래의 접속 정보와 같다.

Host : 127.0.0.1
Port : 2222
Username : vagrant
Password : vagrant
Private key : c:/vagrant/.vagrant/machines/default/virtualbox/private_key

vagrant snapshot list

현재 스냅샷 목록을 불려온다

vagrant snapshot save [name]

해당 스냅샷 이름으로 저장한다

vagrant snapshot resotere [name]

해당 스냅샷 이름으로 복구한다

vagrant reload [name|id]

해당 가상머신을 종료하고 다시 실행한다

vagrant halt [name|id]

해당 가상머신을 종료한다

vagrant suspend [name|id]

해당 가상머신을 일시중지 한다

vagrant status [name|id]

현재 가상머신들의 상태를 표시한다

vagrant destroy [name|id]

해당 가상머신을 삭제한다.

웹서버를 사용하기 위한 설정

가상머신의 웹서버에 접속하기 위해서는 Vagrantfile에 몇가지 설정을 추가해야 한다.

먼저 호스트머신으로 접속한 port(8080)를 가상머신의 port(80)로 전달을 해야한다.

config.vm.network "forwarded_port", guest: 80, host: 8080

그리고 가상머신의 아이피주소를 설정을 해주어야 한다.

config.vm.network "private_network", ip: "192.168.33.10"

 

마지막으로 가상머신과 호스트머신과의 실시간 자동으로 동기화되는 폴더를 설정해야 한다. 호스트머신에서 소스파일을 수정하게 되면 바로 가상머신의 소스파일도 변경이 되기때문에 개발작업은 호스트머신에서 실행은 가상머신에서 하는 것이 가능해진다.

  # 가상머신의 80포트를 호스트머신의 8080 포트에 할당함
  config.vm.network "forwarded_port", guest: 80, host: 8080
  #
  # 가상머신의 IP를 아래 설정한 IP주소에 할당함
  config.vm.network "private_network", ip: "192.168.33.10"
  #
  # 가상머신의 폴더와 호스트 머신의 폴더를 공유함(동기화)
  # 별도로 세팅을 하지 않은경우 호스트머신의 vagrant설정이 있는 폴더와 가상머신의 /vagrant 폴더가 동기화 됨
  # config.vm.synced_folder "호스트머신의 경로", "가상머신의 경로"