Vagrant?
IaC(Infra as a Code)를 사용하는 이유는 코드형 인프라를 사용하여 인프라 환경을 일정하게 유지하고 구성하기 위해서다.
vagrant는 HashiCorp에서 개발한 가상환경의 관리 및 프로비저닝을 도와주는 오픈소스 소프트웨어다.
VirtualBox, VMware 및 Hyper-V와 같은 다양한 가상화 플랫폼과 Docker와 같은 컨테이너와 함께 작동한다.
Vagrant는 VirtualBox와 같은 가상 머신을 Vagrantfile이라는 선언적 파일을 사용하여 코드로 관리한다.
Vagrantfile에 가상 환경의 원하는 속성을 정의한다. 코드로 작성되어 있어 개발 환경을 다른 사람과 쉽게 공유할 수 있고 환경의 일관성을 보장하여 환경 관련 문제의 가능성을 줄일 수 있다.
Vagrant는 명령줄 클라이언트(CLI)를 제공한다.
vagrantfile은 ruby 언어를 사용하지만 사용에 있어 ruby 언어에 대한 지식이 필요하지는 않다.
프로비저닝(provisioning)이란 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요할 때 시스템을 사용할 수 있도록 미리 준비해두는 것이다.
Virtual Box, Vagrant 설치
https://www.virtualbox.org/wiki/Download_Old_Builds_6_1
virtual box 6.1.44 버전 설치
참고로 6.2 이상 버전은 vagrant와 호환이 안돼서 사용할 수 없다.
https://developer.hashicorp.com/vagrant/downloads?product_intent=vagrant
vagrant 2.2.9버전 설치
vagrant가 설치된 위치에서 초기화를 하면 Vagrantfile이 자동으로 생성된다.
# -*- mode: ruby -*-
# vi: set ft=ruby :
...
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "base"
vagrantfile에서 config.vm.box = "base"
부분의 base
에 실행할 환경을 넣어준다.
이것을 vagrant box
라고 하는데, https://vagrantcloud.com/search에서 검색하여 사용할 수 있다.
위와 같이 base 대신 box의 이름을 넣어준다.
vagrant up
명령을 실행하여 가상 머신을 구동하고 virtualbox에서 확인한다.
ssh
명령을 사용하여 설치한 CentOS에 접속한다. (VirtualBox에서 돌아가고 있는 CentOS)
exit
명령으로 CentOS를 빠져나오고
vagrant destroy -f
명령을 사용하여 CentOS를 삭제한다.
CentOS가 삭제된 것을 확인할 수 있다.
No usable default provider could be found for your system.
버전 호환이 안되면 vagrant up
명령 시 provider를 특정하라고 출력하고
vagrant up --provider=virtualbox
명령으로 provider를 특정하면 버전이 맞지 않는다고 출력한다.