[Openstack] 오픈스택 설치 (Ubuntu 22.04, Vmware fusion, Mac)
최신 Mac 환경(Apple Silicon)에서 VMware와 Ubuntu로 OpenStack 설치하기
OpenStack 설치, 과거와 현재
과거 OpenStack을 학습하기 위해서는 VirtualBox와 같은 가상화 도구에 여러 개의 네트워크 인터페이스를 설정한 Ubuntu 12.04 가상 머신을 만드는 것이 일반적인 시작이었습니다. 당시에는 VBoxManage 명령어로 vboxnet0(Public), vboxnet1(Private) 같은 Host-Only 네트워크를 생성하고, 가상 머신에 NAT, Host-Only 인터페이스들을 할당했습니다. 이후 ifupdown 시스템을 통해 /etc/network/interfaces 파일을 직접 수정하여 고정 IP를 설정하는 방식이 사용되었습니다.
이러한 접근 방식의 핵심은 외부 인터넷 접속, 내부 관리, 서비스 간 통신을 위한 네트워크를 분리하는 것이며, 이 개념은 지금도 유효합니다. 하지만 Apple Silicon(M1/M2/M3)과 최신 Ubuntu(22.04, 24.04 LTS) 환경에서는 설치 방법이 크게 발전했습니다.
이 가이드에서는 과거의 핵심 개념을 바탕으로, 최신 Mac 환경의 VMware Fusion과 Ubuntu Server LTS 버전을 사용하여 OpenStack을 설치하는 최신 방법을 단계별로 안내합니다.
1단계: 가상 환경 준비 (VMware Fusion)
샌드박스 환경을 구축하기 위해 모든 OpenStack 서비스를 실행할 단일 가상 머신을 생성합니다.
1. 가상 머신 생성 및 사양 설정
최신 Mac의 VMware Fusion에서 새 가상 머신을 생성합니다.
- 운영체제 이미지: ARM 아키텍처(aarch64)용 Ubuntu Server 최신 LTS 이미지를 다운로드하여 사용해야 합니다. (예: ubuntu-24.04-live-server-arm64.iso)
- 자원 할당 (권장):
- CPU: 4 vCPU 이상
- RAM: 8 GB 이상 (최소 2GB로도 가능하지만, 여러 서비스를 실행하려면 8GB 이상을 권장합니다.)
- Hard Disk: 50 GB 이상 (최소 20GB)
2. 네트워크 인터페이스 설정
OpenStack은 여러 네트워크 대역을 사용하므로, 최소 3개의 네트워크 어댑터를 설정합니다.
Preferences 설정으로 들어가서 public network(host-only, management), private network(host-only)를 생성합니다.
Name: public network
Type: Custom
Subnet IP: 172.16.0.0
Subnet Mask: 255.255.0.0
Name: private network
Type: Custom
Subnet IP: 10.0.0.0
Subnet Mask: 255.0.0.0
리눅스 가상머신 설정에 들어가서 네트워크 인터페이스를 추가하고 설정한다
- 1 번째 인터페이스 (NAT): 외부 인터넷과 연결하여 패키지를 다운로드하는 용도입니다. VMware 설정에서 '인터넷 공유(NAT)'로 설정합니다.
- 2,3 번째 인터페이스 (Host-Only / Bridged): OpenStack 서비스의 관리 및 Public 네트워크로 사용됩니다. '호스트 전용' 또는 'Wi-Fi(브리지)'로 설정하여 Mac과 통신할 수 있는 별도의 IP 대역을 할당합니다.
이와 같이 네트워크 어답터를 설정하고, 첫번쨰 어답터(NAT)는 share with my mac으로 설정한다.
3. Ubuntu 서버 설치
생성한 VM을 시작하여 Ubuntu Server 설치를 진행합니다.
- 설치 과정에서 지역, 키보드 등을 설정합니다.
- 사용자 설정 시, 이 가이드의 예시와 같이 사용자 이름과 비밀번호를 openstack으로 생성하면 따라오기 편리합니다.
- 소프트웨어 선택에서 SSH Server를 설치하면 원격 접속에 용이합니다.
설치가 완료되면 openstack 사용자로 로그인합니다.
2단계: Ubuntu 서버 기본 설정
1. 시스템 업데이트
가장 먼저 패키지 목록을 최신화하고 시스템을 업그레이드합니다.
sudo apt update
sudo apt upgrade -y
2. 필수 패키지 설치
OpenStack 클라이언트와 add-apt-repository 명령어를 위한 기본 패키지를 설치합니다.
sudo apt install -y python3-openstackclient software-properties-common

3. 네트워크 고정 IP 설정 (Netplan)
최신 Ubuntu는 netplan을 사용하여 네트워크를 관리합니다. /etc/netplan/ 디렉토리의 설정 파일을 수정하여 고정 IP를 할당합니다.
ip addr 명령을 통해 자신의 네트워크 인터페이스 카드 이름을 확인합니다
cloud-init 비활성화: 클라우드 환경이 아니므로, 재부팅 시 cloud-init이 네트워크 설정을 덮어쓰지 않도록 비활성화합니다.
sudo touch /etc/cloud/cloud-init.disabled
netplan 설정 파일 수정:
# /etc/netplan/50-cloud-init.yaml (파일 이름은 다를 수 있음)
network:
ethernets:
ens160:
dhcp4: true
ens192:
dhcp4: false
addresses:
- 172.16.0.1/16
ens224:
dhcp4: false
optional: true
version: 2
renderer: networkd
설정 적용:
sudo netplan apply
sudo vi /etc/hosts 에서 alias ip를 설정할 수 있다.
controller를 management ip로 해놓으면 편리하다
3단계: OpenStack 설치
1. NTP(시간 동기화) 설정
클라우드 환경에서 노드 간 시간 동기화는 매우 중요합니다. chrony를 설치하고 활성화합니다.
sudo apt install -y chrony
sudo systemctl enable --now chrony
동기화 상태를 확인하고, 필요시 /etc/chrony/chrony.conf 파일에서 서버를 수정할 수 있습니다.
chronyc sources
sudo systemctl restart chrony

2. 데이터베이스 설정 (MariaDB)
OpenStack 서비스들은 상태 저장을 위해 데이터베이스를 사용합니다. MariaDB를 설치하고 설정합니다.
MariaDB 및 관련 패키지 설치:
sudo apt install -y mariadb-server python3-pymysql

MariaDB 설정: 컨트롤러 노드의 관리 IP에서만 접속을 허용하도록 설정 파일을 생성합니다.아래 내용을 작성합니다. bind-address는 컨트롤러 노드의 관리 IP(netplan에서 설정한 고정 IP 대역)로 변경하세요.설정 후 MariaDB를 재시작합니다.
sudo systemctl restart mariadb
[mysqld]
bind-address = 172.16.0.254
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
sudo vi /etc/mysql/mariadb.conf.d/99-openstack.cnf
MariaDB 보안 설정:안내에 따라 아래와 같이 설정합니다.
- Enter current password for root (enter for none): Enter
- Switch to unix_socket authentication [Y/n]: n
- Set root password? [Y/n]: y, 원하는 비밀번호(예: openstack) 입력
- Remove anonymous users? [Y/n]: y (권장)
- Disallow root login remotely? [Y/n]: n (OpenStack은 원격 DB 접속이 필요)
- Remove test database and access to it? [Y/n]: y (권장)
- Reload privilege tables now? [Y/n]: y (권장)
sudo mysql_secure_installation
OpenStack용 데이터베이스 및 계정 생성:아래 SQL 명령어를 실행하여 각 서비스에 필요한 데이터베이스와 사용자를 생성합니다.
sudo mysql -u root -p
-- 데이터베이스 생성
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;
CREATE DATABASE placement;
-- nova 사용자 생성 및 권한 부여
CREATE USER 'nova'@'localhost' IDENTIFIED BY 'openstack';
CREATE USER 'nova'@'%' IDENTIFIED BY 'openstack';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%';
-- placement 사용자 생성 및 권한 부여
CREATE USER 'placement'@'localhost' IDENTIFIED BY 'placementpass';
CREATE USER 'placement'@'%' IDENTIFIED BY 'placementpass';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost';
GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%';
FLUSH PRIVILEGES;
EXIT;
3. OpenStack 핵심 서비스 설치
Ubuntu는 cloud-archive 저장소를 통해 최신 OpenStack 패키지를 제공합니다.
OpenStack 패키지 저장소 추가: (2025년 기준 최신 LTS인 Caracal 릴리즈 예시)
sudo add-apt-repository cloud-archive:caracal
sudo apt update
핵심 서비스 설치: 필요한 서비스를 선택하여 설치합니다.
sudo apt install -y \
nova-compute \
glance \
neutron-linuxbridge-agent \
placement-api \
keystone \
mariadb-server \
rabbitmq-server \
memcached \
etcd

4단계: OpenStack 서비스 설정
각 서비스는 /etc/<서비스명>/<설정파일>.conf 경로에서 설정을 관리합니다. 데이터베이스 연결 설정이 대표적입니다.
예를 들어 /etc/nova/nova.conf 파일에 데이터베이스 연결 정보를 아래와 같이 추가합니다.
[api_database]
connection = mysql+pymysql://nova:openstack@172.16.0.254/nova_api
[database]
connection = mysql+pymysql://nova:openstack@172.16.0.254/nova
[placement_database]
connection = mysql+pymysql://placement:placementpass@172.16.0.254/placement
IP, 계정, 비밀번호는 실제 환경에 맞게 수정해야 합니다. 다른 서비스(Glance, Neutron, Keystone 등)도 공식 가이드에 따라 유사하게 설정합니다.
5단계: 설치 자동화 도구 (옵션)
수동 설치가 복잡하다면 자동화 도구 사용을 고려해볼 수 있습니다.
- DevStack: 개발/테스트용 단일 노드 설치에 적합합니다.
- MicroStack: 빠른 단일 노드 설치를 지원합니다.
- Kolla-Ansible: 컨테이너 기반으로 프로덕션 환경 구축에 적합합니다.