Vagrant로 가상머신 구성중 생긴 문제들

sh5·2021년 10월 12일
0
post-thumbnail

참고교재

"컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커"
https://github.com/sysnet4admin/_Book_k8sInfra

위의 교재에서 vagrant로 가상머신 구성중 이 Vagrantfile파일을 vagrant up 도중 생겼던 문제들을 정리했습니다.

요약

1) GuestAddition 버전 문제
아래 3가지중 하나 선택
1. Vagrant 재설치 (또는)
2. GuestAddition 버전 체크 비활성화
config.vbguest.auto_update = false
3. 플러그인 사용
vagrant plugin install vagrant-vbguest --plugin-version 0.21

2) modifyvm 에러
아래 순서대로 진행
1. vagrant destroy -f 로 가상머신 지우기
2. 작업관리자에서 "VirtualBox Headless Frontend" 작업 끝내기
3. VirtualBox VMs 폴더내 가상머신 이름이 있는 폴더 제거(Windows10의 경우 "새폴더"도 제거)
4. 다시 vagrant up


1) GuestAddition 버전 문제

vagrant up 도중에 아래의 3가지 중에 하나라도 로그에 나타난다면 virtual box의 guestaddition에 관한 문제일 확률이 높다.

1. GuestAdditions versions on your host (6.1.26) and guest (5.2.12) do not match.
2. A Virtualbox Guest Additions installation was found but no tools to rebuild or start them.
3. ERROR umount: /mnt: not mounted

저의 경우 주어진 소스에 있는대로 Vagrantfile파일의 폴더공유를 막는 부분을 넣었는데도 문제가 생겼었습니다.

cfg.vm.synced_folder "../data", "/vagrant", disabled: true

저자분이 GuestAddition 사용안할려고 추가했다고 하는데 이런 문제가 생기면 구문이 적용이 안되었거나, 안써서 그럴거라고 합니다(참고). 하지만 저는 분명 넣었기 때문에 적용이 안된거라 생각했습니다.

1-1) Vagrant 재설치

저는 아래의 2개 경우 모두 안되서 Vagrant를 재설치 했더니 해결되었습니다. (5시간동안 고생했는데 결국은 재설치라니....) 그러니 먼저 재설치 해보시고 보험으로 아래의 둘중 한가지를 적용해서 vagrant up 해보시는게 좋습니다. 저는 플러그인 버전을 0.21으로 하는 방법을 추가해서 해결했습니다.

1-2) GuestAddition version 확인 비활성화

해당 문제는 GuestAddition 버전과 virtualbox의 버전을 비교해서 업데이트 할려고 나타나는 경우일 수 도 있습니다. 그래서 아예 자동 업데이트를 안하도록 비활성화 하면 될 수 있습니다.
Vagrantfile에 다음의 내용을 추가합니다.(참고)

config.vbguest.auto_update = false

1-3) plugin으로 적절한 GuestAddition 버전 설치하기

제가 GuestAddition을 설치한 단계는 vagrant up으로 새로 가상머신을 생성하는 도중에 함께 진행했습니다. 기존에 생성된 가상머신의 GuestAddition을 업데이트한게 아닙니다.

그래서 GuestAddition을 설치해야 할것 같아 찾아보니 vagrant-vbguest라는 플러그인이 있다고 합니다. 해당 플러그인을 이용하면 자동으로 적절한 GuestAddition 버전을 찾아서 맞춰준다고 합니다. 하지만 그냥 설치하면 안되고 0.21버전으로 설치해야 문제가 없습니다. 2019년부터 계속 제기된 문제 같은데 2021.10 기준으로 0.30버전이 기본설치 되는데도 같은 문제가 발생 했었습니다. 그러므로 다음과 같이 입력해서 특정 버전을 설치하는게 좋습니다.(참고1 참고2)

vagrant plugin install vagrant-vbguest --plugin-version 0.21

플러그인을 설치하고 vagrant up으로 가상머신 생성도중 꼭 같은 내용은 아니더라도 아래처럼 버전 확인하고 갱신할려는 듯한 로그가 나오면 성공적으로 플러그인이 작동하는 것 같습니다.

Installing Virtualbox Guest Additions 6.1.26 - guest version is 5.2.12
Verifying archive integrity... All good.
Uncompressing VirtualBox 6.1.26 Guest Additions for Linux........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel 

가상머신을 실행 후 ls /opt를 실행하면 설치된 버전을 확인할 수 있습니다.


2) modifyvm 에러

아래는 제게 생겼던 에러로그 입니다.

==> m-k8s: Running 'pre-boot' VM customizations...
A customization command failed:

["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]

The following error was experienced:

#<Vagrant::Errors::VBoxManageError: There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["modifyvm", "3831abfc-acd6-4105-8d6a-b2eec322d108", "--groups", "/k8s-SM(github_SysNet4Admin)"]

Stderr: VBoxManage.exe: error: Could not rename the directory 'C:\Users\home\VirtualBox VMs\새 그룹\m-k8s(github_SysNet4Admin)' to 'C:\Users\home\VirtualBox VMs\k8s-SM(github_SysNet4Admin)\m-k8s(github_SysNet4Admin)' to save the settings file (VERR_ALREADY_EXISTS)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component SessionMachine, interface IMachine, callee IUnknown
VBoxManage.exe: error: Context: "SaveSettings()" at line 3265 of file VBoxManageModifyVM.cpp
>

Please fix this customization and try again.

vagrant로 생성된 가상머신을 삭제후 다시vagrant up 도중 modifyvm부분에서 문제가 생긴다고 나올 때가 있었습니다. 이는 virtualbox에 해당 생성할 폴더가 이미 존재해서 못하는 경우일 수 있습니다. 그래서 C:\Users\유저이름\VirtualBox VMs 경로에서 생성할려던 가상머신의 폴더를 없애야 합니다. 그리고 아마 한국어로 Windos10을 사용중이면 "새폴더"라는 폴더도 이 경로에 있을겁니다. 해당 폴더를 포함해서 총 2개의 폴더를 제거 하고 다시 vagrant up을 하면 해결 됩니다.

하지만 원래 생성할려던 폴더내 로그파일들이(VBox.log) "VirtualBox Headless Frontend"가 사용중이라 못지운다고 나옵니다. 그럼 작업 관리자를 열고 해당 프로세스를 "작업 끝내기"하시면 다시 지울 수 있습니다.

정리
1. vagrant destroy -f 로 가상머신 지우기
2. 작업관리자에서 "VirtualBox Headless Frontend" 작업 끝내기
3. VirtualBox VMs 폴더내 가상머신 이름이 있는 폴더 제거(Windows10의 경우 "새폴더"도 제거)
4. 다시 vagrant up

0개의 댓글