OpenSource/Vagrant

# Vagrant를 이용하여 가상 머신 환경 구성하기 2 - 실습

skysoo1111 2020. 10. 7. 15:01

 

# Vagrant를 이용하여 가상 머신 환경 구성하기 1 - 기본

 

# Vagrant를 이용하여 가상 머신 환경 구성하기 1 - 기본

Vagrant 란? 단일 워크플로우에서 가상 머신들을 구축하고 관리하기 위한 도구이다. Vagrant 특징 VirtualBox, VMware, AWS 등의 공급자 위에 프로비저닝 되어 서비스를 제공한다. 쉘 스크립트와 같은 업계

skysoo1111.tistory.com

 

개인적으로 Vagrant 의 가장 큰 장점은 단순한 워크플로우와 자동화로 인한 환경 구축에 들어가는 개발 비용의 단축인데, 예시로 아래와 같은 상황을 생각해보자.

 

Ex) VirtualBox에서 서버 3대를 기동한다고 가정해보자. 일반적으로 다음과 같은 수순으로 진행될 것이다.

1. ISO 파일 준비
2. 가상 서버1 새로 만들기
3. CPU, MEMORY 등의 시스템 설정 정보 셋팅
4. 가상 서버2 새로 만들기
5. CPU, MEMORY 등의 시스템 설정 정보 셋팅
6. 가상 서버3 새로 만들기
7. CPU, MEMORY 등의 시스템 설정 정보 셋팅
8. 가상 서버1,2,3 기동
...

여기까지만하는게 아니고 각 서버의 호스트명, 아이피 설정 등 세부 설정을 하기 위해서는 각 서버에 접속하여 하나하나 다 설정을 해줘야한다. 여간 귀찮은 작업이 아니다.(물론 가상 서버1 하나를 만들고 셋팅까지 끝낸 다음 clone을 뜨면 더 빠르겠지만 clone된 서버에서도 기본적인 IP부터 설정은 해줘야한다.)

 

이를 Vagrant로 수행한다면 아래와 같다.

1. Vagrantfile 작성
2. Vagrant 기동

Vagrant file 내에 기동할 서버 목록, 세부 설정 등을 스크립트로 다 작성해놓기 때문에 이렇게 간단한 작업만으로도 필요한 환경 구축을 끝낼 수 있다.

Step 1. VagrantFile 작성

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

# Cluster는 생성할 가상 서버 목록
cluster = {
  "master01" => { :ip => "dhcp", :cpus => 2, :mem => 1024 },
  "master02" => { :ip => "dhcp", :cpus => 2, :mem => 1024 },
  "master03" => { :ip => "dhcp", :cpus => 2, :mem => 1024 },
  "worker01" => { :ip => "dhcp", :cpus => 1, :mem => 1024 },
  "worker02" => { :ip => "dhcp", :cpus => 1, :mem => 1024 },
  "worker03" => { :ip => "dhcp", :cpus => 1, :mem => 1024 }
}

# 가상 서버의 세부 설정
Vagrant.configure("2") do |config|

  cluster.each_with_index do |(hostname, info), index|
  
    config.vm.define hostname do |cfg|
    
      cfg.vm.provider :virtualbox do |vb, override|
      
        # 사용할 가상머신 이미지 파일
        config.vm.box = "dodybayu/centos7docker"
        config.vm.synced_folder '.', '/vagrant', disabled: true
        # override.vm.network :private_network, ip: "#{info[:ip]}"
        override.vm.network "public_network"
        override.vm.hostname = hostname
        vb.name = hostname
        vb.customize ["modifyvm", :id, "--memory", info[:mem], "--cpus", info[:cpus], "--hwvirtex", "on"]
        
      end # end provider
      
    end # end config

  end # end cluster
 
end

 

vagrant의 또 하나의 장점은 vagrant cloud 로부터 미리 작성된 가상 머신 이미지를 쉽게 사용할 수 있다는 것이다.

 

 

마치 Docker hub에서 사용할 컨테이너 이미지를 가져다가 쓰듯이 말이다.

 

Step 2. Vagrant 기동

$ vagrant up

Step 3. Vagrant 기동 확인

$ vagrant ssh-config

Step 4. 가상 머신 접속

$ vagrant ssh "<호스트명>"

 

 

docs.docker.com/engine/reference/commandline/swarm_leave/

 

docker swarm leave

Description Leave the swarm API 1.24+  The client and daemon API must both be at least 1.24 to use this command. Use the docker version command on the client to...

docs.docker.com