Home

OpenStack Reference Guide

Comprehensive guide to the open-source cloud platform

OpenStack Deployment Options

OpenStack can be deployed in various ways depending on your requirements, expertise, and infrastructure. This guide covers popular deployment methods, from quick testing environments to production-grade installations.

Deployment Methods Comparison

Method Complexity Production Ready Best For
DevStack Low No Development, testing, learning
PackStack Low-Medium POC only Quick demos, proof of concept
MicroStack Low Limited Edge deployments, small installations
Kolla-Ansible Medium Yes Production deployments, containerized
TripleO High Yes Large-scale, Red Hat ecosystem
Juju Charms Medium Yes Ubuntu/Canonical ecosystem
OpenStack-Ansible Medium-High Yes Flexible production deployments
Manual Installation Very High Yes Custom requirements, learning internals

Quick Start: DevStack

DevStack - Development Environment

DevStack deploys a complete OpenStack environment on a single machine using shell scripts. Perfect for developers and testing, but NOT suitable for production.

Requirements

Installation Steps

1. Clone DevStack repository
git clone https://opendev.org/openstack/devstack
2. Navigate to devstack directory
cd devstack
3. Create local.conf configuration file
cat > local.conf << EOF
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=\$ADMIN_PASSWORD
RABBIT_PASSWORD=\$ADMIN_PASSWORD
SERVICE_PASSWORD=\$ADMIN_PASSWORD

# Enable services
enable_service placement-api
enable_service placement-client

# Disable unnecessary services for faster deployment
disable_service tempest
disable_service horizon
EOF
4. Run the installation
./stack.sh

Installation takes 15-45 minutes depending on internet speed. Once complete, access Horizon at http://<your-ip>/dashboard with username admin and the password you set.

Production Deployment: Kolla-Ansible

Kolla-Ansible - Containerized Production Deployment

Kolla-Ansible deploys OpenStack services in Docker containers using Ansible playbooks. Offers excellent upgrade path and production-grade deployments with high availability support.

Architecture Requirements

Node Type Minimum Count Recommended Specs Purpose
Control Nodes 3 (for HA) 8 CPU, 16 GB RAM, 100 GB disk API services, database, message queue
Compute Nodes 2+ 16+ CPU, 64+ GB RAM, 500 GB disk Run VM instances
Network Nodes 2 (for HA) 4 CPU, 8 GB RAM, 50 GB disk Neutron L3, DHCP, metadata agents
Storage Nodes 3+ (for Ceph) 4 CPU, 16 GB RAM, multiple disks Ceph OSD, block storage
Deployment Node 1 4 CPU, 8 GB RAM, 50 GB disk Run Ansible playbooks

Network Planning

Critical: Plan Your Networks First

OpenStack requires multiple isolated networks. Plan these before installation:

  • Management Network: Internal OpenStack service communication (e.g., 192.168.1.0/24)
  • Tenant Network: VM-to-VM communication, usually VXLAN/GRE overlay (e.g., 10.0.0.0/8)
  • External Network: Public internet access and floating IPs (public IP range)
  • Storage Network: Backend storage traffic for Ceph/NFS (e.g., 172.16.0.0/24)
  • API Network: User-facing API endpoints (often same as management or external)

Kolla-Ansible Quick Start

1. Install dependencies on deployment node
sudo apt install python3-dev python3-pip git -y
2. Install Ansible and Kolla-Ansible
pip3 install ansible kolla-ansible
3. Create configuration directory
sudo mkdir -p /etc/kolla && sudo chown $USER:$USER /etc/kolla
4. Copy sample configurations
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
5. Copy inventory file
cp /usr/local/share/kolla-ansible/ansible/inventory/multinode /etc/kolla/inventory
6. Edit globals.yml configuration
# Key settings in /etc/kolla/globals.yml
kolla_base_distro: "ubuntu"
kolla_install_type: "source"
openstack_release: "zed"
kolla_internal_vip_address: "192.168.1.100"
network_interface: "eth0"
neutron_external_interface: "eth1"
enable_cinder: "yes"
enable_heat: "yes"
7. Generate passwords
kolla-genpwd
8. Bootstrap servers
kolla-ansible -i /etc/kolla/inventory bootstrap-servers
9. Pre-deployment checks
kolla-ansible -i /etc/kolla/inventory prechecks
10. Deploy OpenStack
kolla-ansible -i /etc/kolla/inventory deploy
11. Post-deployment setup
kolla-ansible -i /etc/kolla/inventory post-deploy

Commercial Distributions

Red Hat OpenStack Platform

Based on: TripleO deployment tool

Best for: Enterprise deployments requiring commercial support

Features:

  • Validated hardware compatibility
  • 24/7 enterprise support
  • Long-term maintenance (10+ years)
  • Integration with Red Hat ecosystem (Ceph, Ansible)

Ubuntu OpenStack (Charmed OpenStack)

Based on: Juju Charms

Best for: Organizations using Ubuntu ecosystem

Features:

  • Model-driven deployment
  • Easy scaling and updates
  • Ubuntu Advantage support
  • MAAS for bare metal provisioning

SUSE OpenStack Cloud

Based on: Crowbar/Chef or Kolla

Best for: SUSE Linux Enterprise environments

Features:

  • Enterprise support and SLAs
  • Integration with SUSE ecosystem
  • Automated deployment and lifecycle management

Mirantis OpenStack

Based on: Fuel deployment tool

Best for: Private cloud at scale

Features:

  • GUI-based deployment
  • Reference architectures
  • Professional services
  • Kubernetes integration

Deployment Best Practices

Pre-Deployment Planning

Critical Planning Steps

  1. Requirements Gathering: Capacity planning, workload analysis, compliance requirements
  2. Hardware Selection: Choose validated hardware, plan for growth (3-5 years)
  3. Network Design: Plan IP addressing, VLANs, bandwidth requirements
  4. Storage Architecture: Decide on Ceph, NFS, commercial SAN based on IOPS/capacity needs
  5. High Availability Strategy: Define RTO/RPO, design HA architecture
  6. Security Planning: Network segmentation, encryption, compliance (PCI, HIPAA)
  7. Monitoring Strategy: Select tools (Prometheus, Nagios), define SLAs
  8. Backup/DR Plan: Backup strategy for control plane and instances

Hardware Recommendations

Controller Nodes

Compute Nodes

Storage Nodes (Ceph)

Post-Deployment Tasks

Essential Post-Deployment Steps

  1. Create Initial Resources: Networks, subnets, routers, security groups
  2. Upload Images: Common OS images (Ubuntu, CentOS, Windows)
  3. Define Flavors: Instance types matching your workloads
  4. Configure Quotas: Set reasonable limits per project
  5. Setup Projects/Users: Organizational structure, RBAC
  6. Implement Monitoring: Deploy monitoring stack, configure alerts
  7. Backup Configuration: Database dumps, config files, playbooks
  8. Document Everything: Architecture diagrams, runbooks, escalation procedures
  9. Testing: Create test instances, verify HA failover, performance testing
  10. User Training: Train administrators and end users

Operational Considerations

Common Pitfalls to Avoid

Avoid These Mistakes

  • Inadequate Planning: Skipping network design leads to painful migrations later
  • Underestimating Complexity: OpenStack requires significant expertise to operate
  • Single Controller: Never run production with single controller—no HA
  • Mixing Workloads: Don't run controllers on compute nodes or storage on controllers
  • Ignoring Documentation: Official docs are comprehensive—read them
  • No Testing Environment: Always have staging/dev environment for testing
  • Poor Monitoring: You can't manage what you don't measure
  • Skipping Backups: Database corruption happens—have backups and test restores
  • DIY When Unnecessary: Consider commercial distributions if you lack expertise

Successful OpenStack deployment requires careful planning, adequate resources, and ongoing operational investment. Start small, learn, document everything, and scale as your expertise grows.