Vagrant 설치 및 설정

11792 단어 Vagrant
실천 Vagrant 읽고 잊지 않도록 메모.
책에서는 버전이 1.0계이지만, 2.0계로 바꾸어 진행하고 있다.

환경



macOS Mojave 10.14.3
Vagrant 2.2.3
VirtualBox 6.0.4

VirtualBox 다운로드 및 설치



Download VirtualBox 에서 다운로드하여 설치하거나 Homebrew에서 다운로드 및 설치할지 여부.
brew cask install virtualbox

Vagrant 다운로드 및 설치



Download Vagrant 에서 다운로드.
다운로드한 dmg 파일을 클릭하여 설치.

Vagrant에서 사용할 기본 이미지 검색



Discover Vagrant Boxes 에서 사용하고 싶은 Box를 검색.


vagrant init 의 커멘드가 기재되어 있으므로, 그 내용을 호스트로 실행.


host $ vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
host $ ls -l
total 8
drwxr-xr-x  3 hoge  staff    96  2 25 00:49 .
drwxr-xr-x  3 hoge  staff    96  2 25 00:48 ..
-rw-r--r--  1 hoge  staff  3015  2 25 00:49 Vagrantfile


자주 사용하는 Vagrant 명령




명령
내용


vagrant init [박스 이름]
[박스 이름]에서 지정한 이미지로 초기 Vagrantfile을 생성합니다.

vagrant up
가상 머신 시작.

vagrant halt
가상 머신 중지.

vagrant ssh
가상 머신에 ssh 연결.

vagrant reload
가상 머신 재부팅. Vagrantfile의 변경 반영에 자주 사용한다.

vagrant destory
가상 머신 폐기.

vagrant status
가상 머신의 상태를 확인합니다.


Vagrantfile


vagrant init로 작성된 Vagrantfile의 내용은 다음과 같다.
※댓글은 할애
Vagrantfile은 Ruby로 작성되었습니다.
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

이 파일에 가상 머신에 대한 설정을 기입하는 것으로 커스터마이즈를 할 수 있다.

네트워크 설정(간단)



비공개 주소 설정



Vagrantfile을 편집합니다.
 # Create a private network, which allows host-only access to the machine  
 # using a specific IP.                                                    
 config.vm.network "private_network", ip: "192.168.33.10"                   

Vagrantfile을 편집하면 vagrant reload 한다.

호스트에서 가상 머신에 액세스할 수 있습니다.
host $ ping 192.168.33.10
PING 192.168.33.10 (192.168.33.10): 56 data bytes
64 bytes from 192.168.33.10: icmp_seq=0 ttl=64 time=0.529 ms
64 bytes from 192.168.33.10: icmp_seq=1 ttl=64 time=0.393 ms
64 bytes from 192.168.33.10: icmp_seq=2 ttl=64 time=0.478 ms
64 bytes from 192.168.33.10: icmp_seq=3 ttl=64 time=0.503 ms
64 bytes from 192.168.33.10: icmp_seq=4 ttl=64 time=0.408 ms
64 bytes from 192.168.33.10: icmp_seq=5 ttl=64 time=0.421 ms
--- 192.168.33.10 ping statistics ---

가상 머신 포트를 호스트로 전달



Vagrantfile을 편집합니다.
 # accessing "localhost:8080" will access port 80 on the guest machine.    
 # NOTE: This will enable public access to the opened port                 
 config.vm.network "forwarded_port", guest: 80, host: 9090                
vagrant reload 가상 시스템에서 웹 서버를 시작하고 액세스합니다.
host $ vagrant ssh
[vagrant@localhost ~]$ sudo python -m SimpleHTTPServer 80
Serving HTTP on 0.0.0.0 port 80 ...

호스트에서 액세스하여 표시되면 성공.



공유 파일 시스템



설정



Vagrantfile로 로컬과 가상 머신에 공유 디렉토리의 셋업을 할 수 있다.
다음의 내용이라면, 로컬 디렉토리 "./test_dir" 와 가상 머신 "/home/vagrant/test_dir_vagrant" 를 공유해, 가상 머신측에 지정한 디렉토리가 없으면 작성해, 소유자, 그룹을 "vagrant" 로 설정한다.
  # Share an additional folder to the guest VM. The first argument is       
  # the path on the host to the actual folder. The second argument is       
  # the path on the guest to mount the folder. And the optional third       
  # argument is a set of non-required options.                              
  config.vm.synced_folder "./test_dir", "/home/vagrant/test_dir_vagrant",  
        create: true, owner: "vagrant", group: "vagrant"                     

자세한 것은 공식 문서를 읽어 주셨으면 한다.
htps //w w.ゔㅁ란츠 p. 이 m/도 cs/synse d-fl에서 rs/바시 c_토끼. HTML
config.vm.synced_folder "host_path", "guest_path", option ...

공유 디렉토리를 설정할 때 발생한 문제


Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 home_vagrant_test_dir_vagrant /home/vagrant/test_dir_vagrant

The error output from the command was:

mount: unknown filesystem type 'vboxsf'

Vagrant plugin을 설치하여 해결할 수 있습니다.

vagrant-vbguest

VirtualBox Guest Additions를 가상 머신에 자동으로 설치하는 Vagrant plugin.
host $ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Fetching: micromachine-2.0.0.gem (100%)
Fetching: vagrant-vbguest-0.17.2.gem (100%)
Installed the plugin 'vagrant-vbguest (0.17.2)'!

host $ vagrant vbguest
(色々動きます)
irtualBox Guest Additions: Starting.
Redirecting to /bin/systemctl start vboxadd.service
Redirecting to /bin/systemctl start vboxadd-service.service
Unmounting Virtualbox Guest Additions ISO from: /mnt

host $ vagrant vbguest --status
[default] GuestAdditions 6.0.4 running --- OK.

상기를 실행한 후, vagrant reload 라고 해결했다.

vagrant plugin update



(2020/9/8기)
오랜만에 Vagrant를 시작하기 전에 최신 버전을 설치했습니다.
설치 후 vagrant init를 실행해도 오류가 발생합니다. 이유는 vagrant-vbguest 도 업데이트가 필요했기 때문에. 다음 명령을 실행하여 해결했습니다.
host $ vagrant plugin update vagrant-vbguest
Updating plugins: vagrant-vbguest. This may take a few minutes...
Fetching micromachine-3.0.0.gem
Fetching vagrant-vbguest-0.24.0.gem
Updated 'vagrant-vbguest' to version '0.24.0'!

참고



Vagrant + VirtualBox로 Windows에 개발 환경을 꾸준히 구축
Vagrant | synced_folder에서 호스트 OS와 게스트 OS의 모든 폴더 동기화

좋은 웹페이지 즐겨찾기