DevStack의 개념, 아키텍처, 설치, 설정, 지원 서비스, 네트워킹, 문제 해결, 활용 사례와 베스트 프랙티스를 정리한 완전 가이드입니다.
OpenStack은 수십 개 서비스가 맞물려 동작하는 강력한 클라우드 플랫폼입니다. 그러나 개발이나 테스트 목적으로 환경을 빠르게 띄우려면 프로덕션 설치처럼 복잡한 준비가 필요하지 않아야 합니다. DevStack은 그런 목적을 위해 OpenStack 커뮤니티가 제공하는 공식 배포 도구입니다.
DevStack이란?
DevStack은 단일 머신에 OpenStack 서비스를 자동으로 설치하고 구성하기 위한 스크립트 모음입니다. 개발, 테스트, 학습, 개념 검증, 기능 검증, CI/CD 환경에서 빠르게 반복 가능한 OpenStack 배포를 만드는 데 사용되며, 프로덕션 배포용으로는 설계되지 않았습니다.

DevStack이 필요한 이유
Database services
Message queues
Identity services
Compute services
Networking
Storage
APIs
Authentication
OpenStack을 수동으로 설치하면 데이터베이스, 메시지 큐, 아이덴티티, 컴퓨트, 네트워킹, 스토리지, API, 인증까지 수많은 설정을 직접 맞춰야 합니다. DevStack은 이 과정을 자동화해 몇 가지 명령만으로 환경을 구성할 수 있게 해 줍니다.
DevStack 아키텍처
DevStack Host
Keystone
Nova
Neutron
Glance
Cinder
Horizon
MariaDB / RabbitMQ
대부분의 서비스는 단일 서버에서 실행됩니다.
- 개발용으로 단순하고 빠른 배포를 제공합니다.
- 서비스 설치와 초기 구성을 자동화합니다.
- 실험과 테스트에 적합한 일관된 환경을 만듭니다.
DevStack의 주요 목적
| 대상 | 주요 용도 |
| OpenStack 개발자 | 코드 변경사항 테스트 |
| QA 팀 | 새 릴리스 검증 |
| 학생 | OpenStack 아키텍처 학습 |
| 엔지니어 | PoC 환경 구축 |
| CI/CD 파이프라인 | 자동화 테스트 환경 |
DevStack은 어떻게 동작하는가?
| 스크립트 | 역할 |
| stack.sh | OpenStack 설치 |
| unstack.sh | 서비스 중지 |
| clean.sh | 환경 정리 |
| rejoin-stack.sh | 서비스 세션 재연결 |
| worlddump.py | 진단 정보 수집 |
설치 워크플로
Linux 설치
↓
DevStack 저장소 복제
↓
local.conf 구성
↓
stack.sh 실행
↓
서비스 설치
↓
Horizon 대시보드 접근
지원 운영 체제와 하드웨어 요구사항
| 지원 배포판 | 비고 |
| Ubuntu 22.04 LTS | 가장 흔한 환경 |
| Ubuntu 24.04 LTS | 최신 장기 지원 배포판 |
| Rocky Linux | 엔터프라이즈 계열 |
| CentOS Stream | 개발/테스트에 사용 가능 |
| Debian | 가벼운 실험 환경에 적합 |
| 리소스 | 최소 랩 | 권장 풀 테스트 |
| CPU | 4코어 | 8코어 이상 |
| 메모리 | 8GB | 16~32GB |
| 저장소 | 50GB SSD | 100GB 이상 SSD |
| 가상화 | 인터넷 연결 | KVM 지원 |
DevStack 설치하기
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo passwd stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
git clone https://opendev.org/openstack/devstack
cd devstack
./stack.sh
local.conf 파일
[[local|localrc]]
ADMIN_PASSWORD=SecretPass
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
HOST_IP=192.168.1.100
서비스 활성화와 비활성화
enable_service heat
enable_service magnum
enable_service swift
disable_service cinder
기본 OpenStack 서비스
| 서비스 | 기능 |
| Keystone | 아이덴티티 |
| Nova | 컴퓨트 |
| Neutron | 네트워킹 |
| Glance | 이미지 |
| Horizon | 대시보드 |
| Placement | 리소스 추적 |
| Cinder | 블록 스토리지 |
| RabbitMQ | 메시징 |
| MariaDB | 데이터베이스 |
Networking in DevStack
Public Network
↓
Router
↓
Private Network
↓
Instances
- Networks
- Subnets
- Routers
- Floating IPs
Horizon 접근
http://SERVER_IP/dashboard
예시:
http://192.168.1.100/dashboard
기본 사용자: admin
비밀번호: local.conf의 ADMIN_PASSWORD
서비스 관리
systemctl status devstack@...
sudo systemctl list-units
중지, 재시작, 정리
./unstack.sh - 모든 OpenStack 서비스를 중지합니다.
./rejoin-stack.sh - 터미널 연결이 끊긴 뒤 서비스 세션에 다시 연결할 때 유용합니다.
./clean.sh - 데이터베이스, 네트워크, OpenStack 서비스, 임시 파일을 제거합니다.
주요 사용 사례
- OpenStack 학습 랩: 학생이 인스턴스, 네트워크, 볼륨을 생성하며 구조를 익힙니다.
- OpenStack 개발: Nova, Neutron, Horizon, API 변경을 빠르게 검증합니다.
- CI/CD 테스트: 프로젝트가 자동화 파이프라인에서 DevStack을 배포해 검증합니다.
- 플러그인 개발: Horizon 플러그인, Neutron 확장, Cinder 드라이버, Nova 통합을 시험합니다.
멀티 노드 DevStack
Controller Node
↓
Compute Node 1
↓
Compute Node 2
고급 테스트용으로만 사용합니다.
DevStack vs Production OpenStack
| Feature | DevStack | Production |
| Purpose | Development | Production |
| High Availability | No | Yes |
| Security Hardening | Minimal | Extensive |
| Multi-Node | Limited | Full Support |
| Monitoring | Basic | Enterprise Grade |
| Reliability | Testing Only | Mission Critical |
DevStack의 장점
- 빠른 배포
- 공식 OpenStack 프로젝트
- 최신 OpenStack 릴리스 지원
- 학습에 적합
- 개발에 이상적
- 자동 구성
- 서비스 활성화/비활성화가 쉬움
- 강한 커뮤니티 지원
DevStack의 한계
- 프로덕션 준비가 되어 있지 않습니다.
- 보안 하드닝이 제한적입니다.
- 단일 노드 중심입니다.
- 빈번한 업데이트로 동작이 바뀔 수 있습니다.
- 상당한 리소스를 소비합니다.
- 장기 운영용으로 설계되지 않았습니다.
문제 해결
| 문제 | 확인 사항 | 로그/명령 |
| 설치 실패 | 로그 확인 | /opt/stack/logs/ |
| RabbitMQ 문제 | 서비스 상태 | systemctl status rabbitmq-server |
| 데이터베이스 문제 | MariaDB 상태 | systemctl status mariadb |
| Horizon 미노출 | Apache 상태 | systemctl status apache2 / httpd |
| VM 생성 실패 | Nova 로그 | /opt/stack/logs/n-cpu.log |
베스트 프랙티스
- VM 내부에서 실행할 경우 Nested Virtualization을 활성화합니다.
- 편안한 사용을 위해 최소 16GB RAM을 확보합니다.
- OpenStack 서비스의 I/O 특성상 SSD 저장소를 사용합니다.
- VMware, Proxmox, KVM 같은 플랫폼에서는 주요 변경 전에 스냅샷을 찍습니다.
- 학습, 개발, 테스트, CI/CD 용도로 DevStack 환경을 분리해서 운영합니다.
릴리스 테스트와 활용
OpenStack 개발자들은 Antelope, Bobcat, Caracal, Dalmatian, Epoxy 같은 릴리스를 검증할 때 DevStack을 자주 사용합니다. 이 도구는 OpenStack 개발 생태계에서 핵심적인 위치를 차지하며, 새로운 기능과 변경 사항을 빠르게 검증할 수 있는 표준 실험 환경에 가깝습니다.
결론
DevStack은 개발, 테스트, 학습 환경에서 OpenStack을 배포하는 가장 널리 사용되는 공식 도구입니다. Keystone, Nova, Neutron, Glance, Cinder, Horizon 같은 핵심 서비스를 자동으로 설치하고 구성해 OpenStack 실험 환경 구축의 복잡성을 크게 줄여 줍니다. 프로덕션 용도는 아니지만, 개발자, 시스템 엔지니어, 학생, QA 팀에게 빠르고 유연하며 반복 가능한 OpenStack 환경을 제공한다는 점에서 매우 중요한 도구입니다.