Vagrant๋ ๊ฐ์ ๋จธ์ (VM) ํ๋ก๋น์ ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๋๊ตฌ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ ์๋ 2010๋ Hashicorp์ ์ฐฝ๋ฆฝ์์ธ ๋ฏธ์ฒผ ํ์๋ชจํ ๊ฐ ๊ฐ์ธ์ ์ธ ์ฌ์ด๋ ํ๋ก์ ํธ๋ก ๊ฐ๋ฐํ์ต๋๋ค.
๋ถ์ธ ์ฑ๋ช ํ๊ตญ์ด ์ค๋ ฅ์ด ๋ถ์ ํ์ฌ ์ด ๊ธ์ด ๊ตฌ๊ธ ๋ฒ์ญ๊ธฐ๋ฅผ ์ฃผ๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถ์ ํํ ๋ฌธ๋ฒ๊ณผ ์ดํ๊ฐ ์์์ ์์ต๋๋ค. ์ด ์ ์ํด ๋ถํ๋๋ฆฌ๋ฉฐ, ์ถํ์ ๋ค์ ๊ฒํ ํ์ฌ ์์ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ๊ณต์
์ ๊ณต์๋ Vagrant๊ฐ VM์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐํฌํ๊ณ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ํ ๊ธฐ์ ์ ๋๋ค. ์ง์๋๋ Vagrant ์ ๊ณต์ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์(Box)
Box๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๋ VM์ ์ด๋ฏธ์ง์ ๋๋ค. Vagrant์๋ ๋ฐฐํฌ์ ์ฌ์ฉํ ์ ์๋ ๊ด๋ฆฌ์ ๋๋ ์ปค๋ฎค๋ํฐ๊ฐ ๋ง๋ ๋ค์ํ ์์๊ฐ ๋ค์ด ์๋ ์์ฒด ์ ์ฅ์๊ฐ ์์ต๋๋ค.
์์๋ Hashicorp Portal์ ํตํด ๋ฐ๊ฒฌ/ํ์ํ ์ ์์ต๋๋ค.
๋ช ๊ฒ ์์ ์์๊ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
centos/7generic/gentooubuntu/xenial64hashicorp/precise64archlinux/archlinux
Vagrantfile
Vagrantfile์ Vagrant๊ฐ ๋ฐฐํฌ์ ์ฌ์ฉํ๋ VM์ ๋ํ ๋ชจ๋ ๊ตฌ์ฑ์ ํฌํจํ๋ ํ์ผ์ ๋๋ค. ์ด ํ์ผ์ Ruby ๋ฌธ๋ฒ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
์ด๋ VM์ ์์ฑํ๊ธฐ ์ํ ์ด๋ฏธ์ง๋ก ์ฌ์ฉ๋ centos/7์ ์ง์ ํ๋ ์ต์ํ์ Vagrantfile์
๋๋ค.
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
endvagrant init centos/7๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ณด์๊ฐ ์ดํด๋ณด๊ธฐ์ ์ ์ฉํ CentOS์ฉ Vagrantfile์ ๋ง์ด ์ฃผ์ ์ฒ๋ฆฌํ์ฌ ์ค์บํด๋ฉํฉ๋๋ค. Vagrantfile์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๊ฐ ๋ ์์ต๋๋ค.
Vagrantfile์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ค๋ฉด validate ๋ช
๋ น์ ์คํํฉ๋๋ค.
vagrant validateํ๋ก๋น์ ๋(Provisioner)
ํ๋ก๋น์ ๋๋ VM์ด โโ์์ฑ๋ ํ VM์ ์ค์ ํ๋ ๋๊ตฌ์ ๋๋ค. ํ์ํ ๋๊ตฌ์ ์ํํธ์จ์ด๊ฐ ์ค์น๋์ง ์์ ๋น VM์ ๋ง๋๋ ๊ฒ์ ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ต๋๋ค.
- Ansible
- Puppet
- Chef
- Salt
- Raw scripts (e.g Bash)
์ ธ ์ํฌ๋ฆฝํธ
์ ธ ํ๋ก๋น์ ๋ ๋ธ๋ก์์๋ ์์ฑ/ํธ์ง ์ ์คํ๋๋ ์ธ๋ผ์ธ ์ ธ ๋ช ๋ น์ ์ ๊ณตํ ์ ์์ต๋๋ค.
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provision "shell", inline: <<-SHELL
echo hello from shell!
sudo yum update -y
sudo yum install -y httpd
SHELL
end๋๋, Vagrantfile์์ ์ฐธ์กฐํ ์ ์๋ ๋ณ๋์ ์ ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
#!/bin/bash
echo hello from shell!
sudo yum update -y
sudo yum install -y httpd์ด provision.sh ์คํฌ๋ฆฝํธ๋ ์ด๋ ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.provision "shell", path: "provision.sh"
end์ ธ์ ํ๋ก๋น์ ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์์์ ๋ฐฐ์ฐํ ์ ์์ต๋๋ค.
๋ค์์
Vagrantfile์ ์์ฑํ๊ณ ๊ตฌ์ฑํ ํ vagrant up์ ์คํํ์ฌ VM์ ์์ํฉ๋๋ค. ์ฒ์ ์คํํ ๋๋ VM์ ์์ฑํ๊ณ ์คํํ๊ธฐ ์ ์ ๋จผ์ ๊ณต์ ์ ์ฅ์์์ ์ง์ ๋ ์์(์ด๋ฏธ์ง)๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
VM์ด ์์ฑ๋๊ณ ์คํ๋๋ฉด vagrant ssh๋ฅผ ์คํํ์ฌ VM์ ssh๋ก ์ ์ํฉ๋๋ค. SSH์์ VM์ ์ข
๋ฃํ๋ ค๋ฉด ๋ช
๋ น์ค์ exit๋ฅผ ์
๋ ฅํฉ๋๋ค. VM์ ์ค์งํ๋ ค๋ฉด vagrant halt๋ฅผ ์คํํ์ฌ VM์ ์ฐ์ํ๊ฒ ์ข
๋ฃํฉ๋๋ค.
๊ธฐ๋ณธ ๋ช ๋ น
์ด ์น์ ์ ๊ธฐ๋ณธํ Vagrant CLI ๋ช ๋ น ๋ช ๊ฐ์ง ์๋ผ๋ณด๊ฒ์๋๋ค.
Vagrant ๋ช ๋ น
| ๋ช ๋ น | ์ค๋ช | ์์ |
|---|---|---|
| vagrant init | ์๋ก์ด Vagrantfile๋ฅผ ๋ง๋๋ค | vagrant init centos/7 |
| vagrant up | VM์ ๋ค์ด๋ก๋ ๋ค์์ ์์ํ๋ค | |
| vagrant ssh | SSH๋ฅผ ์ฌ์ฉํ์ฌ VM์ ๋ค์ด๊ฐ๊ธฐ | |
| vagrant ssh-config | OpenSSH ์ ํจ ๊ตฌ์ฑ์ ์ธ์ํฉ๋๋ค | |
| vagrant halt | VM๋ค ๋ค ๋ฉ์ถ๋ค | |
| vagrant suspend | VM๋ค์ ์ผ์ ์ค๋จํ๋ค | |
| vagrant resume | ์ค๋จ๋ VM๋ค์ ๋ค์ ์์ํ๋ค | |
| vagrant reload | VM๋ค ๋ฉ์ถ๊ณ ๋ค์ ์์ํ๋ค | |
| vagrant destroy | ๋ชจ๋ VM์ ์ค์งํ๊ณ ์ ๊ฑฐํ๋ค | |
| vagrant status | ํ์ฌ Vagrant ํ๊ฒฝ์ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ค | |
| vagrant package | ์คํ ์ค์ธ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์์๋ก ํจํค์งํ๋ค | |
| vagrant provision | ์คํ ์ค์ธ VM์ ๋ํด ๊ตฌ์ฑ๋ ๋ชจ๋ ํ๋ก๋น์ ๋๋ฅผ ์คํํฉ๋๋ค. | |
| vagrant plugin install | Vagrant ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ค | vagrant plugin install vagrant-vbguest |
| vagrant plugin list | ์ค์น๋ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ ๋์ดํ๋ค | |
| vagrant plugin uninstall | ์ค์น์ผ ํ๋ฌ๊ทธ์ธ์ ์ ๊ฑฐํ๋ค | vagrant plugin uninstall vagrant-vbguest |
Vagrant ์์ ๋ช ๋ น
| ๋ช ๋ น | ์ค๋ช | ์์ |
|---|---|---|
| vagrant box add | ์์๋ ๋ค์ด๋ก๋ํ๋ค | vagrant box add centos/7 |
| vagrant box list | ๋ค์ด๋ก๋๋ ์์๊ฐ ๋ชจ๋ ๋์ดํ๋ค | |
| vagrant box outdated | ๋ค์ด๋ก๋์ผ ์์๊ฐ ์ค๋๋ ๊ฒ์ด ์๋์ง ํ์ธํฉ๋๋ค | |
| vagrant box update | ์์๊ฐ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค | vagrant box update centos/7 |
| vagrant box repackage | ์ ์ด๋ฆ๊ณผ ๋ฉํ๋ฐ์ดํฐ๋ก ์์๋ฅผ ๋ค์ ํฌ์ฅํฉ๋๋ค. | vagrant box repackage centos/7 --name custom-centos |
| vagrant box prune | ์ค๋๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค | |
| vagrant box remove | ์์๊ฐ ์ญ์ ํ๋ค | vagrant box remove centos/7 |
์ ๊ณต์๋ก์์ VirtualBox
Vagrant์ ์ ๊ณต์๋ก VirtualBox๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ VM์ ๊ฒ์ฌํ๋ ๋ฐ ์ ์ฉํ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ VM์ผ๋ก ๋์ดํ๋ค
vboxmanage list vms- ๋ชจ๋ ์คํ์คVM๋ค ๋์ดํ๋ค
vboxmanage list runningvms