Vagrant 간단한 소개
단일 워크플로에서 가상 머신 환경을 구축하고 관리하기 위한 도구입니다.
현재는 HashiCorp에서 관리하고 있으며, 포터블한 가상화 개발 환경 관리 도구입니다.
VirutalBox, VMWare, Docker 등과 연동하여 인스턴스를 관리할 수 있습니다.
본 문서에서는 Oracle VM VirtualBox를 사용합니다.
Vagrant를 이용하여 2개의 CentOS 7 인스턴스를 구성해봅니다.
# Vagrant 설치
brew install --cask vagrant vagrant-manager
# VirtualBox 설치
brew install --cask virtualbox
Homebrew를 이용하여 Vagrant와 VirtualBox를 설치합니다.
각 사이트에서 바이너리 파일을 다운 받아 설치할 수도 있습니다.
취향에 따라 구성하세요.
Vagrant에서 프로젝트를 관리하기 위해 사용할 디렉토리를 만든 후에, 디렉토리 하위에 Configuration File을 구성합니다.
init 명령어를 이용하면 디렉토리 하위에 Vagrantfile이 생성됩니다.
Vagrant에서 제공하는 다양한 OS 이미지는 Vagrant Cloud 확인할 수 있습니다.
mkdir ~/vagrant
cd ~/vagrant
vagrant init centos/7
생성할 인스턴스의 설정을 입력합니다.
2개의 CentOS 7을 아래의 스펙과 Hostname으로 구성합니다.
vi ~/vagrant/Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.box_check_update = true
# Create the cent01
config.vm.define "cent01" do |cent01|
cent01.vm.hostname = "cent01"
cent01.vm.network "private_network", ip:"192.168.2.11"
cent01.vm.provider "virtualbox" do |v|
v.name = "cent01"
v.memory = 512
v.cpus = 1
v.linked_clone = true
v.gui = false
end
end
# Create the cent02
config.vm.define "cent02" do |cent02|
cent02.vm.hostname = "cent02"
cent02.vm.network "private_network", ip:"192.168.2.12"
cent02.vm.provider "virtualbox" do |v|
v.name = "cent02"
v.memory = 512
v.cpus = 1
v.linked_clone = true
v.gui = false
end
end
생성한 vagrant 프로젝트 디렉토리에서 명령어를 입력하여 인스턴스를 켜보도록 합니다.
vagrant up
Bringing machine 'cent01' up with 'virtualbox' provider...
Bringing machine 'cent02' up with 'virtualbox' provider...
==> cent01: Checking if box 'centos/7' version '2004.01' is up to date...
==> cent01: Clearing any previously set forwarded ports...
==> cent01: Clearing any previously set network interfaces...
==> cent01: Preparing network interfaces based on configuration...
cent01: Adapter 1: nat
cent01: Adapter 2: hostonly
==> cent01: Forwarding ports...
cent01: 22 (guest) => 2222 (host) (adapter 1)
==> cent01: Running 'pre-boot' VM customizations...
==> cent01: Booting VM...
==> cent01: Waiting for machine to boot. This may take a few minutes...
cent01: SSH address: 127.0.0.1:2222
cent01: SSH username: vagrant
cent01: SSH auth method: private key
==> cent01: Machine booted and ready!
==> cent01: Checking for guest additions in VM...
cent01: No guest additions were detected on the base box for this VM! Guest
cent01: additions are required for forwarded ports, shared folders, host only
cent01: networking, and more. If SSH fails on this machine, please install
cent01: the guest additions and repackage the box to continue.
cent01:
cent01: This is not an error message; everything may continue to work properly,
cent01: in which case you may ignore this message.
==> cent01: Setting hostname...
==> cent01: Configuring and enabling network interfaces...
==> cent01: Rsyncing folder: /Users/haje/vgrt/ => /vagrant
==> cent01: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> cent01: flag to force provisioning. Provisioners marked to run always will still run.
==> cent02: Checking if box 'centos/7' version '2004.01' is up to date...
==> cent02: Clearing any previously set forwarded ports...
==> cent02: Fixed port collision for 22 => 2222. Now on port 2200.
==> cent02: Clearing any previously set network interfaces...
==> cent02: Preparing network interfaces based on configuration...
cent02: Adapter 1: nat
cent02: Adapter 2: hostonly
==> cent02: Forwarding ports...
cent02: 22 (guest) => 2200 (host) (adapter 1)
==> cent02: Running 'pre-boot' VM customizations...
==> cent02: Booting VM...
==> cent02: Waiting for machine to boot. This may take a few minutes...
cent02: SSH address: 127.0.0.1:2200
cent02: SSH username: vagrant
cent02: SSH auth method: private key
==> cent02: Machine booted and ready!
==> cent02: Checking for guest additions in VM...
cent02: No guest additions were detected on the base box for this VM! Guest
cent02: additions are required for forwarded ports, shared folders, host only
cent02: networking, and more. If SSH fails on this machine, please install
cent02: the guest additions and repackage the box to continue.
cent02:
cent02: This is not an error message; everything may continue to work properly,
cent02: in which case you may ignore this message.
==> cent02: Setting hostname...
==> cent02: Configuring and enabling network interfaces...
==> cent02: Rsyncing folder: /Users/haje/vgrt/ => /vagrant
==> cent02: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> cent02: flag to force provisioning. Provisioners marked to run always will still run.
생성한 인스턴스에 손쉽게 접속하도록 합니다.
vagrant ssh cent01
여기가 그렇게 유명한 블로그 맛집인가요?