티스토리 뷰

IaC/Vagrant

[Vagrant] IaC 시작하기: Vagrant + VirtualBox

나미의 로그포스 2023. 3. 16. 01:47

1. IaC (Infrastructure as Code)

소프트웨어를 프로그래밍하는 것처럼 코드를 통해 인프라 구성을 하는 방식 = "프로그래밍형 인프라"

개별 하드웨어의 수동 구성 및 업데이트가 불필요 빠른 속도, 비용 절감, Human error 제거, 멱등성 보장

 

*** Human error 란?

      시스템을 관리, 운영하는 과정에서 인간의 개입이 불가피한 경우 발생하는 '사람이 하는 실수'

      → IaC로 shell이나 code 실행을 통해 설정 파일 복사가 가능해지므로 사람이 직접 환경 설정할 필요가 없어지고 수동 오류가 줄어듦

 

*** 멱등성

       몇 번 실행하더라도 동일한 결과를 보장하는 것

 

1개의 시스템 구성을 수동 방식으로 하는 것은 괜찮을지도 모르지만 100개, 1000개로 구성해야 하는 시스템 인프라 수가 증가할수록 오류 발생 가능성과 부담이 커지게 됩니다. 이 때 다음과 같은 IaC Tool을 사용하면 효율적으로 시스템 인프라 관리를 할 수 있습니다.

 

  • IaC Tool
    • Chef
    • Pupper
    • Terraform : 배포 관리
    • Ansible : 배포 이후 구성 관리의 대표
    • Vagrant

2. Vagrant 설치

Vagrant : 스크립트를 기반으로 특정 환경의 가상 머신을 자동 생성, 신속한 개발 환경 구축을 돕는 솔루션

*** VMWare와 VirtualBox 모두 사용 가능하지만, VMWare 사용 시 별도 드라이버 설치가 필요하므로 VirtualBox로 실습을 권장합니다.

 

- VirtualBox (Oracle 사의 오픈소스 가상 머신 소프트웨어) 설치

   7.0.6 ver Windows hosts + Extension Pack을 함께 설치

   VirtualBox 사용해보기 - 메모리 1G, Rocky 9 ISO 이미지로 설치 진행

   Ctrl+Alt 입력 단축키 변경 (Vmware와 크게 다르지 않습니다. 다만 익숙한 방식으로 호스트 key를 변경해주면 좋아요.)

 

https://www.virtualbox.org/wiki/Downloads

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.1 packages, see Virt

www.virtualbox.org

 

- Vagrant 설치

 

https://developer.hashicorp.com/vagrant/downloads

 

Install | Vagrant | HashiCorp Developer

Explore Vagrant product documentation, tutorials, and examples.

developer.hashicorp.com

Vagrant.com에서 환경에 맞는 파일 다운로드 (Windows-AMD64 다운로드)

 

*** 이후 cmd 창을 열어 플러그인을 반드시 설치

vagrant plugin install vagrant-vbguest

 

플러그인 설치


3. Vagrant 실행하기

우선 실행에 필요한 준비를 위해 Vagrantfile 을 확인해야 합니다.

vagrant init             # 초기화
dir                      # 디렉토리 확인
notepad Vagrantfile      # 메모장으로 Vagrantfile 열어 확인

메모장으로 확인한 Vagrantfile

이 file을 이용해 node 연결코드를 만들어 가상 머신을 생성할 것입니다. 초기 파일에는 Vagrantfile 작성법에 대한 설명이 주석 처리 되어 있습니다.

 

 

3-1. Vagrantfile 작성

 

확인한 Vagrantfile 내용을 작성합니다. VSCode를 이용해 node 연결 코드를 생성했습니다.

config.vbguest.installer_options = { allow_kernel_upgrade: true }

*** 이 때 config.vbguest 코드가 없으면 vbguest 설치가 불가능하므로 삭제 X

config.vm.network "forwarded_port", guest: 22, host: 65022 
# 65022 포트 사용, 외부에 직접 노출 가능

config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

config.vm.network "public_network", ip: "192.168.3.213" 
# 내가 쓸 주소 192.168.3.213

위와 같이 vagrantfile에 사용할 포트, 주소와 가상 머신 생성에 필요한 설정들을 입력해줍니다.

 

이렇게 수정한 코드를 vagrant 폴더를 만들어 Vagrantfile로 저장합니다.

이 때 file의 이름은 반드시 Vagrantfile이어야 하며 경로에 한글이 있지 않도록 주의합니다.(vagrant up 시 오류 발생 가능)

저는 바탕화면에 vagrant 폴더를 만들어 실행했습니다.(Vagrantfile 경로: C:\Users\사용자\Desktop\vagrant)

 

 

3-2. Vagrant 실행

cd vagrant

Vagrantfile이 있는 경로로 이동해 vagrant up을 진행합니다.

 

- vagrant 실행, 자동으로 가상 머신 생성 시작

vagrant up

vagrant up 시 자동으로 시스템 설정 진행

- vagrant 상태 확인

vagrant status

 

- 생성 및 설정이 완료된 것을 확인한 가상 머신(anm1)에 원격 접속

vagrant ssh anm1

status로 현재 상태 확인 및 ssh 원격 접속

- 만든 가상 머신 삭제

vagrant destroy

 

Vagrantfile 수정을 통해 아래와 같이 복수의 node를 구성할 수도 있습니다.

Vagrantfile - 4node Test

 

VMWare로 node를 만들 때는 일일히 시스템 설정을 하고 IP도 각각 주어야 했는데, 오늘은 IaC 툴을 이용해 한 번에 손쉽게 환경 구축을 마쳐보았습니다. 

 

+) 더 많은 명령어와 작업 수행은 Vagrant Documents를 참고해 학습할 수 있습니다!

https://developer.hashicorp.com/vagrant/docs

 

Documentation | Vagrant | HashiCorp Developer

Welcome to the documentation for Vagrant - the command line utility for managing the lifecycle of virtual machines. This website aims to document every feature of Vagrant from top-to-bottom, covering as much detail as possible.

developer.hashicorp.com

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함