Vagrant로 가상 머신 생성

박도준·2021년 5월 19일
0

[IaC] Vagrant

목록 보기
1/1
post-thumbnail

Vagrant로 Local 개발 환경을 구축해본다.
이때 Local 개발 환경의 구축 절차를 code화 함에 있어 장점은 아래와 같다.

  • 환경을 쉽게 공유 가능하다.
    구축 절차가 되는 code만을 공유하고 이용하는 것으로, 누구나 환경을 재현할 수 있다.
  • 환경 정보를 파악할 수 있다.
    code를 보는 것으로 어떻게 Local 개발 환경이 구축되고 무엇으로 구성되어 있는지 파악이 가능하다.
  • 환경의 유지 보수를 쉽게 할 수 있다.
    code를 수정하는 것만으로 환경에 대한 유지 보수를 할 수 있게 된다. code 자체가 구축 절차가 되기 때문에 절차와 환경 정보의 괴리도 발생하지 않는다.



Vagrant 설치

Vagrant는 공시 사이트에서 자신의 환경에 맞게 설치한다. (Vagrant 설치 링크)
설치 링크에 접속하면 자동으로 OS를 인식한다.

설치를 완료하고 설치가 정상적으로 되었는지 확인하기 위해 터미널창에 vagrant --version 커맨드를 입력해본다.



Vagrant 사용

Vagrant 설정

그리고 vagrant 프로젝트를 위한 디렉토리를 생성한다. 그리고 vagrant에서 가상 머신을 구축하기 위한 기본 세트를 작성하기 위해 아래 명령어를 실행한다.

vagrant init

명령어 실행되고 나면, Vagrantfile이 생성된다. 이 파일은 vagrant에서 가상 머신 구축에 관한 정의나 절차를 모두 담고 있다.



Vagrantfile 작성

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

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.hostname = "demo"
  config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.provision "shell", inline: $script
end

$script = <<SCRIPT
  yum -y install epel-release
  yum -y install nginx
  echo "hello, vagrant" > /usr/share/nginx/html/index.html
  systemctl start nginx
SCRIPT

Vagrantfile의 내부를 살펴본다.

vagrant는 프로그래밍 언어인 ruby로 만들어졌고, Vagrantfile의 내용도 ruby 언어 문법으로 작성되어 있다.

Vagrant.configure ~ end 사이의 내용은 가상머신을 정의하는 내용이다.

  • Vagrant.configure("2") do |config|
    Vagrant.configure("2")는 vagrant config 설정 형식의 버전을 의미한다. 이후에 기재하는 설정에 대한 기술 방식은 버전 2의 형식에 따라 기술한다는 의미이다.
  • config.vm.box = "centos/7"
    vagrant에서 박스(box)는 가상 머신의 이미지를 의미한다. config.vm.box를 통해 구축하는 가상 머신의 베이스가 되는 이미지를 선택한다.
  • config.vm.hostname = "demo"
    구축하는 가상 머신의 호스트 이름을 정의한다.
  • config.vm.network :private_network, ip: "192.168.33.10"
    config.vm.network에서는 네트워크 관련된 설정을 할 수 잇다. private_network를 사용해 호스트에서만 접근 가능한 IP 값을 추가적으로 지정한다.
  • config.vm.provision "shell", inline: $script
    config.vm.provision으로 shell 프로비저너를 통해 아래의 $script = <<SCRIPT 이후의 처리를 호출한다. 여기에 기술된 처리는 가상 머신 구축 후 실행된다.


위에서 사용한 config.vm 이외의 설정할 수 있는 값들은 여기서 확인할 수 있다.



Vagrant로 가상 머신 기동

vagrant up

실행하면 아래와 같이 나온다.

Machine booted and ready!가 출력되는 것을 확인하고 virtualbox에서 가상 머신이 기동되었는지 확인한다.



Vagrant로 가상 머신 접속

IP 주소를 지정하지 않고 ssh 키를 별도로 마련하지 않고도 간단하게 접속이 가능하다.

vagrant ssh

Vagrantfile에 작성한 호스트 이름과 private IP를 확인해본다.

uname -n

ip addr show dev eth1



호스트 PC로부터 접속 테스트

Vagrantfile에서 config.vm.provision 세팅을 통해 shell script로 nginx를 설치했는 이를 확인해본다.

nginx -v

curl http://192.168.33.10/



호스트 PC에서 가상 머신 정지

vagrant halt

정지한 가상 머신을 다시 실행하려면 vagrant up을 수행하고 vagrant ssh로 접속하면 된다.



호스트 PC에서 가상 머신 취소

vagrant destroy

가상 머신 취소 후, 다시 가상 머신을 이용하려면 vagrant up으로 가상 머신을 재기동한다.



참고자료

https://www.44bits.io/ko/post/vagrant-tutorial

profile
Better late than never

0개의 댓글