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.