Vagrant로 CentOS 가상머신 구성하기
개요
Vagrant는 HashiCorp에서 개발한 가상머신 환경을 신속하게 구축할 수 있는 도구입니다. 본 문서에서는 Vagrant와 Oracle VM VirtualBox를 조합하여 Windows 10 환경에서 CentOS 7 가상머신을 빠르게 생성하는 방법을 설명합니다. 사전에 Vagrant와 VirtualBox가 설치되어 있어야 합니다.
CentOS 7 가상머신 구축
1. 베이스 이미지 검색
먼저 Vagrant Cloud에서 centos 이미지를 검색합니다.
2. 프로젝트 디렉토리 생성
Windows의 원하는 드라이브에 vagrant_vm 디렉토리를 생성합니다(한글이나 공백이 포함되지 않은 경로 권장). 생성된 디렉토리에서 명령 프롬프트를 실행하고 다음 명령을 입력합니다:
vagrant init centos/7
3. 가상머신 실행
VirtualBox를 미리 실행한 상태에서 다음 명령어로 가상머신을 시작합니다:
vagrant up
설치가 완료되면 VirtualBox 목록에 실행 중인 가상머신이 표시됩니다.
4. 다운로드 속도 향상
초기 설치 과정이 느린 경우 다음方法来加速:
설치 로그에서 다음과 같은 줄을 찾습니다:
Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
나열된 URL을 복사하여 다운로드管理器로 다운로드합니다. 다운로드가 완료되면 .box 파일을 vagrant_vm 디렉토리에 저장하고 centos7.box로 이름을 변경합니다(다른 파일과 디렉토리는 삭제).
다음으로, 기존 이미지를 가져옵니다:
vagrant box add centos/7 centos7.box
이제 box를 초기화합니다:
vagrant init centos/7
초기화가 완료되면 가상머신을 시작합니다:
vagrant up
온라인 다운로드와 동일한 결과를 얻을 수 있습니다.
Vagrant 기본 명령어
가상머신 상태 확인
vagrant status
가상머신 종료
vagrant halt
가상머신 시작
vagrant up
가상머신 일시중지
vagrant suspend
일시중지 전 상태가 저장됩니다.
일시중지 복구
vagrant resume
가상머신 재시작
vagrant reload
가상머신 완전 삭제
vagrant destroy
SSH 연결
vagrant ssh
원격 도구로 가상머신 연결
vagrant ssh 사용 시 개인 키 파일 권한 관련 오류가 발생할 수 있습니다. 이 경우 SSH 클라이언트 도구를 사용하여 연결합니다.
기본 사용자 로그인
먼저 일반 사용자(vagrant)로 로그인합니다.
root 계정 활성화
vagrant 사용자로 로그인한 후 root로 전환:
su root
비밀번호: vagrant
root 로그인을 가능하게 하려면 SSH 설정을 수정합니다:
vim /etc/ssh/sshd_config
다음과 같이 변경:
# PermitRootLogin prohibit-password
PermitRootLogin yes
# PasswordAuthentication on
PasswordAuthentication yes
SSH 서비스를 재시작:
systemctl restart sshd
이제 다음 명령으로 가상머신을 재시작하면 root/vagrant로 직접 로그인할 수 있습니다:
vagrant reload
디렉토리 공유
Vagrant 프로젝트 디렉토리와 가상머신의 /vagrant 디렉토리는 자동 공유됩니다. 프로젝트 디렉토리에 생성된 파일은 가상머신에서도 즉시 확인 가능합니다.
사용자 정의 공유 디렉토리 설정
Vagrantfile에서 공유 디렉토리를 구성할 수 있습니다:
config.vm.synced_folder
"your_folder", // 호스트 디렉토리 (절대경로 또는 상대경로)
,"vm_folder", // 가상머신 마운트 경로
,create: false, // 선택: 마운트 디렉토리가 없으면 생성
,disabled: false, // 선택: true면 해당 공유 비활성화
,owner: "vagrant", // 선택: 파일所有者 (기본값: vagrant)
,group: "vagrant", // 선택: 파일所有組 (기본값: vagrant)
,mount_options: ["dmode=775","fmode=664"], // 선택: 디렉토리/파일 권한
,type: nil // 선택: 공유 방식 지정 (예: 'nfs')
vbguest 플러그인 설치
마운트 실패를 방지하기 위해 다음 플러그인을 설치합니다:
vagrant plugin install vagrant-vbguest
업데이트 비활성화 설정:
config.vbguest.auto_update = false
config.vbguest.no_remote = true
사용자 정의 공유 디렉토리 적용
Vagrantfile을 편집하여 기본 공유를 비활성화하고 새 공유를 추가합니다:
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.synced_folder "./data", "/vagrant_data", create: true, owner: "root", group: "root"
위 설정은 현재 디렉토리의 data 폴더를 가상머신의 /vagrant_data에 공유하며, 소유자는 root입니다.
Vagrantfile 수정 후 다음 명령으로 재시작:
vagrant reload
네트워크 구성
사설 네트워크
Vagrantfile에서 사설 네트워크를 활성화합니다:
config.vm.network "private_network", ip: "192.168.33.10"
재시작:
vagrant reload
Windows에서 해당 IP로 ping 테스트:
ping 192.168.33.10
가상머신에서 IP 확인:
ip addr
공유 네트워크
사설 네트워크 설정을 주석 처리하고 공유 네트워크를 활성화합니다:
config.vm.network "public_network"
재시작 시 현재 네트워크 환경에 맞는 네트워크 어댑터를 선택합니다.
공유 네트워크는 라우터에서 자동 할당된 IP를 사용하며,同一 Wi-Fi 네트워크의 다른 기기에서도 접근 가능합니다.
멀티 호스트 구성
Vagrantfile에서複数の仮想머신을 정의하여 개발 환경을 확장할 수 있습니다.