티스토리 뷰

Infra

[IaC] vagrant로 virtualbox의 VM 관리하기

빛의기도 2024. 8. 23. 13:53

 
 

1. [IaC] vagrant로 virtualbox의 VM 관리하기 (tistory.com)
2. [K8S] Kubernetes 설치 (VirtualBox + Vagrant + K8S:v1.31) (tistory.com)
3. [K8S] Kubernetes Nodeport로 서비스 테스트 하기

 


Docker를 알고 나면 설치와 삭제가 너무 간편해서 더 나은 환경은 필요 없다고 생각 될 정도로 만족감이 큽니다.

2024.08.22 - [Infra/Docker] - Docker가 뭐지? 어떻게 쓰는겨?

 

Docker가 뭐지? 어떻게 쓰는겨?

A. 개요1. Docker 가 뭐지?도커(Docker)는 애플리케이션을 컨테이너라는 단위로 패키징하여 배포, 실행, 관리할 수 있게 해주는 오픈 소스 플랫폼이다.컨테이너는 애플리케이션과 그 실행 환경을 함

tack0829.tistory.com

 
Docker 자체를 사용할때도 편하지만, Script를 Docker-compose 로 작성해서 docker compose up 내지는 docker compose down 명령만으로 기동, 중지를 하는게 더 편하죠..
볼륨이나, 이름이나, 사이즈, 이미지 등등 명령으로 만들어서 가지고 있기도 귀찮은데, docker compose 는 yaml로 작성된 스크립트 자체만 가지고 있으면 되니까요.. 
 
docker-compose 에 대한 소개 및 사용법 (tistory.com)

 

docker-compose 에 대한 소개 및 사용법

Docker가 설치/제거 및 사용이 간편하죠. 무엇보다 프로그램을 설치 하고 제거 하면 남는 찌꺼기 및 실행 과정에서 생성되는 쓰레기 파일들이 container 내에서 생성되고, container를 삭제하면 깔끔하

tack0829.tistory.com

 
이런게 IaC(Infrastructure as Code) 의 장점입니다.
Code 로 한번 Infra에 대한 구성을 해 놓으면 언제든 그 구성으로 다시 배포(프로비저닝) 할 수 있으니 잘 만들어놓은 코드가 있다면 재구축은 언제든 명령 한줄로 끝나게 된니까요
보통 클라우드에 인프라를 구축, 운영 하는 번거로움을 겪다 보니 이 IaC 도구들을 찾게 되는 경우가 많습니다.
하지만 On-Premise 환경에서도 VirtualBox와 같은 VM 제품들을 Provider로 하는 IaC 도구가 필요하죠..
Public Cloud만 사용하는건 아니니까...
 
Ansible, Terraform 등과 같이 유명한 도구들도 있지만, 조금 더 쉽고 간단한 vagrant라는 도구도 있습니다.
이 vagrant를 사용해서 virtualbox를 provider로 하는 IaC 코드를 작성해 볼 계획입니다.


A. 실습환경

OS : VirtualBox가 설치 가능한 OS
그리고, Virtualbox 설치가 가능한 사양의 PC. 
 


 

B. 설치

1. virtualbox 설치

virtualbox

 


(1) 설치 요구사항

virtualbox end-user document

 
CPU : x86 Architecture의 Intel 이나 AMD 의 CPU
RAM : 최소 512 이상. 윈도우의 경우 2GB 이상
HDD : 최소 30메가 이상.
           (VM에 Windows를 설치하면... 10GB까지 쉽게 증가할 수 있다고, 좀 넉넉한 Size가 필요 하다네요.)
 
 


(2) 설치 방법

 
우선 virtualbox를 다운 받아 설치 합니다.
다운로드 링크를 아래 공유해 드립니다.
 
다운로드 경로 : https://www.virtualbox.org/wiki/Downloads?source=post_page-----478b8871e474--------------------------------

 

Downloads     – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. VirtualBox 7.0.20 platform packages The binaries are released unde

www.virtualbox.org

 
 

virtualbox 7.0.20 platform packages

설치 과정은 너무 간단해서 생략 하겠습니다.
windows의 경우에는 그저 다운받은 실행파일을 실행 해서 설치 화면을 따라 다음, 다음, 다음 하다 보면 설치가 끝납니다.
기타 OS의 경우는 package manager로 다운받은 package를 설치 해 주시면 됩니다.
 
예를 들어.. ubuntu는...

sudo dpkg -i virtualbox-7.0_7.0.20-163906~Ubuntu~jammy_amd64.deb

 
 
 
설치가 끝나면 이렇게 Virtualbox를 실행할 수 있습니다.

virtualbox 실행화면

아직은 생성된 가상머신이 없는 상태입니다.
 

더보기

설치가 되긴 했는데 뭔가 에러가 발생을 해서 정상적으로 설치가 안되는경우..

다음과 같이 해 보세요.

 

 


 

아마도 패키지 중 일부가 잘못된 것일 수 있습니다.

sudo apt autoremove

sudo apt-get autoclean

sudo apt-get update -y && sudo apt-get upgrade -y

sudo apt --fix-broken install -y

 

이 다음 설치를 다시 해 줍니다.

 

sudo dpkg -i virtualbox-7.0_7.0.20-163906~Ubuntu~jammy_amd64.deb

 


 

설치 이후에 vboxconfig를 실행해서 설정을 다시 해 줍니다.

/sbin/vboxconfig​


이 명령으로 다시 설정을 시도합니다.
만약 에러가 발생 한다면,

cat /var/log/vbox-setup.log​

 

여기서 로그를 확인할 수 있습니다.
아마도 대부분 gcc, make, perl 이 없다고 에러날 가능성이 큽니다.
(물론 부족한 package가 다를 수 있습니다.)

 

sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa -y
sudo apt update -y

sudo apt install g++-12 gcc-12 gcc make perl

/sbin/vboxconfig​


이렇게 한 이후에 다시 해 보시면 될겁니다.

(에러 로그에 따라 약간 다를 수 있습니다.)

 

 

 


2. Vagrant 설치

 

vagrant logo

 
vagrant hashcorp 사에서 만든 IaC 도구입니다.
 
설치 참고 링크 : https://developer.hashicorp.com/vagrant/docs/installation

 

Install Vagrant | Vagrant | HashiCorp Developer

Vagrant is available for most platforms. Install the Vagrant package using standard procedures for your operating system.

developer.hashicorp.com

 

vagrant download page

 
 
 
다운로드 링크 : https://developer.hashicorp.com/vagrant/install

 

Install | Vagrant | HashiCorp Developer

Explore Vagrant product documentation, tutorials, and examples.

developer.hashicorp.com

해당 링크에 설치 방법이 자세히 나와 있습니다..

vagrant download 페이지

 
윈도우를 사용하시는 분들은 자신의 CPU 종류에 맞는 버젼을 받아 설치 하시면 됩니다.
이 역시 설치 자체가 어렵지 않아서 과정은 생략 하겠습니다.
 
설치가 다 되면 다음과 같이 명령 실행이 됩니다.
 

vagrant help command

 


C. Vagrant 초기화

virtualbox에서 실행하는 vm을 vagrant는 box 라는 개념으로 부릅니다. vagrant에서 box를 만들고 실행 해 보겠습니다.
우선 초기화를 하기 위해 init 명령을 실행 합니다.
 

vagrant init

vagrant init

vagrant init 을 하게 되면 Vagrantfile 이 하나 생성 됩니다.
이 파일의 내용은 다음과 같습니다.
 

vagrantfile

 

  • Vagrant.configure("2") do |config| : 현재 이 블럭(Vagrant.configure ~ end) 의 config의 버젼이 2라는 의미입니다.
  • config.vm.box = "base" : 어떤 Box를 사용할지를 지정 합니다. 즉, 사용할 VM Image를 여기에 지정해 주면 됩니다.

 
우리는 간단히 Ubuntu VM 을 하나 올려 보도록 하겠습니다.
다음과 같이 수정 해 줍니다.
 

mv Vagrantfile Vagrantfile.org
cat << EOF > Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
end
EOF

 

modify vagrantfile

 
설정된 Vagrantfile로 상태를 확인해 봅니다.

vagrant status

vagrant status

그러면 default 라는 box가 하나 보입니다.

이렇게 하면 .vagrant 라는 디렉토리가 만들어집니다.

.vagrant directory

 
 


D. Vagrant 실행(VM 생성 및 실행)

default box를 실행해서 VM을 하나 만들어어 보겠습니다.

vagrant up {Box}

 
vagrant up default 와 동작이 같습니다.
추후 vagrant의 box를 여러개 정의 했을때는 실행할 box를 지정해서 사용할 수 있습니다.
 
현재는 1개만 정의 했으므로 생략 가능합니다.

log of vagrant up

Vagrantfile에 정의한 box를 받아와서 기동 하는 로그가 보입니다.
Virtualbox를 보면 정상적으로 VM이 하나 생성 되었습니다.
 

virtualbox에 vm이 생성된 화면

 
 
vagrant box의 상태를 확인 해 봅니다.

vagrant status

 

vagrant status

running 상태는 정상 기동 되고 있는 상태 입니다.

virtualbox에 vm이 실행 중인 화면

virtual box의 VM도 실행 중으로 잘 동작 되고 있습니다.
 
이제 Box에 SSH로 접근 해 봅니다.

vagrant ssh {Box}

vagrant ssh 명령 실행 화면

새로 생성한 VM에 들어 왔습니다.
 
이제 종료하고 삭제 해 봅니다.
 

vagrant destroy 로 vm 삭제 화면
virtualbox에서 vm이 제거된 화면

 
Virtualbox의 VM 도 정상 삭제 된 것을 확인할 수 있습니다.
아직까지 별다른 설정을 하진 않았지만, 앞으로 추가되는 VM들이 많아 질수록 유용하게 사용될겁니다.
 


1. [IaC] vagrant로 virtualbox의 VM 관리하기 (tistory.com)
2. [K8S] Kubernetes 설치 (VirtualBox + Vagrant + K8S:v1.31) (tistory.com)
3. [K8S] Kubernetes Nodeport로 서비스 테스트 하기