OpenStack Setup All in One

An all-in-one (AIO) OpenStack deployment runs every service—Keystone, Nova, Neutron, Glance, Cinder, Horizon—on a single server. This is ideal for learning, development, and testing. This guide uses DevStack on Ubuntu 22.04 to deploy OpenStack 2024.2 Dalmatian.

Prerequisites

Requirement Minimum
OS Ubuntu 22.04 LTS (fresh install)
RAM 8 GB (16 GB recommended)
Disk 60 GB free
CPU 4 cores
Network One NIC with internet access
User Non-root user with sudo

Step 1: Create the Stack User

DevStack must run as a non-root user with passwordless sudo:

sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo chmod +x /opt/stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo -u stack -i

Step 2: Clone DevStack

git clone https://opendev.org/openstack/devstack -b stable/2024.2
cd devstack

Step 3: Create local.conf

Create the DevStack configuration file:

cat > local.conf <<EOF
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret

HOST_IP=10.0.0.10

# Services
enable_service placement-api
enable_service neutron
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta

# Neutron ML2 with OVN
Q_AGENT=ovn
Q_ML2_PLUGIN_MECHANISM_DRIVERS=ovn
Q_ML2_TENANT_NETWORK_TYPE=geneve

# Cinder with LVM
enable_service c-vol c-api c-sch
CINDER_VOLUME_BACKEND=lvm

# Logging
LOGFILE=/opt/stack/logs/stack.sh.log
LOG_COLOR=True

# Versions
NOVA_BRANCH=stable/2024.2
GLANCE_BRANCH=stable/2024.2
KEYSTONE_BRANCH=stable/2024.2
NEUTRON_BRANCH=stable/2024.2
CINDER_BRANCH=stable/2024.2
EOF

Replace HOST_IP with your server's actual IP address.

Step 4: Run the Installer

./stack.sh

This takes 20–45 minutes depending on hardware and network speed. When complete, it prints the Horizon URL and credentials.

Step 5: Verify the Installation

Source the admin credentials and test:

source openrc admin admin
openstack service list
openstack network agent list
openstack compute service list

All services should show up and enabled.

Step 6: Access the Dashboard

Open Horizon in your browser:

http://10.0.0.10/dashboard
Username: admin
Password: secret

Step 7: Launch a Test Instance

Create a network and boot a VM to validate the deployment:

# Create network
openstack network create demo-net
openstack subnet create --network demo-net \
  --subnet-range 192.168.100.0/24 demo-subnet

# Create router
openstack router create demo-router
openstack router set --external-gateway public demo-router
openstack router add subnet demo-router demo-subnet

# Boot instance
openstack server create --flavor m1.tiny \
  --image cirros-0.6.2-x86_64-disk \
  --network demo-net \
  test-vm

openstack server list

Managing the AIO Deployment

Task Command
Restart all services cd /opt/stack/devstack && ./rejoin-stack.sh
Tear down completely cd /opt/stack/devstack && ./unstack.sh
Clean and rebuild cd /opt/stack/devstack && ./clean.sh && ./stack.sh
View logs journalctl -u devstack@* or /opt/stack/logs/

Troubleshooting

Issue Fix
stack.sh fails mid-run Check /opt/stack/logs/stack.sh.log for the error
Port 80 already in use Stop Apache: sudo systemctl stop apache2
Out of disk space DevStack needs 60 GB+; expand or use a larger disk
Neutron agents down Restart: sudo systemctl restart devstack@q-*

Limitations of All-in-One

AIO deployments are not suitable for production. Key limitations include:

  • No high availability (single point of failure)
  • Limited compute resources for VMs
  • Performance bottlenecks from shared CPU/RAM/disk
  • DevStack is not designed for persistence across reboots

For production, use deployment tools like Kolla-Ansible or OpenStack-Ansible.

Summary

DevStack provides the fastest path to a working OpenStack environment on a single machine. It is the standard tool for development and testing in the OpenStack community.