Skip to content

Vagrant

Vagrant is free and open-source software for creating and configuring virtual development environments. It can be seen as a wrapper around virtualization software such as VirtualBox, KVM, VMware and around configuration management software such as Chef, Salt or Puppet.

Categories

Install

Windows 의 경우 winget 사용:

winget.exe install Vagrant

출력되는 로그를 보면 결국 홈페이지의 msi 설치파일을 다운받더라

찾음 Vagrant [Hashicorp.Vagrant] 버전 2.4.9
이 응용 프로그램의 라이선스는 그 소유자가 사용자에게 부여했습니다.
Microsoft는 타사 패키지에 대한 책임을 지지 않고 라이선스를 부여하지도 않습니다.
다운로드 중 https://releases.hashicorp.com/vagrant/2.4.9/vagrant_2.4.9_windows_amd64.msi
  ██████████████████████████████   236 MB /  236 MB
설치 관리자 해시를 확인했습니다.
패키지 설치를 시작하는 중...
설치 성공

Ubuntu 의 경우:

wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant

Usage

Vagrantfile 만들기
vagrant init
VM 프로비저닝 (이미 존재한다면 VM 시작)
vagrant up
VM 접속
vagrant ssh, vagrant ssh k8s-control
VM 상태 확인
vagrant status
VM 중지 (정상 종료)
vagrant halt
VM 강제 종료
vagrant halt --force
VM 일시 중지 (상태 저장)
vagrant suspend
VM 삭제
vagrant destroy
VM 상태 확인
vagrant status
모든 VM 상태 확인
vagrant global-status
VM SSH 접속 설정 상태 확인
vagrant ssh-config

다른 계정으로 접속하기

vagrant ssh-config 으로 SSH 접속 상태 확인 하면 아래와 같은 느낌으로 출력된다:

Host default
  HostName 127.0.0.1
  User zer0
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/zer0/Project/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
  PubkeyAcceptedKeyTypes +ssh-rsa
  HostKeyAlgorithms +ssh-rsa

위 내용을 확인한 후 아래와 같은 느낌으로 접속하면 된다:

ssh -i {IdentityFile} -p {Port} {User}@{HostName}

Docker vs Vagrant

Check out this infographic comparing Vagrant and Docker:

Infographic_docker-vs-vagrant-600px.jpg

  • 메인환경에 대한 격리가 필요하고 빠르게 여러 VE 이미지 생성이 필요한 경우 Docker를 추천.
  • 테스트 및 디버깅, 다양한 시나리오를 원할 경우 Docker를 추천.
  • 가상환경 전체를 분리해야할 경우 Vagrant를 추천.

Troubleshooting

An action 'destroy' was attempted on the machine 'default'

An action 'destroy' was attempted on the machine 'default',
but another process is already executing an action on the machine.
Vagrant locks each machine for access by only one process at a time.
Please wait until the other Vagrant process finishes modifying this
machine, then try again.

If you believe this message is in error, please check the process
listing for any "ruby" or "vagrant" processes and kill them. Then
try again.

Vagrant의 lock 문제입니다. 다른 프로세스가 실행 중이거나 이전 프로세스가 비정상 종료되어 lock 파일이 남아있는 경우입니다.

"ruby" 나 "vagrant" 프로세스를 찾아서 종료하자:

PS C:\Users\zer0\Project> Get-Process | Where-Object {$_.ProcessName -like "*vagrant*"}
PS C:\Users\zer0\Project> Get-Process | Where-Object {$_.ProcessName -like "*ruby*"}

이런식으로 출력됐다면:

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    241      20   102424      66480       7.34  11316   2 ruby

아래 같은 느낌으로 종료:

PS C:\Users\zer0\Project> Stop-Process -Name ruby -Force
PS C:\Users\zer0\Project> Stop-Process -Name vagrant -Force

See also

Favorite site

Preview

Guide