OpenStack과 관련된 프로젝트를 진행하게 되면서, 본격적으로 서버에 OpenStack을 구축 해보기 전 VirtualBox를 이용해 Ubuntu 가상 머신을 생성하고, 그 위에 DevStack을 설치하여 OpenStack 실습 환경을 구축해보았다.
DevStack은 OpenStack의 여러 서비스를 개발 및 테스트 목적으로 비교적 간단하게 구축할 수 있도록 해주는 도구이다. 이번 실습에서는 Windows 11을 호스트 운영체제로 사용하고, VirtualBox에 Ubuntu 24.04 가상 머신을 생성하여 DevStack을 설치하였다.
1.설치 환경
| 구분 | 상세 | ||
|---|---|---|---|
| 호스트 OS | Windows 11 | ||
| 가상화 | VirtualBox 7.2.20 | ||
| 게스트 OS | Ubuntu 24.04 | ||
| 메모리 | 약 12GB | ||
| 디스크 | 약 100GB | ||
| 네트워크 | NAT | ||
| 설치 서버 | Keystone, Nova, Glance, Neutron, Placement, horizon 등 |
DevStack 공식 문서(devstack.org) 와 티스토리( [OpenStack] 2. OpenStack 시작하기 – DevStack 실습 환경 구축 ① — Jiwoo.Log )를 참고하여 설치하였다.
2.VirtualBox에서 VM 환경 세팅
(1) 실습 환경(VM) 구축
작업하기 전, 구버전 VirtualBox를 사용하고 있었기에 VirtualBox를 지운 후에 새로 다운 받아서 기본 세팅을 진행했다. 이 과정에서 VirtualBox를 삭제한 후와 다시 깐 후에 재부팅하는 걸 까먹어서 좀 돌아가느라 상당한 시간이 소요되었다.
설치를 위해 참고한 티스토리에서는
CPU: 6~8 vCPU
메모리: 12~16GB
디스크: 100GB
사양을 권장했었지만, 내 PC에 맞춰
CPU: 4 vCPU
메모리: 12GB
디스크: 100GB
위와 같은 사양으로 설정하였다.
(2) VirtualBox에 Ubuntu 설치
위와 같이 설정한 상태에서 새로운 VM을 생성한 뒤, Ubuntu 24.04를 설치하였다.
이번 실습에서는 DevStack에서 여러 OpenStack 서비스를 동시에 실행해야 하기 때문에 가상 머신의 메모리와 디스크 공간을 비교적 넉넉하게 할당하였다.
Ubuntu 설치가 완료되면 터미널을 열어 시스템을 업데이트 하고, 패키지까지 설치한다.
sudo apt update
sudo apt upgrade -y
sudo apt install -y git sudo //패키지 설치
(3). DevStack 사용자 생성
DevStack을 root 계정에서 직접 실행하지 않고 별도의 stack 사용자를 생성하였다.
sudo useradd -s /bin/bash -d /opt/stack -m stack
/opt/stack 디렉터리에 접근할 수 있도록 권한을 설정한다.
sudo chmod +x /opt/stack
그리고 stack 사용자가 sudo 명령어를 사용할 수 있도록 설정하였다.
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
이후 생성한 계정으로 전환하였다.
sudo -u stack -i
pwd를 통해 현재 위치를 확인하면 다음과 같이 나타난다.
/opt/stack
(4). DevStack 다운로드
이제 DevStack을 다운로드할 기본 세팅이 완료되었다. DevStack 소스 코드 Git을 통해 다운로드하였다.
git clone https://opendev.org/openstack/devstack
다운로드가 완료되면 DevStack 디렉터리로 이동한다.
cd /opt/stack/devstack
다시 pwd를 통해 현재 위치를 확인한다. 정상적으로 이동했다면 다음과 같이 출력된다.
/opt/stack/devstack
(5). local.conf 설정 및 HOST_IP 오류 해결
아래에 자세히 후술하겠지만, 설치 과정에서 IP 주소를 자동으로 인식하지 못하는 문제가 발생했기 때문에 아래와 같이 local.conf 파일을 열고 직접 작성하였다.
nano local.conf
HOST_IP를 비롯한 비밀번호까지 직접 지정하여 작성한 후 저장했다.
[[local|localrc]]
ADMIN_PASSWORD=passwordforpractice
DATABASE_PASSWORD=passwordforpractice
RABBIT_PASSWORD=passwordforpractice
SERVICE_PASSWORD=passwordforpractice
HOST_IP=10.0.2.15
여기서 비밀번호는 실습을 위한 예시이며, 실제 환경에서는 안전한 비밀번호를 사용하는 것이 좋다.
처음 ./stack.sh를 실행했을 때 다음과 같은 오류가 발생하였다.
Could not determine host ip address.
See local.conf for suggestions on setting HOST_IP.
DevStack이 Ubuntu 가상 머신의 IP 주소를 자동으로 찾지 못한 것이다.
먼저 다음 명령어를 통해 Ubuntu의 IPv4 주소를 확인하였다.
ip -4 addr
확인 결과 VirtualBox NAT 네트워크 인터페이스 enp0s3에 다음 주소가 할당되어 있었다.
inet 10.0.2.15/24
라우팅 정보도 확인하였다.
ip route
default via 10.0.2.2 dev enp0s3
10.0.2.0/24 dev enp0s3
따라서 local.conf에 다음 내용을 추가하였다.
HOST_IP=10.0.2.15
이번 설치 과정에서 발생한 가장 중요한 문제 중 하나였다. VirtualBox에서 네트워크 자체는 정상적으로 연결되어 있었지만 DevStack이 IP를 자동으로 선택하지 못했기 때문에 직접 지정하여 해결하였다.
(6). DevStack 설치
설정이 완료된 후 다음 명령어로 DevStack 설치를 시작하였다.
./stack.sh
설치 과정에서는 OpenStack을 구성하는 여러 프로젝트의 소스 코드가 차례대로 다운로드 되었다.
DevStack을 설치하는 시간이 내 예상보다 오래 소요되어서 중간엔 뭐가 잘못된 줄 알았다.
터미널 창에 아무런 메세지가 뜨지 않다가, 15분마다 한 번씩 엄청난 로그가 올라가며, 사진과 같이 다운로드 된 상태를 확인할 수 있었다. 밑에 있는 사진은 Cinder 다운로드 화면을 캡쳐한 것이다.
이후에는 Neutron도 같은 방식으로 다운로드 되었다.
처음에는 비슷한 메시지가 계속 나타나 설치 과정이 반복되는 것으로 생각했다.
하지만 확인해 보니 cinder, neutron 등 서로 다른 OpenStack 프로젝트를 순차적으로 clone하는 과정이었다.
이번 환경에서는 DevStack 설치에 상당한 시간이 소요되었다.
설치 도중 문제가 발생한 것인지 확인하기 위해 메모리 상태를 확인하였다.
free -h
당시 약 11GiB의 메모리가 할당되어 있었으며 사용 가능한 메모리도 충분했다. 디스크 공간도 확인하였다.
df -h /opt/stack
약 98GB의 디스크 중 80GB 정도가 남아 있었기 때문에 메모리나 디스크 공간 부족은 아니라고 판단하였다. 결국 설치 프로세스를 중단하지 않고 기다렸으며 설치가 정상적으로 완료되었다.
실제 설치 완료 메시지는 다음과 같았다.
stack.sh completed in 10528 seconds.
10528초이므로 계산하면 약 2시간 55분이 소요되었다.
따라서 VirtualBox 환경에서 DevStack을 설치할 때는 PC 성능과 네트워크 환경에 따라 설치 시간이 상당히 길어질 수 있다는 점을 알 수 있었다.
(7). Horizon 대시보드 동작 확인
DevStack 설치가 완료된 후 OpenStack의 웹 기반 관리 대시보드인 Horizon이 정상적으로 실행되는지 확인하였다.
먼저 Ubuntu 가상 머신에 할당된 IP 주소를 확인하였다.
ip -4 addr
앞서 확인했던 것처럼 enp0s3 인터페이스에는 다음 IP 주소가 할당되어 있었다.
10.0.2.15
이후 Ubuntu 내부의 웹 브라우저를 실행하여 다음 주소로 접속하였다.
http://10.0.2.15/dashboard
정상적으로 설치가 완료되었다면 OpenStack Horizon의 로그인 화면이 나타난다.
로그인 화면에서 DevStack 설치 시 local.conf에 설정했던 관리자 계정을 사용하였다.
User Name : admin
Password : local.conf에서 설정한 비밀번호
로그인에 성공하면 Horizon 대시보드에서 Compute, Network, Volume 등 OpenStack의 주요 기능을 웹 인터페이스를 통해 확인할 수 있다.
이를 통해 DevStack 설치가 완료되었으며, Horizon을 통해 OpenStack 환경에 정상적으로 접근할 수 있음을 확인하였다.
(8). 설치를 마치며
VirtualBox에 Ubuntu 24.04 가상 머신을 생성하고 그 위에 DevStack을 설치하여 OpenStack 실습 환경을 구축해 보았다.
DevStack 설치 과정 자체는 stack.sh를 실행하면 대부분 자동으로 진행되지만, 실제로 진행해 보니 내 pc 사양을 확실하게 파악한 뒤 VirtualBox로 vm의 네트워크 설정과 IP 주소, 시스템 자원 등을 이해하며 제대로 설정해두는 것이 중요했다.
이번 설치를 통해 단순히 OpenStack의 개념을 공부하는 것에서 그치지 않고, DevStack을 이용해 직접 OpenStack 환경을 구축하는 전체적인 흐름을 경험할 수 있었다.
다음에는 구축한 DevStack 환경에서 Horizon 대시보드를 사용하고, Nova를 이용한 인스턴스 생성과 Neutron 네트워크 구성을 직접 실습해 본 뒤 기록을 남겨보고 싶다.



