Cloud-뜬구름잡기

Vagrant VM 이미지 백업 및 복원 방법

무한열정 2024. 5. 24. 14:21

■ 복원 환경

  • Ubuntu 20.04 LTS

■ 백업 방법 정리
You can package your working VM into a new vagrant box

$ vagrant package --output ./new-box-name.box

and then backup this box

After you reinstall your Mackbook, you can then add this box to your local vagrant directory

$ vagrant box add new-box-name ./new-box-name.box

After that you initiate the vagrantfile through

$ vagrant init mynewbox

You will get back the same VM as what you have before

■ 백업 방법 예시

  • 3 Node 백업 예시
    $ vagrant package control-plane1 --output ./control-plane1-vagrant.box
    $ vagrant package worker1 --output ./worker1-vagrant.box
    $ vagrant package worker2 --output ./worker2-vagrant.box
    

■ 파일서버 백업파일로부터 복원 방법 예시
1) 원격지 백업 서버 연결 준비

  • CIFS Utils 설치
    SMB 지원 유틸 추가
    $ sudo apt-get install cifs-utils
    
  • 마운트할 디렉토리 생성
    $ mkdir /mnt/vagrant_data
    
  • SMB 디렉토리 마운트
    $ sudo mount -t cifs "//IP주소/백업디렉토리" /mnt/vagrant_data -o username=유저명,password=비번,sec=ntlm,vers=1.0,iocharset=utf8
    
    2) Vagrant 환경 설치
  • Vagrant 설치
    $ sudo apt install virtualbox virtualbox-qt virtualbox-ext-pack vagrant
    
  • Host Manager 플러그인 설치
    # vagrant-hostmanager is a Vagrant plugin that manages the hosts file on guest machines (and optionally the host). Its goal is to enable resolution of multi-machine environments deployed with a cloud provider where IP addresses are not known in advance.
    $ vagrant plugin install vagrant-hostmanager
    

3) MSA용 Vagrant 워크스페이스 복원

  • 워크스페이스 생성
    $ mkdir ~/msa_vagrant
    $ cd ~/msa_vagrant
    
  • VM박스 파일 및 메타 정보 파일 가져오기
    $ cp {파일서버경로}/*.box .
    $ cp {파일서버경로}/Vagrantfile .
    $ cp {파일서버경로}/_kube.tar .
    $ cp {파일서버경로}/jenkins.tar .
    $ cp {파일서버경로}/egovframe-msa-edu.tar .
    
  • kubectl 설정 메타정보 복원
    $ tar -xvf _kube.tar -C ~
    
  • jenkins 공유디렉토리 파일 복원
    $ tar -xvf jenkins.tar -C ~
    
  • egovframe-msa-edu 소스 복원
    $ tar -xvf egovframe-msa-edu.tar -C ~
    

4) Vagrant 복원 및 구동

  • Restore Vagrant
    $ vagrant box add control-plane1 ~/control-plane1-vagrant.box
    $ vagrant box add worker1 ~/worker1-vagrant.box
    $ vagrant box add worker2 ~/worker2-vagrant.box
    
  • Vagrant box List 확인
    $ vagrant box list
    
  • Vagrant 구동
    Import 환경용 Vagrantfile이 존재해야 한다. (*주의)
    $ vagrant up