테스트 환경 세팅

JEONGYUJIN·5일 전
0

인프라 스터디

목록 보기
2/4

컨테이너 테스트 환경 구축

1. 자동 구성 도구

버추얼박스 설치

VirtualBox: 오라클에서 배포하는 가상화 소프트웨어로, 대부분의 운영체제를 지원하며 무료로 사용 가능합니다.

💡 쉽게 설명하면: 여러분의 컴퓨터 안에 가상의 컴퓨터를 만들 수 있는 프로그램입니다. 마치 컴퓨터 속에 또 다른 컴퓨터가 있는 것처럼 사용할 수 있어요!

설치 과정

  1. VirtualBox 공식 웹사이트에서 설치 파일 다운로드
  2. 설치 마법사를 이용하여 설치 (기본 설정 권장)

기존 설정 삭제 방법

# 1. 프로그램 추가/삭제에서 제거
# 2. 다음 디렉터리 내용 삭제 (숨김 폴더일 수 있음)
C:\Users\<사용자이름>\VirtualBox
C:\Users\<사용자이름>\AppData\Local\.VirtualBox

AppData는 보통 숨김 폴더입니다. 탐색기에서 보이지 않으면 '보기' 탭에서 '숨김 항목' 체크박스를 활성화해주세요.

VirtualBox 주요 특징

특징설명초보자를 위한 설명
가상화 기술컴퓨터 안에 가상 컴퓨터를 생성하여 여러 운영체제 동시 실행 가능하나의 물리적 컴퓨터로 여러 개의 독립된 컴퓨터처럼 사용 가능
테스트 환경실제 컴퓨터에 여러 OS를 설치하지 않고 다양한 환경 테스트 가능실제 서버나 시스템에 영향을 주지 않고 안전하게 테스트 가능
안정성가상 머신 간 격리로 한 환경의 문제가 다른 환경에 영향을 주지 않음한 가상 컴퓨터가 고장나도 다른 가상 컴퓨터나 실제 컴퓨터는 안전
비용무료 오픈소스 소프트웨어로 상업적/개인적 용도 모두 사용 가능무료로 사용할 수 있어 학습 및 테스트에 부담 없음

베이그런트 설치

Vagrant: 코드형 인프라(IaC) 도구로, VirtualBox와 호환성이 우수하며 가상 머신 환경을 자동으로 구성합니다.

💡 쉽게 설명하면: 가상 컴퓨터를 만들고 설정하는 과정을 자동화해주는 도구입니다. 손으로 일일이 설정하는 대신, 텍스트 파일 하나로 가상 컴퓨터의 모든 설정을 관리할 수 있어요!

코드형 인프라(IaC)란 인프라 구성을 수동으로 하지 않고, 코드로 정의하여 자동화하는 방식입니다. 마치 요리 레시피처럼 컴퓨터 환경 구성에 필요한 모든 단계를 코드로 작성해놓는 것이죠.

설치 과정

  1. Vagrant 공식 웹사이트에서 설치 파일 다운로드
  2. 설치 마법사를 이용하여 설치
  3. 시스템 재시작 필요

Vagrant 주요 기능

기능설명초보자를 위한 설명
코드형 인프라인프라를 코드로 관리하여 자동화 및 버전 관리 가능컴퓨터 환경 설정을 텍스트 파일로 저장하고 관리 가능
환경 일관성개발, 테스트, 배포 환경을 일관되게 유지"내 컴퓨터에서는 잘 되는데" 문제 해결 - 모든 팀원이 동일한 환경 사용 가능
가상화 관리VirtualBox 등의 가상화 소프트웨어와 연동하여 VM 관리가상 컴퓨터 생성, 시작, 중지, 삭제 등을 명령어로 간편하게 처리
자동 구성Vagrantfile을 통해 VM 환경 정의 및 자동 구성한 번 설정 파일을 만들면 언제든 같은 환경을 쉽게 재생성 가능

베이그런트 구성 및 테스트

Vagrantfile

베이그런트 설정 파일로, config.vm.box 설정으로 가상 머신 이미지를 지정합니다.

📝 초보자 팁: Vagrantfile은 Ruby 언어로 작성된 설정 파일입니다. 프로그래밍 경험이 없어도 간단한 템플릿을 복사해서 필요한 부분만 수정하면 쉽게 사용할 수 있어요.

Vagrant.configure("2") do |config|
  config.vm.box = "sysnet4admin/CentOS-k8s"
  # 추가 설정
end

주요 명령어

명령어기능초보자를 위한 설명
vagrant init새 Vagrantfile 생성가상 컴퓨터 설정 파일 생성 (요리 레시피 만들기)
vagrant up가상 머신 생성 및 실행설정에 따라 가상 컴퓨터 만들고 켜기 (이미지가 없으면 자동 다운로드)
vagrant halt가상 머신 종료가상 컴퓨터 끄기 (데이터는 유지됨)
vagrant destroy가상 머신 삭제가상 컴퓨터를 완전히 삭제 (주의: 모든 데이터 사라짐)
vagrant ssh가상 머신에 SSH 접속가상 컴퓨터에 원격으로 접속하기
vagrant provision프로비저닝 스크립트 실행설정에 정의된 자동화 스크립트 실행 (소프트웨어 설치 등)

📝 초보자 팁: SSH(Secure Shell)는 원격 컴퓨터에 안전하게 접속할 수 있는 프로토콜입니다. 마치 다른 컴퓨터의 명령 프롬프트나 터미널에 직접 접속하는 것과 같은 효과를 제공합니다.

2. 베이그런트 환경 구축

가상 머신 설정 자동화

Vagrantfile: 가상 머신 설정을 자동화하는 루비 스크립트 파일로, VM의 이름, CPU, 메모리, 네트워크 등을 정의합니다.

💡 쉽게 설명하면: 가상 컴퓨터의 사양(CPU, 메모리), 운영체제, 네트워크 설정, 자동 설치 프로그램 등을 모두 정의하는 설계도입니다.

주요 설정 옵션

설정설명초보자를 위한 설명
config.vm.box사용할 VM 이미지가상 컴퓨터에 설치할 운영체제 지정 (미리 준비된 이미지)
config.vm.provider가상화 환경 설정가상 컴퓨터의 하드웨어 사양 설정 (CPU, 메모리 등)
config.vm.network네트워크 설정인터넷 연결 방식 및 IP 주소 설정
config.vm.provision프로비저닝 설정자동으로 실행할 스크립트나 설치할 프로그램 지정

📝 초보자 팁: 프로비저닝(Provisioning)이란 필요한 소프트웨어를 자동으로 설치하고 설정하는 과정입니다. 마치 새 컴퓨터를 샀을 때 필요한 프로그램을 자동으로 설치해주는 것과 같습니다.

예시 Vagrantfile

Vagrant.configure("2"<) do |config|
  config.vm.box = "ubuntu/bionic64"  # Ubuntu 18.04 운영체제 사용
  config.vm.provider :virtualbox do |vb|
    vb.memory = "2048"  # 2GB 메모리 할당
    vb.cpus = 2  # 2개 CPU 코어 할당
  end
  config.vm.network "private_network", ip: "192.168.56.101"  # 고정 IP 주소 설정
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt update  # 패키지 목록 업데이트
    sudo apt install -y nginx  # nginx 웹 서버 설치
  SHELL
end

추가 패키지 설치

셸 프로비저닝

cfg.vm.provision "shell", path: "install_pkg.sh" 설정을 Vagrantfile에 추가하여 추가 패키지 설치를 자동화합니다.

📝 초보자 팁: 셸(Shell)은 명령어를 입력하여 컴퓨터를 제어하는 인터페이스입니다. 셸 스크립트는 여러 명령어를 파일로 저장해 한 번에 실행할 수 있게 해줍니다.

install_pkg.sh 스크립트

#!/bin/bash
# EPEL 저장소 설치 (Extra Packages for Enterprise Linux - 추가 패키지 저장소)
yum install epel-release -y

# vim-enhanced 패키지 설치 (향상된 텍스트 편집기)
yum install vim-enhanced -y

📝 초보자 팁:

  • yum은 CentOS/RHEL 계열 리눅스에서 사용하는 패키지 관리자입니다(Ubuntu는 apt 사용).
  • EPEL은 기본 저장소에 없는 추가 패키지들을 제공하는 저장소입니다.
  • -y 옵션은 설치 과정에서 나오는 모든 질문에 "예"로 자동 응답하게 합니다.

vagrant provision 명령어

install_pkg.sh 스크립트를 실행하여 패키지를 설치합니다.

가상 머신 추가 구성

여러 대의 가상 머신 생성

Vagrant.configure("2") do |config|
  3.times do |i|  # 3개의 가상 머신 생성
    config.vm.define "node#{i+1}" do |node|  # node1, node2, node3 이름 설정
      node.vm.box = "ubuntu/bionic64"  # Ubuntu 18.04 이미지 사용
      node.vm.hostname = "node#{i+1}"  # 컴퓨터 이름 설정
      # 추가 설정
    end
  end
end

📝 초보자 팁: 위 코드는 반복문을 사용해 3개의 동일한 가상 머신을 생성합니다. 단 한 번의 명령으로 클러스터 환경을 구축할 수 있는 장점이 있습니다.

네트워크 연결 확인 스크립트 (ping_2_nds.sh)

#!/bin/bash

for i in {1..3}; do
  ping -c 3 node$i &>/dev/null  # 각 노드에 3번 ping 테스트
  if [ $? -eq 0 ]; then
    echo "node$i is reachable"  # 연결 성공 메시지
  else
    echo "node$i is unreachable"  # 연결 실패 메시지
  fi
done
  • ping은 다른 컴퓨터와의 연결 상태를 확인하는 명령어입니다.
  • &>/dev/null은 출력 결과를 화면에 표시하지 않게 합니다.
  • $?는 직전 명령어의 실행 결과를 저장하는 변수입니다(0은 성공, 그 외는 실패).

스크립트 실행 권한 설정 (config.sh)

#!/bin/bash
chmod +x ping_2_nds.sh  # ping_2_nds.sh 파일에 실행 권한 부여

Linux에서는 파일에 실행 권한을 부여해야 직접 실행할 수 있습니다. chmod +x 명령은 파일에 실행 권한을 추가합니다.

3. 터미널 접속 설정

PuTTY 설치

PuTTY: 가볍고 무료인 터미널 접속 프로그램으로, 다양한 플러그인을 지원합니다.

💡 쉽게 설명하면: 원격 컴퓨터에 접속할 수 있게 해주는 프로그램입니다. 여러분의 PC에서 서버나 가상 머신에 접속하여 명령어를 실행할 수 있습니다.
  1. PuTTY 다운로드 페이지에서 설치 파일 다운로드
  2. 설치 후 실행하여 정상 작동 확인

PuTTY는 SSH 프로토콜을 사용해서 원격 컴퓨터에 접속합니다. 호스트명(IP 주소)과 포트 번호(보통 22번)만 알면 원격 접속이 가능합니다.

SuperPuTTY 설치

SuperPuTTY: PuTTY의 제약(다중 접속 불편)을 해결하는 프로그램입니다.

💡 쉽게 설명하면: 여러 대의 원격 컴퓨터에 동시에 접속할 수 있게 해주는 프로그램입니다. 여러 개의 PuTTY 창을 효율적으로 관리할 수 있습니다.
  1. SuperPuTTY GitHub 릴리즈 페이지에서 설치 파일 다운로드
  2. 설치 시 PuTTY 실행 파일 위치 지정 필요 (일반적으로 C:\putty\putty.exe)

SuperPuTTY는 독립적인 프로그램이 아니라 PuTTY를 확장하는 프로그램입니다. 따라서 먼저 PuTTY를 설치해야 하며, SuperPuTTY에 PuTTY의 위치를 알려줘야 합니다.

PuTTY vs SuperPuTTY 비교

기능PuTTYSuperPuTTY초보자를 위한 설명
다중 세션세션마다 별도 창 필요탭 방식으로 다중 세션 관리여러 탭으로 여러 서버를 효율적으로 관리 (웹 브라우저 탭처럼)
세션 관리단일 세션 관리폴더 구조로 세션 체계적 관리서버 접속 정보를 폴더로 정리해서 쉽게 찾을 수 있음
동시 명령 실행불가능여러 세션에 동시 명령 전송 가능여러 서버에 같은 명령어를 한 번에 실행 가능
사용자 인터페이스단순한 UI직관적이고 풍부한 UI더 사용하기 쉬운 화면 구성

SuperPuTTY를 이용한 다중 접속

  1. SuperPuTTY에서 새로운 세션 디렉터리 생성
  2. vagrant ssh <가상머신 이름> 명령어로 접속 정보 확인
  3. 가상 머신 접속 정보 입력 (호스트명, 포트, 사용자명, 비밀번호)
  4. Connect All 기능으로 다수의 가상 머신에 동시 접속
  5. 보안 경고 발생 시, known_hosts 등록 및 평문 암호 허용 설정

📝 초보자 팁:

  • 세션 디렉터리는 접속 정보를 폴더처럼 정리하는 기능입니다.
  • 처음 SSH 접속 시 보안 경고가 표시되는 것은 정상입니다. 접속하려는 서버가 신뢰할 수 있는지 확인하는 과정입니다.
  • known_hosts 파일은 이전에 접속한 서버의 정보를 저장하는 파일입니다.
graph TD
    A[SuperPuTTY 실행] --> B[세션 디렉터리 생성]
    B --> C[가상 머신 접속 정보 확인]
    C --> D[세션 정보 입력]
    D --> E[Connect All 클릭]
    E --> F[다중 가상 머신 접속]
    F --> G1[명령어 실행]
    F --> G2[파일 전송]
    F --> G3[설정 변경]

4. 환경 구축 요약

단계도구주요 기능명령어/설정초보자를 위한 설명
가상화 환경VirtualBox가상 머신 생성 및 실행GUI 또는 VBoxManage 명령어컴퓨터 속에 가상 컴퓨터를 만드는 프로그램
자동화 도구VagrantVM 설정 자동화 및 관리vagrant up, vagrant ssh가상 컴퓨터 생성 및 관리를 자동화하는 도구
설정 파일VagrantfileVM 속성 정의Ruby 스크립트로 작성가상 컴퓨터의 사양과 설정을 정의하는 파일
프로비저닝Shell ScriptsOS 설정 및 패키지 설치config.vm.provision "shell"필요한 프로그램을 자동으로 설치하는 스크립트
접속 도구PuTTY/SuperPuTTY원격 VM 접속 및 관리SSH 프로토콜 사용가상 컴퓨터에 원격으로 접속하는 프로그램

환경 구축 워크플로우

  1. 기본 도구 설치

    • VirtualBox 설치 (가상 컴퓨터 생성 프로그램)
    • Vagrant 설치 (가상 컴퓨터 자동화 도구)
    • PuTTY/SuperPuTTY 설치 (원격 접속 프로그램)
  2. 환경 정의

    • Vagrantfile 작성 (가상 컴퓨터 설계도 만들기)
    • 프로비저닝 스크립트 작성 (자동 설치 목록 작성)
  3. 환경 생성

    • vagrant up 실행 (설계도에 따라 가상 컴퓨터 만들기)
    • VM 자동 생성 및 설정 (OS 설치 및 설정 자동화)
  4. 관리 및 접속

    • SuperPuTTY 세션 설정 (원격 접속 정보 설정)
    • 다중 VM 동시 접속 (여러 가상 컴퓨터에 동시 접속)
    • 필요한 작업 수행 (개발, 테스트 등 진행)

컨테이너 테스트 환경 구축 요약

이 가이드는 개발 및 테스트 환경을 자동화하고 일관되게 구축하는 방법을 다룹니다. VirtualBox를 사용하여 가상 컴퓨터를 생성하고, Vagrant로 이를 자동화하며, PuTTY/SuperPuTTY로 원격 접속하는 과정을 설명합니다. 코드형 인프라(IaC) 접근 방식을 통해 Vagrantfile로 가상 머신 환경을 정의하고, 프로비저닝 스크립트로 필요한 소프트웨어를 자동 설치합니다. 또한 여러 가상 머신을 동시에 생성하고 관리하는 방법도 포함되어 있어, 클러스터 환경이나 분산 시스템을 쉽게 구축할 수 있습니다. 이 모든 과정은 명령어 몇 개로 자동화되어 일관된 개발/테스트 환경을 보장합니다.

profile
일단 하고 보자 (펠리컨적 마인드 ㅠㅠ)

0개의 댓글

관련 채용 정보