# 1. 프로그램 추가/삭제에서 제거
# 2. 다음 디렉터리 내용 삭제 (숨김 폴더일 수 있음)
C:\Users\<사용자이름>\VirtualBox
C:\Users\<사용자이름>\AppData\Local\.VirtualBox
AppData는 보통 숨김 폴더입니다. 탐색기에서 보이지 않으면 '보기' 탭에서 '숨김 항목' 체크박스를 활성화해주세요.
특징 | 설명 | 초보자를 위한 설명 |
---|---|---|
가상화 기술 | 컴퓨터 안에 가상 컴퓨터를 생성하여 여러 운영체제 동시 실행 가능 | 하나의 물리적 컴퓨터로 여러 개의 독립된 컴퓨터처럼 사용 가능 |
테스트 환경 | 실제 컴퓨터에 여러 OS를 설치하지 않고 다양한 환경 테스트 가능 | 실제 서버나 시스템에 영향을 주지 않고 안전하게 테스트 가능 |
안정성 | 가상 머신 간 격리로 한 환경의 문제가 다른 환경에 영향을 주지 않음 | 한 가상 컴퓨터가 고장나도 다른 가상 컴퓨터나 실제 컴퓨터는 안전 |
비용 | 무료 오픈소스 소프트웨어로 상업적/개인적 용도 모두 사용 가능 | 무료로 사용할 수 있어 학습 및 테스트에 부담 없음 |
코드형 인프라(IaC)란 인프라 구성을 수동으로 하지 않고, 코드로 정의하여 자동화하는 방식입니다. 마치 요리 레시피처럼 컴퓨터 환경 구성에 필요한 모든 단계를 코드로 작성해놓는 것이죠.
기능 | 설명 | 초보자를 위한 설명 |
---|---|---|
코드형 인프라 | 인프라를 코드로 관리하여 자동화 및 버전 관리 가능 | 컴퓨터 환경 설정을 텍스트 파일로 저장하고 관리 가능 |
환경 일관성 | 개발, 테스트, 배포 환경을 일관되게 유지 | "내 컴퓨터에서는 잘 되는데" 문제 해결 - 모든 팀원이 동일한 환경 사용 가능 |
가상화 관리 | VirtualBox 등의 가상화 소프트웨어와 연동하여 VM 관리 | 가상 컴퓨터 생성, 시작, 중지, 삭제 등을 명령어로 간편하게 처리 |
자동 구성 | Vagrantfile을 통해 VM 환경 정의 및 자동 구성 | 한 번 설정 파일을 만들면 언제든 같은 환경을 쉽게 재생성 가능 |
베이그런트 설정 파일로, 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)는 원격 컴퓨터에 안전하게 접속할 수 있는 프로토콜입니다. 마치 다른 컴퓨터의 명령 프롬프트나 터미널에 직접 접속하는 것과 같은 효과를 제공합니다.
설정 | 설명 | 초보자를 위한 설명 |
---|---|---|
config.vm.box | 사용할 VM 이미지 | 가상 컴퓨터에 설치할 운영체제 지정 (미리 준비된 이미지) |
config.vm.provider | 가상화 환경 설정 | 가상 컴퓨터의 하드웨어 사양 설정 (CPU, 메모리 등) |
config.vm.network | 네트워크 설정 | 인터넷 연결 방식 및 IP 주소 설정 |
config.vm.provision | 프로비저닝 설정 | 자동으로 실행할 스크립트나 설치할 프로그램 지정 |
📝 초보자 팁: 프로비저닝(Provisioning)이란 필요한 소프트웨어를 자동으로 설치하고 설정하는 과정입니다. 마치 새 컴퓨터를 샀을 때 필요한 프로그램을 자동으로 설치해주는 것과 같습니다.
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)은 명령어를 입력하여 컴퓨터를 제어하는 인터페이스입니다. 셸 스크립트는 여러 명령어를 파일로 저장해 한 번에 실행할 수 있게 해줍니다.
#!/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
옵션은 설치 과정에서 나오는 모든 질문에 "예"로 자동 응답하게 합니다.
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개의 동일한 가상 머신을 생성합니다. 단 한 번의 명령으로 클러스터 환경을 구축할 수 있는 장점이 있습니다.
#!/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은 성공, 그 외는 실패).
#!/bin/bash
chmod +x ping_2_nds.sh # ping_2_nds.sh 파일에 실행 권한 부여
Linux에서는 파일에 실행 권한을 부여해야 직접 실행할 수 있습니다.
chmod +x
명령은 파일에 실행 권한을 추가합니다.
PuTTY는 SSH 프로토콜을 사용해서 원격 컴퓨터에 접속합니다. 호스트명(IP 주소)과 포트 번호(보통 22번)만 알면 원격 접속이 가능합니다.
C:\putty\putty.exe
)SuperPuTTY는 독립적인 프로그램이 아니라 PuTTY를 확장하는 프로그램입니다. 따라서 먼저 PuTTY를 설치해야 하며, SuperPuTTY에 PuTTY의 위치를 알려줘야 합니다.
기능 | PuTTY | SuperPuTTY | 초보자를 위한 설명 |
---|---|---|---|
다중 세션 | 세션마다 별도 창 필요 | 탭 방식으로 다중 세션 관리 | 여러 탭으로 여러 서버를 효율적으로 관리 (웹 브라우저 탭처럼) |
세션 관리 | 단일 세션 관리 | 폴더 구조로 세션 체계적 관리 | 서버 접속 정보를 폴더로 정리해서 쉽게 찾을 수 있음 |
동시 명령 실행 | 불가능 | 여러 세션에 동시 명령 전송 가능 | 여러 서버에 같은 명령어를 한 번에 실행 가능 |
사용자 인터페이스 | 단순한 UI | 직관적이고 풍부한 UI | 더 사용하기 쉬운 화면 구성 |
vagrant ssh <가상머신 이름>
명령어로 접속 정보 확인📝 초보자 팁:
- 세션 디렉터리는 접속 정보를 폴더처럼 정리하는 기능입니다.
- 처음 SSH 접속 시 보안 경고가 표시되는 것은 정상입니다. 접속하려는 서버가 신뢰할 수 있는지 확인하는 과정입니다.
- known_hosts 파일은 이전에 접속한 서버의 정보를 저장하는 파일입니다.
graph TD
A[SuperPuTTY 실행] --> B[세션 디렉터리 생성]
B --> C[가상 머신 접속 정보 확인]
C --> D[세션 정보 입력]
D --> E[Connect All 클릭]
E --> F[다중 가상 머신 접속]
F --> G1[명령어 실행]
F --> G2[파일 전송]
F --> G3[설정 변경]
단계 | 도구 | 주요 기능 | 명령어/설정 | 초보자를 위한 설명 |
---|---|---|---|---|
가상화 환경 | VirtualBox | 가상 머신 생성 및 실행 | GUI 또는 VBoxManage 명령어 | 컴퓨터 속에 가상 컴퓨터를 만드는 프로그램 |
자동화 도구 | Vagrant | VM 설정 자동화 및 관리 | vagrant up , vagrant ssh 등 | 가상 컴퓨터 생성 및 관리를 자동화하는 도구 |
설정 파일 | Vagrantfile | VM 속성 정의 | Ruby 스크립트로 작성 | 가상 컴퓨터의 사양과 설정을 정의하는 파일 |
프로비저닝 | Shell Scripts | OS 설정 및 패키지 설치 | config.vm.provision "shell" | 필요한 프로그램을 자동으로 설치하는 스크립트 |
접속 도구 | PuTTY/SuperPuTTY | 원격 VM 접속 및 관리 | SSH 프로토콜 사용 | 가상 컴퓨터에 원격으로 접속하는 프로그램 |
기본 도구 설치
환경 정의
환경 생성
vagrant up
실행 (설계도에 따라 가상 컴퓨터 만들기)관리 및 접속
이 가이드는 개발 및 테스트 환경을 자동화하고 일관되게 구축하는 방법을 다룹니다. VirtualBox를 사용하여 가상 컴퓨터를 생성하고, Vagrant로 이를 자동화하며, PuTTY/SuperPuTTY로 원격 접속하는 과정을 설명합니다. 코드형 인프라(IaC) 접근 방식을 통해 Vagrantfile로 가상 머신 환경을 정의하고, 프로비저닝 스크립트로 필요한 소프트웨어를 자동 설치합니다. 또한 여러 가상 머신을 동시에 생성하고 관리하는 방법도 포함되어 있어, 클러스터 환경이나 분산 시스템을 쉽게 구축할 수 있습니다. 이 모든 과정은 명령어 몇 개로 자동화되어 일관된 개발/테스트 환경을 보장합니다.