DevStack은 OpenStack의 핵심 컴포넌트를 빠르게 설치하고 실습할 수 있도록 돕는 스크립트 기반 도구입니다
📌 Swap 설정 (메모리 부족 방지)
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
📌 stack 계정 생성 및 권한 부여
DevStack은 기본적으로 stack이라는 사용자 계정에서 설치 및 실행되도록 설계되어 있습니다.
# 시스템 패키지 정보 최신화
sudo apt update
# gcc 설치 (DevStack 설치 시 컴파일 필요)
sudo apt install -y gcc
# gcc 실행 권한 부여 (stack 사용자도 사용 가능하도록 설정)
sudo chmod o+x $(which gcc)
# /opt/stack을 홈 디렉터리로 갖는 stack 사용자 생성
# -s: 로그인 셸 지정, -m: 홈 디렉터리 자동 생성
sudo useradd -s /bin/bash -d /opt/stack -m stack
# stack 사용자에게 /opt/stack 디렉토리 소유권 부여
sudo chown stack:stack -R /opt/stack/
# stack 사용자에게 비밀번호 없이 sudo 가능하도록 설정
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
# /opt/stack 디렉토리 권한 수정
sudo chmod 755 /opt/stack
# stack 사용자로 전환
sudo su - stack
sudo apt-get update
sudo apt install git -y
git clone https://opendev.org/openstack/devstack
cd devstack
git checkout stable/2024.1 # 최신 안정 버전 선택
DevStack을 VM에 설치할 경우, 외부와 통신 가능한 네트워크 인터페이스가 하나뿐인 경우가 많습니다. 이럴 때는 내부 브릿지 인터페이스를 구성해 가상의 Public 네트워크를 설정해주는 방식으로 DevStack 환경을 구축합니다.
📌 bridge-utils 설치 및 브릿지 생성
# 브릿지 네트워크 생성을 위한 도구 설치
sudo apt install bridge-utils net-tools
# mybr0라는 이름의 브릿지 인터페이스 생성
sudo brctl addbr mybr0
# 브릿지에 IP 할당 및 활성화
sudo ifconfig mybr0 192.168.100.1 netmask 255.255.255.0 up
📌 NAT 및 패킷 포워딩 설정
# 포워딩 체인에 모든 패킷 허용 (인스턴스가 외부와 통신할 수 있도록 설정)
sudo iptables -I FORWARD -j ACCEPT
# 192.168.100.0/24 대역의 트래픽을 NAT 처리하여 외부로 나갈 수 있도록 설정
sudo iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
📌 루프백 인터페이스에 공인 IP 바인딩
DevStack은 기본적으로 Horizon과 API 엔드포인트를 호스트의 IP 주소에 바인딩합니다. 하지만 일반적으로 클라우드 인스턴스의 IP는 사설 IP이기 때문에 외부에서 접근이 불가능합니다. 이를 해결하기 위해 루프백 인터페이스(lo)에 공인 IP를 바인딩하여 외부에서 접근 가능하게 구성합니다.
# 루프백(lo) 인터페이스에 공인 IP를 바인딩하여 외부 접근 가능하게 설정
# - <공인_IP>: 이 인스턴스에 SSH 접속할 때 사용한 실제 공인 IP
# - /32: 단일 IP만 지정
sudo ip addr add <공인_IP>/32 dev lo
local.conf는 DevStack 설치 시 어떤 컴포넌트를 설치할지, 네트워크 구성은 어떻게 할지 등 전체 동작 방식을 정의하는 설정 파일입니다.
📌 설정 위치
cd /opt/stack/devstack
vi local.conf
📌 설정 내용
[[local|localrc]]
HOST_IP=<공인_IP>
FORCE=yes
ADMIN_PASSWORD=admin
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
disable_service etcd3
// Neutron 네트워크 설정
Q_USE_SECGROUP=True
FLOATING_RANGE="192.168.100.0/24"
IPV4_ADDRS_SAFE_TO_USE="10.0.0.0/22"
Q_FLOATING_ALLOCATION_POOL=start=192.168.100.50,end=192.168.100.250
PUBLIC_NETWORK_GATEWAY="192.168.100.1"
PUBLIC_INTERFACE=mybr0
// Open vSwitch 설정
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
# 현재 위치 확인 (DevStack 설치 디렉토리인지 확인)
pwd
# 출력 결과: /opt/stack/devstack
# DevStack 설치 시작 (local.conf를 기반으로 OpenStack 구성 요소 설치)
./stack.sh
✨ 설치가 완료되면 Horizon 대시보드는 브라우저에서 다음 주소로 접근 가능합니다
http://<공인_IP>/
DevStack 설치 중 중단되거나 실패했을 경우, 다음 명령으로 정리 후 재설치합니다
./clean.sh # 설치된 DevStack 제거
./stack.sh # 재설치