Vagrand 간소화된, VM 관리 서비스. Virtual Box와 같은 Hypervisor가 있다고 해도, VM을 생성하는 것 자체가 번거로운 작업. Hypervisor에서 논리적인 가상 하드웨어 머신을 생성하고 가상머신에 OS를 설치하고, 일일이 설정을 해줘야 한다. 이런 반복적인 작업을 조금더 손쉽게 자동화 할 수 없을까? 하는 아이디어에서 시작한 것이 Vagrant. 출처http://mobicon.tistory.com/322 http://wiki.opencloudengine.org/pages/viewpage.action?pageId=2852295 설치 VirtualBox 다운로드 및 설치 Vagrant 다운로드 및 설치 Vagrant 환경 설정프로젝트 디렉토리를 하나 만든다. 또는 기존 Project가 있으면 디렉토리로 이동한다. VirtualBox에 원하는 이미지를 다운로드하여 설치한다. 이미지는 Vagrant에서 패키징한 Box를 다운로드할 수 있는 별도 사이트를 제공한다 Box는 기본설정과 OS가 설치된 VM 템플릿 이미지이다 형식 : vagrant box add [title] [download-url] $ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
$ vagrant init centos64 // 프로젝트를 초기화 한다
가상머신 기동 Vagrant 통해 가상머신 기동하기 VM 들어가기 : 같은 디렉토리면 ssh를 n개까지 open 가능 ssh를 통하여 별도의 VM 으로 들어갈 수가 있는 것이다. 단, vagrant init [title] 된 Vagrantfile 파일이 같은 디렉토리에 있어야 함 $ vagrant up
$ vagrant ssh
$ vagrant halt
$ vagrant box list // 설치된 Box확인
vagrantfile Box가 VM 생성을 위한 기본 템플릿이라면, Vagrant file은 생성될 VM에 대한 세부 설정을 정의 Box Provisioning 예제는 VM이 기동될때 마다 shell 명령어를 수행하도록 한것인데, 명령어말고도 shell스크립트를 수행하게 할 수 도 있고, puppet이나 chef와 같은 configuration management 도구를 이용해서, 제품을 설치 VAGRANTFILE_API_VERSION = "2"
Vagrant . configure ( VAGRANTFILE_API_VERSION ) do | config |
config . vm . box = "precise32"
config . vm . box_url = "http://files.vagrantup.com/precise32.box"
config . vm . provision :shell , :inline => "sudo apt-get install -y apache2"
end
Multi Machine https://docs.vagrantup.com/v2/multi-machine/ config . vm . define "elastic01"
config . vm . define "elastic01"
참고 linux command http://okky.kr/article/265177 // Linux 포트확인
netstat -anp | grep "LISTEN "
netstat -tnlp | grep -v 127.0.0.1 | sed 's/:::/0 /g' | sed 's/[:\/]/ /g' | awk '{print $5"\t"$10}' | sort -ug
// 특정포트의 방화벽해제
sudo iptables -I INPUT 1 -p tcp --dport 9200 -j ACCEPT
service iptables stop
lsof -i -P | grep -i "listen"
참고 config # -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant . configure ( 2 ) do | config |
# dev
config . vm . define :dev do | dev_config |
dev_config . vm . host_name = "dev"
dev_config . vm . network "public_network" , ip: "10.0.0.100"
dev_config . vm . box = "centos64"
dev_config . vm . network "forwarded_port" , guest: 9200 , host: 9200 , auto_correct: true # elastic
end
# elastic01
config . vm . define :elastic01 do | vm01_config |
vm01_config . vm . host_name = "elastic01"
vm01_config . vm . network "public_network" , ip: "10.0.0.101"
vm01_config . vm . box = "centos64"
vm01_config . vm . network "forwarded_port" , guest: 9200 , host: 9200 , auto_correct: true # elastic
end
# elastic02
config . vm . define :elastic02 do | vm02_config |
vm02_config . vm . host_name = "elastic02"
vm02_config . vm . network "public_network" , ip: "10.0.0.102"
vm02_config . vm . box = "centos64"
vm02_config . vm . network "forwarded_port" , guest: 9200 , host: 9200 , auto_correct: true # elastic
end
end
⤧ Next post Github page / Jekyll / GA - 블로그 시작하기 ⤧ Previous post Welcome to Jekyll!