---
title: "OpenStack 개발을 위한 DevStack: 빠르고 유연한 환경 구축 안내"
description: "DevStack은 OpenStack 개발·테스트 환경을 빠르게 구축할 수 있는 스크립트 모음으로, 단일 머신에 핵심 서비스(Keystone, Nova, Glance, Neutron, Cinder, Horizon)를 자동 설치·구성한다. local.conf 파일을 통해 비밀번호·네트워크 등 설정을 커스터마이징할 수 있으며, 최소 4 GB RAM(권장 8 GB)·40 GB 디스크가 필요하다. 설치·시작·제거 명령이 간단하고, 개발·학습·PoC·CI/CD에 적합하지만 보안·성능·확장성 문제로 프로덕션에는 부적합하다. 또한 TripleO·Kolla‑Ansible·OpenStack‑Ansible 등과 비교했을 때 복잡도가 낮고 사용 목적이 명확히 개발·테스트임을 강조한다."
date: "2025-11-27"
last_modified: "2026-08-06T00:36:00.000Z"
type: "Post"
tags:
  - "openstack"
  - "install"
categories:
  - "📗 Docs"
series:
  - "오픈스택 운영"
canonical_url: "https://blog.pieroot.xyz/devstack-openstack"
markdown_url: "https://blog.pieroot.xyz/devstack-openstack.md"
---

# OpenStack 개발을 위한 DevStack: 빠르고 유연한 환경 구축 안내

DevStack은 OpenStack 개발·테스트 환경을 빠르게 구축할 수 있는 스크립트 모음으로, 단일 머신에 핵심 서비스(Keystone, Nova, Glance, Neutron, Cinder, Horizon)를 자동 설치·구성한다. local.conf 파일을 통해 비밀번호·네트워크 등 설정을 커스터마이징할 수 있으며, 최소 4 GB RAM(권장 8 GB)·40 GB 디스크가 필요하다. 설치·시작·제거 명령이 간단하고, 개발·학습·PoC·CI/CD에 적합하지만 보안·성능·확장성 문제로 프로덕션에는 부적합하다. 또한 TripleO·Kolla‑Ansible·OpenStack‑Ansible 등과 비교했을 때 복잡도가 낮고 사용 목적이 명확히 개발·테스트임을 강조한다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=fe4f0e36-5032-4418-afde-0979cf928c5b&kind=s3&pageId=2be067c0-15d0-8009-9814-d6570bee58af&source=block&blockId=2bf067c0-15d0-802e-a396-c07d82861292)

## DevStack이란 무엇인가?

**DevStack은 OpenStack 개발 환경을 빠르게 구축할 수 있도록 도와주는 스크립트 모음입니다.**

OpenStack 개발자들이 테스트 및 개발 목적으로 사용할 수 있는 간단하고 빠른 설치 도구로, 복잡한 OpenStack 환경을 단일 머신에 쉽게 배포할 수 있습니다.

### DevStack의 주요 특징

> **빠른 설치:** 단일 스크립트 실행으로 OpenStack 환경을 몇 분 내에 구축할 수 있습니다.
> **개발 및 테스트 목적:** 프로덕션 환경이 아닌 개발과 테스트를 위해 설계되었습니다.
> **자동화된 구성:** 필요한 모든 OpenStack 서비스를 자동으로 설치하고 구성합니다.
> **유연한 커스터마이징:** local.conf 파일을 통해 설치할 서비스와 구성을 쉽게 조정할 수 있습니다.
> **최신 코드 사용:** OpenStack의 최신 개발 버전을 Git 저장소에서 직접 가져와 사용합니다.

### DevStack의 주요 구성 요소

#### 1. 핵심 OpenStack 서비스

DevStack은 다음과 같은 OpenStack의 핵심 서비스들을 설치합니다:

- **Keystone:** 인증 및 서비스 카탈로그

- **Nova:** 컴퓨팅(VM) 서비스

- **Glance:** 이미지 서비스

- **Neutron:** 네트워킹 서비스

- **Cinder:** 블록 스토리지 서비스

- **Horizon:** 대시보드 웹 인터페이스

#### 2. `stack.sh` 스크립트

DevStack의 메인 설치 스크립트로, 모든 설치 과정을 자동화합니다. 이 스크립트는 의존성 패키지 설치, 소스 코드 다운로드, 데이터베이스 설정, 서비스 구성 및 시작을 담당합니다.

#### 3. local.conf 파일

DevStack의 동작을 제어하는 구성 파일입니다. 사용자는 이 파일을 통해 설치할 서비스, 비밀번호, 네트워크 설정 등을 지정할 수 있습니다.

### DevStack 설치 방법

#### 시스템 요구사항

- Ubuntu, Fedora, CentOS 등의 Linux 배포판

- 최소 4GB RAM (8GB 권장)

- 2개 이상의 CPU 코어

- 40GB 이상의 디스크 공간

#### 기본 설치 단계

1. Git 설치 및 DevStack 저장소 클론

1. stack 사용자 생성 (보안을 위해 root로 실행하지 않음)

1. local.conf 파일 생성 혹은 복사 및 구성
  - **local.conf 파일 예시 내용**
    ```toml
    # Sample ``local.conf`` for user-configurable variables in ``stack.sh``
    
    # NOTE: Copy this file to the root DevStack directory for it to work properly.
    
    # ``local.conf`` is a user-maintained settings file that is sourced from ``stackrc``.
    # This gives it the ability to override any variables set in ``stackrc``.
    # Also, most of the settings in ``stack.sh`` are written to only be set if no
    # value has already been set; this lets ``local.conf`` effectively override the
    # default values.
    
    # This is a collection of some of the settings we have found to be useful
    # in our DevStack development environments. Additional settings are described
    # in https://docs.openstack.org/devstack/latest/configuration.html#local-conf
    # These should be considered as samples and are unsupported DevStack code.
    
    # The ``localrc`` section replaces the old ``localrc`` configuration file.
    # Note that if ``localrc`` is present it will be used in favor of this section.
    [[local|localrc]]
    
    # Minimal Contents
    # ----------------
    
    # While ``stack.sh`` is happy to run without ``localrc``, devlife is better when
    # there are a few minimal variables set:
    
    # If the ``*_PASSWORD`` variables are not set here you will be prompted to enter
    # values for them by ``stack.sh``and they will be added to ``local.conf``.
    ADMIN_PASSWORD=<CHANGE_ADMIN_PASSWORD>
    DATABASE_PASSWORD=<CHANGE_DATABASE_PASSWORD>
    RABBIT_PASSWORD=<CHANGE_RABBIT_PASSWORD>
    SERVICE_PASSWORD=$ADMIN_PASSWORD
    
    # ``HOST_IP`` and ``HOST_IPV6`` should be set manually for best results if
    # the NIC configuration of the host is unusual, i.e. ``eth1`` has the default
    # route but ``eth0`` is the public interface.  They are auto-detected in
    # ``stack.sh`` but often is indeterminate on later runs due to the IP moving
    # from an Ethernet interface to a bridge on the host. Setting it here also
    # makes it available for ``openrc`` to include when setting ``OS_AUTH_URL``.
    # Neither is set by default.
    #HOST_IP=w.x.y.z
    #HOST_IPV6=2001:db8::7
    
    
    # Logging
    # -------
    
    # By default ``stack.sh`` output only goes to the terminal where it runs.  It can
    # be configured to additionally log to a file by setting ``LOGFILE`` to the full
    # path of the destination log file.  A timestamp will be appended to the given name.
    LOGFILE=$DEST/logs/stack.sh.log
    
    # Old log files are automatically removed after 2 days to keep things neat.  Change
    # the number of days by setting ``LOGDAYS``.
    LOGDAYS=2
    
    # Nova logs will be colorized if ``SYSLOG`` is not set; turn this off by setting
    # ``LOG_COLOR`` false.
    #LOG_COLOR=False
    
    
    # Using milestone-proposed branches
    # ---------------------------------
    
    # Uncomment these to grab the milestone-proposed branches from the
    # repos:
    #CINDER_BRANCH=milestone-proposed
    #GLANCE_BRANCH=milestone-proposed
    #HORIZON_BRANCH=milestone-proposed
    #KEYSTONE_BRANCH=milestone-proposed
    #KEYSTONECLIENT_BRANCH=milestone-proposed
    #NOVA_BRANCH=milestone-proposed
    #NOVACLIENT_BRANCH=milestone-proposed
    #NEUTRON_BRANCH=milestone-proposed
    #SWIFT_BRANCH=milestone-proposed
    
    # Using git versions of clients
    # -----------------------------
    # By default clients are installed from pip.  See LIBS_FROM_GIT in
    # stackrc for details on getting clients from specific branches or
    # revisions.  e.g.
    # LIBS_FROM_GIT="python-ironicclient"
    # IRONICCLIENT_BRANCH=refs/changes/44/2.../1
    
    # Swift
    # -----
    
    # Swift is now used as the back-end for the S3-like object store. Setting the
    # hash value is required and you will be prompted for it if Swift is enabled
    # so just set it to something already:
    SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
    
    # For development purposes the default of 3 replicas is usually not required.
    # Set this to 1 to save some resources:
    SWIFT_REPLICAS=1
    
    # The data for Swift is stored by default in (``$DEST/data/swift``),
    # or (``$DATA_DIR/swift``) if ``DATA_DIR`` has been set, and can be
    # moved by setting ``SWIFT_DATA_DIR``. The directory will be created
    # if it does not exist.
    SWIFT_DATA_DIR=$DEST/data
    
    ```

1. [`stack.sh`](http://stack.sh/) 스크립트 실행

```bash
sudo apt-get update
sudo apt-get install git -y
git clone https://opendev.org/openstack/devstack
cd devstack

# local.conf 파일 생성 예시
cat > local.conf << EOF
[[local|localrc]]
ADMIN_PASSWORD=<CHANGE_ADMIN_PASSWORD>
DATABASE_PASSWORD=\$ADMIN_PASSWORD
RABBIT_PASSWORD=\$ADMIN_PASSWORD
SERVICE_PASSWORD=\$ADMIN_PASSWORD
EOF

# or local.conf 파일 복사
cp samples/local.conf local.conf

./stack.sh
```

![./stack.sh 를 실행 후 실제로 소스를 받아와서 하나하나 소스 빌드하는 것을 확인 할 수 있음](https://blog.pieroot.xyz/api/image-proxy?id=5d634838-788c-4378-8c4e-ef05ba5159bf&kind=s3&pageId=2be067c0-15d0-8009-9814-d6570bee58af&source=block&blockId=2be067c0-15d0-80ba-9075-c6de59727daa)

#### 배포를 위한 최소 설정 값

```toml
[[local|localrc]]
ADMIN_PASSWORD=<CHANGE_ADMIN_PASSWORD>
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
#IPV4_ADDRS_SAFE_TO_USE=172.31.1.0/24
#FLOATING_RANGE=192.168.20.0/25
#HOST_IP=10.3.4.5
```

이 설정 파일은 DevStack의 기본 동작을 제어하며, 특히 비밀번호와 네트워크 설정을 지정합니다. 주석 처리된 항목들은 필요에 따라 활성화하여 사용할 수 있습니다.

#### 설치 완료

![image](https://blog.pieroot.xyz/api/image-proxy?id=851b00db-393e-4799-bc03-86ac1e600500&kind=s3&pageId=2be067c0-15d0-8009-9814-d6570bee58af&source=block&blockId=2be067c0-15d0-809e-90a3-cfb838c0d515)

위 이미지와 같이 설치 완료 후 IP 주소 정보와 Dashboard(Horizon), Keystone의 URL 정보가 출력되면 설치가 완료된 것입니다.

![image](https://blog.pieroot.xyz/api/image-proxy?id=34aec5ad-45cf-4cc1-afd6-ac08d735cccf&kind=s3&pageId=2be067c0-15d0-8009-9814-d6570bee58af&source=block&blockId=2be067c0-15d0-806d-9637-c60fe9c50b58)

[http://192.168.188.120/dashboard](http://192.168.188.120/dashboard)에 접속하여 OpenStack을 사용할 수 있습니다.

### DevStack의 활용 사례

#### 1. OpenStack 개발

OpenStack 프로젝트에 기여하는 개발자들이 새로운 기능을 테스트하고 버그를 수정할 때 사용합니다.

#### 2. 학습 및 교육

OpenStack을 처음 접하는 사용자들이 실제 환경에서 다양한 기능을 실습하고 학습할 수 있습니다.

#### 3. 개념 증명 (PoC)

프로덕션 환경 구축 전에 OpenStack의 기능과 성능을 빠르게 테스트하고 검증할 수 있습니다.

#### 4. CI/CD 파이프라인

자동화된 테스트 환경의 일부로 사용되어 코드 변경사항을 지속적으로 검증합니다.

### DevStack 사용 시 주의사항

> **프로덕션 환경에 부적합**
> DevStack은 개발 및 테스트 목적으로만 설계되었습니다. 프로덕션 환경에서는 절대 사용하지 마세요.

- **데이터 보안:** 기본 비밀번호와 설정이 보안에 취약합니다.

- **성능:** 단일 노드에 모든 서비스가 실행되어 성능이 제한적입니다.

- **업그레이드:** 기존 설치를 업그레이드하는 것이 어렵고, 보통 재설치가 필요합니다.

- **리소스 소비:** 많은 시스템 리소스를 사용하므로 전용 머신이나 가상 머신 사용을 권장합니다.

### DevStack vs. 다른 OpenStack 배포 도구

#### TripleO

OpenStack으로 OpenStack을 배포하는 도구입니다. 대규모 엔터프라이즈 환경에 적합하지만 설정이 복잡합니다.

#### Kolla-Ansible

Docker 컨테이너 기반 배포 도구입니다. Ansible로 자동화되며, 설치와 업그레이드가 비교적 간단합니다.

#### OpenStack-Ansible

LXC 컨테이너 기반 배포 도구입니다. 리소스 효율적이며 베어메탈 환경에서 효과적입니다.

### 기본 DevStack 명령어

```bash
# DevStack 시작
./stack.sh

# DevStack 중지
./unstack.sh

# DevStack 완전 제거 (데이터베이스 포함)
./clean.sh

# 특정 서비스 재시작
sudo systemctl restart devstack@n-api.service

# 로그 확인
sudo journalctl -xeu devstack@* -f
```

### 결론

DevStack은 OpenStack 생태계에서 매우 중요한 도구로, 개발자와 학습자가 빠르게 OpenStack 환경을 구축하고 실험할 수 있게 해줍니다. 프로덕션 환경에는 적합하지 않지만, 개발, 테스트, 학습 목적으로는 최고의 선택입니다.

OpenStack을 처음 시작하거나 새로운 기능을 개발하고 있다면, DevStack으로 시작하는 것을 강력히 추천합니다. 단 몇 분 만에 완전히 작동하는 OpenStack 환경을 갖출 수 있습니다.

### 참고 자료

- 공식 DevStack 문서: [https://docs.openstack.org/devstack/latest/](https://docs.openstack.org/devstack/latest/)

- DevStack GitHub 저장소: [https://opendev.org/openstack/devstack](https://opendev.org/openstack/devstack)

- OpenStack 공식 웹사이트: [https://www.openstack.org/](https://www.openstack.org/)
