Skip to main content

Manual Installation

Updated Sep 15, 2023 ·

Overview

OpenStack can be installed manually in a virtual lab. This setup is simple to prepare and lets you experiment with VM sizing and networking before moving to physical servers.

  • Use three virtual machines
  • Separate traffic using three virtual networks
  • Install Linux manually on each node
  • Install OpenStack services step by step

Manual installation involves many steps and configuration edits. It may include over a hundred commands. While automation tools can simplify the process, doing it manually helps in understanding the service dependencies and see how components interact.

Host System Recommendation

For a smooth experience:

Host SpecificationRecommendedMinimum (Limited Performance)
RAM16 GB8 GB
CPU4 cores2 cores

Running the lab on 8 GB RAM is possible but performance will be constrained, especially when launching multiple instances.

Tools Used

VirtualBox

VirtualBox is a free hypervisor used to create and manage virtual machines for lab and testing environments.

  • Used to create and run the virtual machines
  • Available on Windows, macOS, and Linux

Other hypervisors such as Hyper-V, VMware, or KVM can also be used with minor configuration adjustments.

A few notes:

  • The compute node runs inside a VirtualBox VM.
  • QEMU is used as the hypervisor
  • KVM is not available inside this nested setup

QEMU is fine for learning and testing. It is not intended for production workloads. In real environments, compute nodes use KVM on physical servers.

Operating System

This lab uses Ubuntu Server 22.04.5 LTS, but other Linux distributions can also be used, including:

  • AlmaLinux
  • Rocky Linux
  • openSUSE

The primary difference between distributions is the package manager:

Distribution TypePackage Manager
Ubuntu / Debianapt
RHEL-based (AlmaLinux, Rocky)dnf or yum
openSUSEzypper

Most OpenStack configuration files and service concepts remain the same across distributions, although package names and file paths may differ slightly.

Lab Architecture

The lab uses three VMs to represent a small OpenStack environment.

NodeRolevCPUsRAMDisk
ControllerRuns core OpenStack services (Identity, Image, Networking, Dashboard, etc.)26 GB20 GB
ComputeRuns virtual machine instances (Nova compute service)14 GB10 GB
StorageProvides block storage (Cinder with LVM backend)14 GB20 GB

Diagram:

Resource Considerations

The values below are recommended for stable operation, but adjustments can be made depending on available hardware.

  • RAM can be reduced to 2 GB for Compute/Storage nodes if system resources are limited.
  • Controller node requires more RAM because it runs multiple services simultaneously.
  • Thin disk allocation can be enabled so disk space is consumed only as data is written.

On the Compute node:

  • Approximately 0.5 GB RAM is used by the operating system.
  • Each small test instance may consume around 0.5 GB RAM.
  • Less RAM means fewer instances can run concurrently.

On the Storage node:

  • Reducing RAM is possible but may impact storage performance.

Virtual Networks

Three virtual networks are used to separate traffic.

  1. Management Network

    • Used for management, tunnel, and storage traffic
    • Configured as Host Only network
    • VMs can talk with each other and with the host machine.
  2. Provider Network

    • Used for instance traffic
    • Configured as NAT Network
    • Allows instances to reach the outside network.
  3. Internet Network

    • Provides internet access to all nodes

    • Used for installing packages and updates

      info

      You can experiment with bridged networking if needed, but you may have to adjust IP addressing.

Storage Backend

The storage node uses LVM as the backend.

  • Simple to configure
  • Suitable for labs and testing

Production environments often use more advanced backends such as Ceph. For learning purposes, LVM keeps the setup simple and focused on OpenStack itself.

Neutron Networking Backend

Linux Bridge is easier to configure and suitable for a basic learning environment.

  • Linux Bridge agent is used
  • Open vSwitch can also be used in other setups

Installation Checklist

This guide provides a simplified checklist for installing OpenStack in virtual or bare metal environments.

Passwords

DescriptionParameterValue
SQL Database 'root' passwordMYSQL_ROOTopenstack
'admin' user passwordADMIN_PASSopenstack
Cinder database passwordCINDER_DBPASSopenstack
'cinder' user passwordCINDER_PASSopenstack
Horizon database passwordDASH_DBPASSopenstack
'demo' user passwordDEMO_PASSopenstack
Glance database passwordGLANCE_DBPASSopenstack
'glance' user passwordGLANCE_PASSopenstack
Keystone database passwordKEYSTONE_DBPASSopenstack
Metadata secretMETADATA_SECRETopenstack
Neutron database passwordNEUTRON_DBPASSopenstack
'neutron' user passwordNEUTRON_PASSopenstack
Nova database passwordNOVA_DBPASSopenstack
'nova' user passwordNOVA_PASSopenstack
'placement' user passwordPLACEMENT_PASSopenstack
RabbitMQ passwordRABBIT_PASSopenstack

Firewall and Common Ports

ServicePort
Horizon Dashboard (HTTP)80
SSL Enabled Services (HTTPS)443
Block Storage iSCSI Target3260
MariaDB3306
RabbitMQ5672
Cinder Endpoints8776
Nova Endpoints8774-8775, 8773
Nova VM Consoles5900-5999
Nova VNC Proxy (browsers)6080
Nova VNC Proxy (clients)6081
Nova HTML5 Console6082
Keystone Admin Endpoint35357
Keystone Public Endpoint5000
Glance API9292
Glance Registry9191
Neutron API9696

Host Addresses

NameIPv4 AddressNetmaskDNS
controller10.0.0.11255.255.255.08.8.8.8
compute110.0.0.31255.255.255.08.8.8.8
compute210.0.0.32255.255.255.08.8.8.8
block110.0.0.41255.255.255.08.8.8.8

Host SSH Users

HostUsernamePassword
controllermaxopenstack
compute1maxopenstack
compute2maxopenstack
block1maxopenstack

Commands to check or disable firewall:

sudo ufw status verbose
sudo ufw disable

Installation Checklist: Controller Node

This section covers VM and bare metal setup for the controller node, including hardware, networking, and OS installation.

Hardware Configuration (VM)

VirtualRecommendedActual
VCPU1-2+2
RAM4+ GB6 GB
Primary Disk10+ GB20 GB

Hardware Configuration (Bare Metal)

Bare MetalRecommendedActual
CPU1+4
RAM16+ GB32 GB
Primary Disk128+ GB SSD512 GB

Network Interfaces

InterfaceNetworkConfig TypeIP AddrNetmaskGatewayDNSVirtualBox Name
Adapter 1Managementstatic10.0.0.11255.255.255.010.0.0.18.8.8.8Host Only Adapter #2
Adapter 2Providermanual------------NAT Network ProviderNetwork1
Adapter 3InternetDHCPDHCPDHCPDHCPDHCPNAT Network NatNetwork1

VirtualBox Networks

NetworkCIDRDHCP
Host-Only Adapter #210.0.0.1 / 255.255.255.0Disabled
NAT Provider Network203.0.113.0/24Disabled
NAT Internet Network10.10.10.0/24Enabled

OS Installation Options

Operating system: Ubuntu Server 22.04 LTS

OptionRecommendedActual
LanguageEnglishEnglish
Installation modeMinimal VMMinimal VM
Hostnamecontrollercontroller
Usermaxmax
Passwordopenstackopenstack
PartitioningEntire disk + LVMEntire disk + LVM
SSHOpenSSH ServerOpenSSH Server
GRUBYesYes
TimezoneEasternEastern

Ubuntu 22.04 uses netplan for networking instead of the older /etc/network/interfaces. Make sure to set static IPs in netplan YAML files if using static management addresses.

Installation Workflow

The manual installation follows a structured sequence.

  1. Create virtual networks
  2. Create and install Linux on three VMs
  3. Configure networking on all nodes
  4. Install infrastructure services
  5. Install OpenStack services

1. Prepare Infrastructure Services

On all nodes, install:

  • NTP for time synchronization
  • OpenStack repository packages

On the controller node, install:

  • MariaDB for database
  • RabbitMQ for message queue
  • Memcached
  • etcd

These services support OpenStack components.

2. Install Core OpenStack Services

Each service requires configuration updates in its configuration files. These files are edited manually using a text editor.

Node(s)OpenStack Service
ControllerKeystone identity service
ControllerGlance image service
ControllerHorizon dashboard
Controller and ComputeNova compute service
Controller and ComputeNeutron networking service
Controller and StorageCinder block storage service