[Vagrant] Vagrantfile 을 이용한 Test VM 생성

VM 을 이용한 테스트를 하다 보면 최소 설치후 패키지 설치 하는 작업등 동일한 설치 작업을 많이 합니다.

Vagrantfile 을 이용하면 손쉽게 vm 을 생성 할수 있습니다.

본 문서에서는 Test VM 생성까지만 소개 합니다. 🙂

1. vagrant 명령어

vagrant list-commands 로 vagrant 명령어를 확인 할수 있습니다.

$ vagrant.exe list-commands
Below is a listing of all available Vagrant commands and a brief
description of what they do.

box             manages boxes: installation, removal, etc.
cap             checks and executes capability
cloud           manages everything related to Vagrant Cloud
destroy         stops and deletes all traces of the vagrant machine
docker-exec     attach to an already-running docker container
docker-logs     outputs the logs from the Docker container
docker-run      run a one-off command in the context of a container
global-status   outputs status Vagrant environments for this user
halt            stops the vagrant machine
help            shows the help for a subcommand
init            initializes a new Vagrant environment by creating a Vagrantfile
list-commands   outputs all available Vagrant subcommands, even non-primary ones
login
package         packages a running vagrant environment into a box
plugin          manages plugins: install, uninstall, update, etc.
port            displays information about guest port mappings
powershell      connects to machine via powershell remoting
provider        show provider for this environment
provision       provisions the vagrant machine
push            deploys code in this environment to a configured destination
rdp             connects to machine via RDP
reload          restarts vagrant machine, loads new Vagrantfile configuration
resume          resume a suspended vagrant machine
rsync           syncs rsync synced folders to remote machine
rsync-auto      syncs rsync synced folders automatically when files change
snapshot        manages snapshots: saving, restoring, etc.
ssh             connects to machine via SSH
ssh-config      outputs OpenSSH valid configuration to connect to the machine
status          outputs status of the vagrant machine
suspend         suspends the machine
up              starts and provisions the vagrant environment
upload          upload to machine via communicator
validate        validates the Vagrantfile
vbguest         plugin: vagrant-vbguest: install VirtualBox Guest Additions to the machine
version         prints current and latest Vagrant version
winrm           executes commands on a machine via WinRM
winrm-config    outputs WinRM configuration to connect to the machine

 

 

1.1 vagrant 기본 명령어

일반적으로 많이 사용 하는 명령어를 소개 합니다.

Vagrant 명령어 설명
vagrant init 디렉토리에 Vagrantfile 을 생성 합니다.
vagrant up Vagrantfile 에서 VM 을 생성 합니다.
vagrant ssh vm 연결시 사용 합니다.
vagrant halt vm 을 정지 합니다.
vagrant destroy 생성된 vm 을 삭제 합니다.
vagrant provision vm 에 프로비저닝 합니다.
box add $배포판 Vagrant box 를 다운로드 합니다.
box list 다운로드된 Vagrant box 를 확인 합니다.

 

2. Vagrantfile 작성 참고사항

외부 접속이 필요 없다면 NAT Network 로만 VM 을 구성 하여도 됩니다.

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"                                           <--- vagrant box 지정 centos / ubuntu 등


network 설정
  config.vm.network "public_network"                                   <--- Bridge Network 사용시 
  config.vm.network "private_network", ip: "192.168.33.10"             <--- NAT Network 사용시


Virtualbox 설정  
   config.vm.provider "virtualbox" do |vb|
   vb.name="CentOS7"                                                    <--- Virtualbox VM name 



프로비저닝 할때는 아래와 같이 vagrant provision 옵션을 사용 합니다. 
sanjuk@testMachine MINGW64 ~/HashiCorp/centos
$ vagrant.exe provision


Provision 설정                                                                   
  config.vm.provision "shell", inline: <<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL
  yum -y update                                                          <---- 설치할 패키지를 지정 
  yum -y install wget
  yum -y install net-tools
  yum -y install bind-utils
  yum -y install epel-release
  wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
  rpm -Uvh remi-release-7.rpm
  SHELL
end

 

 

댓글 남기기