본문 바로가기
데이터 엔지니어( 실습 정리 )

우분투 22.04 vagrant 배포

by 세용용용용 2024. 4. 30.

1. vagrant 다운로드

https://www.vagrantup.com/downloads.html

 

Install | Vagrant | HashiCorp Developer

Explore Vagrant product documentation, tutorials, and examples.

developer.hashicorp.com

 

Vagrant 플러그인을 설치

vagrant plugin install vagrant-disksize >>> 디스크 사이즈 플러그인
vagrant plugin install vagrant-hostmanager >>> 호스트 매니저 플러그인

 

Vagrant 버전 확인

vagrant --version

 

vagrant box add generic/ubuntu2204 >>> 가상머신 이미지 다운

해당 오류 발생 [ SSL/TLS 인증서 문제로 발생 ]

 

ssl인증서 추가

https://vagrantcloud.com/generic/boxes/ubuntu2204/versions/4.3.12/providers/virtualbox/amd64/vagrant.box

 

certutil -addstore -f "ROOT" "C:\Users\82108\Downloads\27e624ad-5d96-4380-846e-b8ae0a8f4906.cer"

 

 

설치후

vagrant box list 

vagrant plugin list

 

 

2. 가상환경 배포

vagrant file

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|

  # Define kube-control1 virtual machine
  config.vm.define "kube-control1" do |control1|
    control1.vm.box = "generic/ubuntu2204"
    control1.vm.hostname = "kube-control1"
    control1.vm.network "private_network", ip: "192.168.56.10"
    control1.vm.provider "virtualbox" do |vb|
      vb.name = "kube-control1"
      vb.cpus = 2
      vb.memory = 2048
      unless File.exist?("disk00.vdi")
        vb.customize ["createhd", "--filename", "disk00.vdi", "--size", 10240, "--variant", "Fixed"]
      end
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--device", 0, "--type", "hdd", "--medium", "disk00.vdi"]
    end
  end

  # Define kube-node1 virtual machine
  config.vm.define "kube-node1" do |node1|
    node1.vm.box = "generic/ubuntu2204"
    node1.vm.hostname = "kube-node1"
    node1.vm.network "private_network", ip: "192.168.56.11"
    node1.vm.provider "virtualbox" do |vb|
      vb.name = "kube-node1"
      vb.cpus = 1
      vb.memory = 2048
      unless File.exist?("disk01.vdi")
        vb.customize ["createhd", "--filename", "disk01.vdi", "--size", 10240, "--variant", "Fixed"]
      end
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--device", 0, "--type", "hdd", "--medium", "disk01.vdi"]
    end
  end

  # Define kube-data1 virtual machine
  config.vm.define "kube-data1" do |data1|
    data1.vm.box = "generic/ubuntu2204"
    data1.vm.hostname = "kube-data1"
    data1.vm.network "private_network", ip: "192.168.56.12"
    data1.vm.provider "virtualbox" do |vb|
      vb.name = "kube-data1"
      vb.cpus = 1
      vb.memory = 1024
      unless File.exist?("disk02.vdi")
        vb.customize ["createhd", "--filename", "disk02.vdi", "--size", 10240, "--variant", "Fixed"]
      end
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--device", 0, "--type", "hdd", "--medium", "disk02.vdi"]
    end
  end

  # Define kube-data2 virtual machine
  config.vm.define "kube-data2" do |data2|
    data2.vm.box = "generic/ubuntu2204"
    data2.vm.hostname = "kube-data2"
    data2.vm.network "private_network", ip: "192.168.56.13"
    data2.vm.provider "virtualbox" do |vb|
      vb.name = "kube-data2"
      vb.cpus = 1
      vb.memory = 1024
      unless File.exist?("disk03.vdi")
        vb.customize ["createhd", "--filename", "disk03.vdi", "--size", 10240, "--variant", "Fixed"]
      end
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--device", 0, "--type", "hdd", "--medium", "disk03.vdi"]
    end
  end

  # Define kube-data3 virtual machine
  config.vm.define "kube-data3" do |data3|
    data3.vm.box = "generic/ubuntu2204"
    data3.vm.hostname = "kube-data3"
    data3.vm.network "private_network", ip: "192.168.56.14"
    data3.vm.provider "virtualbox" do |vb|
      vb.name = "kube-data3"
      vb.cpus = 1
      vb.memory = 1024
      unless File.exist?("disk04.vdi")
        vb.customize ["createhd", "--filename", "disk04.vdi", "--size", 10240, "--variant", "Fixed"]
      end
      vb.customize ["storageattach", :id, "--storagectl", "SATA Controller", "--port", 1, "--device", 0, "--type", "hdd", "--medium", "disk04.vdi"]
    end
  end

  # Disable hostmanager plugin auto management of /etc/hosts
  config.hostmanager.enabled = false
  config.hostmanager.manage_guest = false

  # Enable SSH Password Authentication and update package sources
  config.vm.provision "shell", inline: <<-SHELL
    sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config
    sed -i 's/archive.ubuntu.com/ftp.daum.net/g' /etc/apt/sources.list
    sed -i 's/security.ubuntu.com/ftp.daum.net/g' /etc/apt/sources.list
    systemctl restart ssh
    systemctl start systemd-timesyncd
    timedatectl set-timezone Asia/Seoul
  SHELL

end

 

 

관련 명령어

vagrant plugin list 확인
vagrant up 가상머신 배포
vagrant status 가상머신 상태확인 
vagrant ssh default -> default 라는 이름의 가상머신에 원격접속
vagrant halt 가상머신 종료 
vagrant destroy : 가상머신 제거

 

 

윈도우 서버 파일 보내기

scp C:\Users\82108\Desktop\6_data_work_240419\* root@192.168.56.10:/data/work/