반응형

[vagrant] vagrantfile 활용한 가상머신 N대를 한번에 생성하기

 

l  Vagrant

 

Vagrant(베이그랜트) Hashicorp(하시코프)에서 개발한 가상머신 관리를 자동화 도구로 루비 기반의 DSL 작성할 있으며, 가상머신 생성 관리, 환경 구축을 위한 프로비저닝까지 관리할 있다. 이번 포트스에서는 vagrant에서 가상머신을 생성할 참고하는 vagrantfile 대해서 알아본다.

 

l  vagrant 활용한 개발 환경 구축하기 : https://sungwookkang.com/1523

l  vagrant 가상머신 생성하기 : https://sungwookkang.com/1524

 

vagrantfile vagrant init 명령을 실행하면 생성되는 설정 파일이다. 물론 init 명령이 아닌 사용자가 수동으로 직접 파일을 생성하여 사용할 수도 있다. Vagrantfile 가상머신의 이미지 종류, IP할당, 공용 폴더 설정, NAT 설정 다양한 정보를 가지고 있다.  이렇게 생성된 파일은 vagrant up 명령을 실행할 로드되어 설정된 값으로 가상머신을 생성하게 된다.    

 

아래 코드는 vagrantfile 설정의 예시로 기초적인 명령어를 작성한 것이다. 예제에 포함된 설정 외에도 다양한 환경변수를 지원한다.

Vagrant.configure("2") do |config|
    config.vm.define "vm-name" do |cfg|
        cfg.vm.box = "generic/centos8"
        cfg.vm.hostname = "centos8"
        cfg.vm.network "private_network", ip: "192.168.1.10"
        cfg.vm.network "forwarded_port", guest: 22, host:19000, auto_correct: false, id "ssh"
        cfg.vm.synced_folder ".", "/vagrant", disabled: true
        cfg.vm.provider "virtualbox" do |vb|
            vb.name = "vm-name"
            vb.cpus = 2
            vb.memory = 2048
        end
    end
end

 

 

l  Vagrant.configure("2") do |config| : vagrant Version

l  config.vm.define "vm-name" do |cfg| : vagrant에서 정의한 가상머신 이름. Vagrant ssh에서 사용

l  cfg.vm.box = "generic/centos8" : vagrant box에서 다운로드 실행할 이미지 이름

l  cfg.vm.hostname = "centos8" : OS에서 설정될 호스트 서버 이름

l  cfg.vm.network "private_network", ip: "192.168.1.10" : 가상머신에 할당할 NAT 선택(public_network, private_netwrok), IP 입력하지 않을 경우 DHCP 동작.

l  cfg.vm.network "forwarded_port", guest: 22, host:19000, auto_correct: false, id "ssh" : 호스트의 19000 포트로 접속시 가상머신의 22 포트로 포워딩

l  cfg.vm.synced_folder ".", "/vagrant", disabled: true : 호스트와 가상머신의 공유 폴더 설정

l  cfg.vm.provider "virtualbox" do |vb| : virtualbox provider 지정

l  vb.name = "vm-name" : virtualbox에서 보여지는 가상머신 이름

l  vb.cpus = 2 : 가상머신에 할당될 CPU 코어

l  vb.memory = 2048 : 가상머신에 할당될 메모리 크기. 단위는 MB.

 

Vargrant up 명령으로 동시에 2 이상의 가상머신을 생성하려면 vagrantfile 파일에 생성하려는 서버 설정을 모두 입력하여 사용한다. 아래 예제는 동시에 3대의 가상머신을 생성한다.

Vagrant.configure("2") do |config|
    #vm1
    config.vm.define "vm-1" do |cfg|
        cfg.vm.box = "generic/centos8"
        cfg.vm.hostname = "vm1-centos8"
        cfg.vm.provider "virtualbox" do |vb|
            vb.name = "vm-1"
            vb.cpus = 2
            vb.memory = 2048
        end
    end
 
    #vm2
    config.vm.define "vm-2" do |cfg|
        cfg.vm.box = "generic/centos8"
        cfg.vm.hostname = "vm2-centos8"
        cfg.vm.provider "virtualbox" do |vb|
            vb.name = "vm-2"
            vb.cpus = 2
            vb.memory = 2048
        end
    end
 
    #vm3
    config.vm.define "vm-3" do |cfg|
        cfg.vm.box = "generic/centos8"
        cfg.vm.hostname = "vm3-centos8"
        cfg.vm.provider "virtualbox" do |vb|
            vb.name = "vm-3"
            vb.cpus = 2
            vb.memory = 2048
        end
    end
end
 

 

Vagrant up 명령으로 가상머신이 생성할 있으며, vagrantfile 설정대로 3대의 가상머신이 생성되는 것을 확인할 있다.

 

Virtualbox에서도 3대의 가상머신이 정상적으로 생성된 것을 확인할 있다.

 

 

개발환경을 구성할 이와 같이 스크립트로 생성할 있도록 구성하고 관리하면 매번 환경을 세팅할 때마다 투입되는 시간 리소스 절약할 있다. 그리고 가장 중요한 것은 동일한 환경을 다시 구성할 있기 때문에 매번 구성때마다 환경 바뀜으로 인한 여러가지 장애상황을 예방할 있다.

 

Vagrantfile 대한 자세한 옵션은 공식 문서를 참고 있도록 한다.

l   Vagrantfile : https://developer.hashicorp.com/vagrant/docs/vagrantfile

 

 

[참고자료]

l   Vagrantfile : https://developer.hashicorp.com/vagrant/docs/vagrantfile

 

 

 

2023-07-02 / Sungwook Kang / https://sungwookkang.com

 

 

Vagrant, 베이그랜트, 개발환경구성, 가상머신, vagrantfile, 베이그랜트 설정, 가상머신생성, virtualbox

반응형

+ Recent posts