상단

Vagrant는 간소화된 가상머신(VM, Virtual Machine) 관리 서비스 이다.

 
 
 

Vagrant 개요


 

Vagrant 용어

  • Box : 기본 설정을 가진 VM Template Image

 
 

Vagrant 설치


 

CentOS6에 VirtualBox 설치

 wget -O /etc/yum.repos.d/virtualbox.repo http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
 yum install VirtualBox-5.2
 virtualbox -help
 

CentOS6에 Vagrant 설치

 
 #--- https://releases.hashicorp.com/vagrant/
 #--- yum -y install vagrant
 rpm -ivh https://releases.hashicorp.com/vagrant/2.1.4/vagrant_2.1.4_x86_64.rpm
 
 vagrant -v 
 vagrant --help
 
 # /root/.vagrant.d/boxes/
 # /root/VirtualBox VMs/
 # /disk/root/.vagrant.d/
 # /disk/root/VirtualBox VMs/
 
 #--- Plugin 설치 
 vagrant plugin install vagrant-disksize
 vagrant plugin install vagrant-vbguest
 vagrant plugin list
 

Windows에 Vagrant 설치

 

Vagrant 다운로드 사이트 Vagrant 64 bits 설치 파일을 다운로드하여 설치 한다.

 

Vagrant 폴더

  • c:/HashiCorp/Vagrant/

 
 
 vagrant -v                                        #--- Vagrant 2.1.5
 
 #--- Plugin 설치 
 vagrant plugin install vagrant-disksize
 vagrant plugin install vagrant-vbguest
 vagrant plugin install vagrant-hostmanager
 vagrant plugin list
 

Vagrantfile 파일


 
 # _*_ mode: ruby _*_
 # vi: set ft=ruby
 scada1 = "/data/scada_disk_1.vdi"
 
 Vagrant.configure("2") do |config|                          #--- Vagrant version : 2
   config.vm.define "scada" do |scada|                       #--- VM 이름 : scada
     scada.vm.box = "centos/7"                               #--- OS : CentOS 7
     # scada.vm.box = "ubuntu/xenial64"                      #--- OS : Ubuntu 18.04.1 LTS
     # scada.disksize.size = '50GB'                          #--- Disk : 50GB
 
     # scada.vm.network "public_network"                     #--- 브릿지 네트워트
     # scada.vm.network "private_network", ip: "192.168.33.101"    #--- Private network (호스트 전용 어댑터)
     # scada.vm.network "private_network", type: "dhcp"
     scada.vm.network "forwarded_port", guest: 7577, host: 7577    #--- Port Forward
     scada.vm.network "forwarded_port", guest: 7578, host: 7578
     scada.vm.network "forwarded_port", guest: 7579, host: 7579
     scada.vm.network "forwarded_port", guest: 7582, host: 7582
     scada.vm.network "forwarded_port", guest: 1883, host: 1883
     scada.vm.network "forwarded_port", guest: 8883, host: 8883
     scada.vm.network "forwarded_port", guest: 3306, host: 3306
     scada.vm.network "forwarded_port", guest: 80, host: 80
     scada.vm.network "forwarded_port", guest: 443, host: 443
     scada.vm.network "forwarded_port", guest: 22, host: 2022
 
     scada.vm.provider "virtualbox" do |vb|
       vb.name = "SCADA"                                     #--- VM 이름
       vb.cpus = "4"                                         #--- Cores  : 4 cores
       vb.memory = "3072"                                    #--- Memory : 3GB
 
       unless File.exist? (scada1)
         #--- variant : Standard, Fixed
         vb.customize ['--filename', scada1, '--variant', 'Standard', '--size', 1024]('createhd',)    
       end
       #--- --storagectl : IDE, SCSI, --port : 1(/dev/sdb), 2, 3, ...
       vb.customize [:id, '--storagectl', 'IDE', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', scada1]('storageattach',)
     end
 
     scada.vm.provision "shell", inline: "echo Hello"        #--- VM 실행시 처음 실행할 명령 
     scada.vm.provision "shell", inline: "" do
        #--- Provision 명령
     end
   end
 end
 

VM 관리


 

CentOS 7 box 생성

 
 mkdir -p /work/vagrant/CentOS7
 cd /work/vagrant/CentOS7
 
 #--- CentOS 7 설치를 위한 Vagrantfile을 생성 한다.
 vi Vagrantfile
    Vagrant.configure("2") do |config|
      config.vm.box = "centos/7"
      config.disksize.size = '50GB'
      config.vm.provider "virtualbox" do |vb|
          vb.name = "CentOS7"
          vb.memory = "4096"
          vb.cpus = "4"
      end
    end
 vagrant box list                                            #--- Vagrant Box 목록 조회
 

Ubuntu 18.04.1 LTS box 생성

 
 mkdir -p /work/vagrant/Ubuntu18
 cd /work/vagrant/Ubuntu18
 
 #--- Ubuntu 18.04.1 LTS 설치를 위한 Vagrantfile을 생성 한다.
 vi Vagrantfile
    Vagrant.configure("2") do |config|
      config.vm.box = "ubuntu/xenial64"
      config.vm.network "forwarded_port", guest: 80, host: 8080
      config.disksize.size = '50GB'
      config.vm.provider "virtualbox" do |vb|
          vb.name = "Ubuntu18"
          vb.memory = "4096"
          vb.cpus = "4"
      end
    end
 vagrant box list                                            #--- Vagrant Box 목록 조회
 

VM 관리 명령

 
 vagrant up                                                  #--- startup
 vagrant reload                                              #--- 변경된 Vagrantfile 적용 (shutdown & startup)
 vagrant halt                                                #--- shutdown
 vagrant destroy -f                                          #--- shutdown & destroy
 
 vagrant status                                              #--- 상태 조회
 vagrant suspend                                             #--- VM 멈춤
 vagrant resume                                              #--- 멈춘 VM 다시 시작
 
 #--- ssh 127.0.0.1:2222, vagrant / vagrant
 #---    port는 vagrant up시 표시되는 메시지에서 확인할 것
 vagrant ssh                                                 #--- VM에 ssh로 접속
 

Snapshot 관리

 vagrant snapshot push                                       #--- 환경 저장
 vagrant ssh                                                 #--- 환경 저장 후 여러가지 작업을 한다.
 vagrant snapshot pop                                        #--- 저장(push)된 환경으로 복구
 
 vagrant snapshot save ${name}                               #--- Snapshot 생성
 vagrant snapshot restore ${name}                            #--- Snapshot으로 복구
 vagrant snapshot list                                       #--- Snapshot 목록 조회
 vagrant snapshot delete ${name}                             #--- Snapshot을 삭제
 

참고문헌


 
 
 

분류: Cloud

최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :