Vagrant 를 사용하게 된 이유
2020년도 1월 이번 년도 상반기 IT 개발 직군으로 취업을 위해 IT 회사에 이력서를 넣었고 그중 한군데에서 면접 제의가 왔었고 저는 취업을 해야하는 상황이였기 때문에 면접을 보게 되었습니다. 면접을 보면서 작년에 근무하였던 회사에서 시스템 엔지니어(SE) 기술 지원 활동에 대한 내용으로 질문이 있었고 저는 서버 OS 설치부터 고객 요구사항에 맞게 환경세팅을 한 내용을 테스트한 경험이 있다고 말하였습니다.(SE로 4개월간 근무를 하면서 실제 프로젝트에 혼자 기술지원을 하지 않았고 사수를 따라다니면서 어떻게하는지 본적은 있었습니다. ㅎㅎ) 테스트 환경은 주로 가상머신을 이용하였고 가상화 프로그램으로 Oracle Virtualbox 를 사용했다고 말씀드렸습니다. 그 이후 면접관은 Vagrant 를 아시나요? 라고 질문을 하였고 처음 들어본 단어여서 잘 모른다고 하였습니다.(사실 들어본 단어이기는 한데 설명을 제대로 못할거 같아서 모른다고 했습니다 ㅠㅠ) 면접관은 친절하게 Vagrant 에 대해서 설명을 해주었고 로컬에서 테스트 해보는 것도 좋은 경험이 될거다 라는 말을 하였습니다. 면접이 끝나고 집에 오면서 Vagrant에 대해서 궁금하였고 내용을 찾아보면서 흥미로운 점 몇가지를 알게되어서 정리를 해보려고 합니다.
Vagrant 란
Vagrant (https://www.vagrantup.com/intro/index.html)
- 단일 워크 플로우로 가상 시스템 환경을 구축하고 관리하기위한 도구
- Provision 기능을 통하여 요구 사항에 맞는 가상 시스템 환경을 자동으로 구축 가능
- 가상 시스템 환경을 프로젝트로 분류하여 로컬에서 VM 생성,삭제,상태확인 등 VM 관리 가능
Vagrant 를 왜 사용해야하는가
VirtualBox 의 VM 을 일반적인 방법으로 생성하였을때 필요한 사항
- VirtualBox로 VM을 생성하기 위해서 요구사항에 맞는 OS 의 ISO 파일이 있어야합니다.
- VM의 리소스 자원을 설정합니다(CPU,Memory,Disk etc....)
- VM의 IP를 설정과 필요한 서비스 및 보안사항들을 체크하여 가상머신을 구성합니다.
- VM 생성후 서비스 관리에 필요한 User 생성 과 권한 부여 그리고 필요한 서비스 설치
만약 VM이 1대가 아닌 30대를 생성 해줘야 한다면 동일한 작업을 10대 동일하게 해주어야 합니다. 10대 동일한 작업을 하였을 경우 시간이 많이 들고 사람이 하는 작업이라 실수가 나올 가능성도 있습니다. (실제 실무 현장에서는 VM 30대는 넘게 운영이 되고 있습니다.) 동일한 작업을 좀 더 편리하고 쉽게 관리할수 있는 방법 고안한 소프트웨어인 Vagrant는 Vagrantfile에 작성된 작업내용을 실행하여 가상 시스템 환경을 구축합니다.
Vagrant 는 Vagrantfile 에 작성된 내용으로 VM을 생성하기 시작합니다. VM을 생성하면서 필요한 ISO 파일을 vagrantcloud 에서 가져와 VirtualBox 에 추가를 하게 됩니다. 그리고 VirtualBox에서는 Vagrant 가 전송한 정보를 기반으로 VM을 생성하게 됩니다.
Vagrant 의 장점
- Vagrantfile 에 작성된 내용으로 가상 시스템이 자동으로 구축이 됩니다.
- 프로젝트에 있는 VM을 관리할수가 있습니다. (vagrant 명령어로 상태 확인,중지,삭제,생성등이 가능)
- provision 설정을 통해 요구사항에 맞는 서비스를 설정및 실행할수 있습니다.
Vagrant 의 단점
- provision 설정에서 오류가 발생한다면 vagrant가 멈추면서 동작을 하지 않습니다. 자세히 말하자면 멀티 VM을 구축할때 1 번 VM의 provision이 오류를 발생하면 다음 VM이 생성되지 않습니다.
Vagrant의 자세한 내용은 실습을 하면서 계속 설명하겠습니다.
실습에 필요한 소프트웨어 설치
실습을 위해 아래의 소프트웨어 설치가 필요합니다.
- Vagrant 2.2.6 (https://www.vagrantup.com/downloads.html)
- Oracle Virtual Box 5.2 (https://www.virtualbox.org/wiki/Downloads)
-
Git Bash (https://gitforwindows.org/)
VirtualBox 최신 버전 설치를 왜 하지 않는것이냐 라는 질문이 있을수 갔는데 Vagrant에서는 VirtualBox 6.1을 지원하지 않는 내용은 Vagrant 사이트를 통해 정보를 확인할수가 있습니다.(https://www.vagrantup.com/docs/virtualbox/)
다운로드를 하였다면 Git Bash 프로그램을 실행하여 터미널 창이 출력 되면 Vagrant 버전을 확인합니다. Vagrant 버전은 'vagrant version' 명령어로 확인할수 있습니다.
$ vagrant version
Installed Version: 2.2.6
Latest Version: 2.2.6
명령어가 실행이 된다면 VM 생성하기 위한 조건은 다 끝났습니다. 여기까지 준비가 되었다면 Vagrant에서 VM을 생성해 보겠습니다.
Vagrant 를 이용해 VM 생성하기
Vagrant 를 이용하여 VM을 생성하기 위해서는 Box가 필요합니다.
Vagrant에서 Box는 VM 에 생성시 사용할 가상 이미지 입니다.
Box는 내가 직접적으로 만들수도 있고 누군가가 만들어 놓은것을 사용할수도 있습니다.
저는 Box 를 만드는것이 번거로워 만들어 놓은 Box를 로드 하겠습니다.
Centos 7의 Box를 제공하는 곳은 여러개가 있지만 저는 Bento 프로젝트의 많이 사용하여 이것을 이용해 VM을 생성해 보겠습니다.(실제로 다운로드수가 다른 프로젝트에 비해 높습니다.)
VM을 생성하기 앞써 프로젝트를 생성해야하는데 이 프로젝트를 관리할 최상단 디렉토리가 필요 합니다. 저는 ~/centos7 디렉토리를 생성하여 'vagrant init' 으로 초기 환경을 생성하겠습니다.
$ vagrant init bento/centos-7.4
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
$ ls -al
total 32
drwxr-xr-x 1 tb252 197609 0 1월 27 14:42 ./
drwxr-xr-x 1 tb252 197609 0 1월 27 14:42 ../
-rw-r--r-- 1 tb252 197609 3093 1월 27 14:42 Vagrantfile
vagrant init 을 실행하면 Vagrantfile 이 생성이 되고 여기에는 VM에 관련된 설정 내용이 있습니다. vim 에디터로 Vagrantfile을 열어보면 다음과 같은 내용이 있습니다.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "bento/centos-7.4"
......
config.vm.box 의 설정은 제가 앞에서 vagrant init의 인자로 주어진 bento/centos-7.4가 환경설정 되어 있습니다. Vagrantfile 내용을 확인하였다면 vagrant up 으로 VM을 생성하고 기동해보겠습니다.
Vagrant up 을 했을 경우에 화면에 출력 되는 메세지를 구간이 나누어 설명 드리겠습니다.
-
(1) 번 구간에서는 Vagrantfile에서 Box 를 정해준 설정에 따라 www.vagrantcloud.com 에서 매치되는 Box 를 local에 로드 합니다. 성공적으로 Box를 로드하면 MAC Address를 NAT network로 설정하는 내용이 있습니다. 다음 메세지는 VM 이름을 정해주는 메세지가 출력됩니다. 그리고 그 아래에서는 공유 폴더에 대한 메세지가 있는데 이것은 나중에 다루도록 하겠습니다.
-
(2) 번 구간에서는 SSH 설정하는 내용과 설정된 IP 그리고 username 과 권한에 대한 내용이 출력됩니다. 그리고 VM 이 가동이 됩니다. (사실 내용이 많이 빠졌는데 빠진 내용은 다음 페이지에서 설명드리도록 하겠습니다.)
그리고 다음 메세지가 출력이 되면 성공적으로 VM 생성이 되었다는것을 알수있습니다.
생성된 VM에 접속을 하려면 vagrant ssh 명령어를 입력하면 됩니다.
'vagrant ssh' 로 접속을 하면 vagrant의 계정으로 접속하게 됩니다.
생성된 VM의 IP 정보를 보면 10.0.2.15 입니다. 그리고 디스크 용량 및 CPU/memory 정보등이 나와있습니다. 생성된 VM을 정지하고 싶을때는 'vagrant halt' 삭제를 하고 싶다면 'vagrant destroy' 를 입력하면 됩니다.
vagrant halt 를 입력했을때는 다음과 같이 VM 이 정지가 됩니다.
vagrant destroy 를 입력했을때는 다음과 같이 VM 이 삭제가 됩니다.
이번장에서는 vagrant 가 무엇이고 이것을 이용하여 VM을 생성한후 중지 삭제 까지 살펴보았습니다.
긴글 읽어 주셔서 감사합니다.
'Server Infra > Vagrant' 카테고리의 다른 글
[Vagrant] 2. Vagrant Project Struture (3) | 2020.01.27 |
---|