Vagrant 1.기본 설정 & 기본 명령어
Vagrant란?
- configure, reproducible, portable work
- VirtualBox, VMware, AWS 같은 Vitual machine 이용
- Shell Script, Puppet, Chef 같은 자동화 설치툴 사용
설치
- brew-cask 로 설치
- brew cask install virtualbox vagrant
vagrant init : Vagrantfile 을 만든다.
Box
- virtual machine 의 Base Image 이다. 여러 프로젝트에서 box 를 공유해서 사용할수 있다.
- hashicorp/precise32, chef/ubuntu-14.04 등등
- Box list
- Box 추가 : vagrant box add
- vagrant box add hashicorp/precise32 : hashicopr/precise32 관련 box 를 다운받는다.
- Vagrantfile 을 만들어 놓았으면 box add 하지 않아도 나중에 up 하면 자동 설치
1
2
3
4
5
# Vagrant API 버젼 2
Vagrant.configure("2") do |config|
# box 지정
config.vm.box = "hashicorp/precise32"
end
UP AND SSH
vagrant up
- 현재 Vagrantfile 환경을 부팅한다.
vagrant ssh
- /vagrant 폴더와 Vagrantfile 이있는 폴더가 sync 가 된다. 파일을 삭제하면 Host 에서도 적용이된다.
vagrant destroy
- up 에 적용됬던 내용들을 모두 지운다. box 를 지우는건 아니다.
Synced Folders
- 터미널을 통해 소스를 수정하는건 매우 귀찮은일 따라서 Vagrant 는 Host 컴퓨터와 폴더를 공유한다.
- 기본적으로 호스트의 Vagrantfile 이 있는 폴더와 vagrant 의 /vagrant 폴더를 공유한다.
Provision
- 게스트 머신을 반복적으로 생성하고 사용하기 위해 프로비져닝으로 만들어서 사용한다. 내부적으로 지원하는 자동 프로비져닝을 통해 자동적으로 소프트웨어를(nginx mysql 등등) 을 설치한다.
1
2
3
4
5
6
7
8
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi
1
2
3
4
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise32"
config.vm.provision :shell, path: "bootstrap.sh"
end
- bootstrap.sh 스크립트를 만들어주고 Vagrantfile 에서 provision 으로 shell 을 지저앟고 bootstrap.sh 를 설치하게 해준다.
- provision 은 vagrant up 을 실행할때 만들어 지므로 이미 실행중일때는 vagrant reload –provision 으로 reload 해준다.
Networking
- Port Forwarding : Guest machine 에 포트와 Host macine 의 포트를 연결해준다.
1
2
3
4
5
6
7
8
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise32"
config.vm.provision :shell, path: "bootstrap.sh"
# 호스트의 4567 를 게스트 80으로 연결
# 브라우져에서 127.0.0.1:4567 연결하면
# 호스트의 apache 80번 포트로 연결된다.
config.vm.network :forwarded_port, host: 4567, guest: 80
end
Share
- 내가 만든 Vagrantfile 을 공유한다.
vagrant login vagrant share
Teardown
vagrant suspend
- 현재 실행 상태를 저장하고 종료한다. 다시 vagrant up 하면 10초면 다시 실행 시킬수있다. 디스크와 램을 사용하고 있는 상태로 종료된다.
vagrant halting
- 컴퓨터를 종료하는것과 같다. 디스크에는 남겨두고 램에서는 삭제한다. vagrant up 하면 다시 램에 올리고 실행한다.
vagrant destroy
- 완전히 디스크에서 지워버린다. vagrant up 하면 다시 설치해서 실행하므로 오래걸린다.
Providers
vagrant up –provider=vmware_fusion vagrant up –provider=aws
- provider 는 기본으로는 virutalbox 지만 바꿀수도 있다.
CLI
- vagrant box
- vagrant box add <address> : 박스 추가
- vagrant box list : 설치된 박스 리스트
- vagrant box outdated : 최신 업데이트 된 박스들 보여주기
- vagrant remove <address> : 박스 삭제
- vagrant repackage :
- vagrant update :
- vagrant destroy : 완전히 디스크에서 삭제
- vagrant global-status : 현재 켜져 있는 Vagrant environments 를 보여준다. vagrant halt 등으로 꺼줘야 한다.
- vagrant halt : vagrant 꺼준다
- vagrant package : 현재 실행중인 Virtualbox 를 재사용 가능한 box로 만든다.
- vagrant plugin
- vagrant plugin install
- vagrant plugin license
- vagrant plugin list
- vagrant plugin uninstall
- vagrant plugin update
- vagrant ssh : ssh 접속
- vagrant status