Skip to content

Your cloud · OpenStack

Your own cloud, planned before it is built.

OpenStack helps an organisation provide virtual machines, networks, images and projects from hardware it owns. It is powerful when several people need repeatable infrastructure. It is not a subscription and it is not a reason to add complexity where a VM or Docker host will do.

Saphira Linux dragon mascot

When OpenStack is the right answer

Use it when

Several teams need isolated projects, repeatable virtual machines, self-service APIs, image management and networks managed as a shared platform.

Do not start here when

One application, one small server or a handful of manually managed VMs is the actual need. Docker, libvirt or a simple VM host can be the calmer and better solution.

A useful starting shape

For a small to medium private cloud or serious lab, 16 or more CPU cores and 32–128 GB RAM is a sensible planning range. It is guidance, not a minimum guarantee: virtual machine sizes, storage, networking and expected users decide the real requirement.

Keep room to grow

Separate controller, compute and storage responsibilities as the workload justifies it. A lab may combine roles; a production design should leave capacity for failures, backups, updates and the control-plane services themselves.

You bought the servers. Saphira helps you make them useful without renting your own infrastructure back from someone else. There is no compulsory cloud account, usage meter or SaaS control plane hidden in this design.

The parts, in ordinary language

Keystone

Identity
Keeps the list of users, projects and permissions.

Glance

Images
Holds the operating-system images used to create virtual machines.

Nova and Placement

Compute
Decide where a virtual machine can run and ask a suitable compute host to run it.

Neutron

Networks
Builds the virtual networks, ports and routers that connect cloud workloads.

Horizon

Dashboard
Provides the browser-based administrative interface.

Cinder

Volumes
Manages block-storage volumes. Its full lifecycle remains a boundary requiring end-to-end deployment proof.

What the Saphira helper does today

It helps you make the right plan; it does not pretend the cloud already exists.

saphira-openstack is a menu-driven design, inspection and planning helper. It can look at local interfaces, Open vSwitch bridges, VLANs, ZFS pools, routes and the init system, then offer them as suggestions. It never chooses an address, adopts an interface, formats storage or starts a service without the operator deciding it.

Installing it installs tooling only. init writes an inventory after explicit confirmation; inventory checks it; plan explains the package and configuration readiness. None of those actions deploys OpenStack services.

apk update
apk add saphira-openstack

# Design the inventory. Back, Review and Cancel remain available.
saphira-openstack init

# Inspect and validate the saved design.
saphira-openstack inventory
saphira-openstack inventory --check
saphira-openstack plan

# Read the format and the deliberately non-default examples.
sed -n '1,260p' /usr/share/saphira/openstack/inventory-format.txt
ls /usr/share/saphira/openstack/examples

From plan to working roles

The planner designs the cloud. The role packages build each machine’s part of it.

After the inventory is understood, install the role package that matches each machine. The controller role brings in Keystone, Glance, Placement, Nova, Neutron, Horizon, MariaDB, RabbitMQ and Memcached. The compute role brings in Nova, Neutron, libvirt, Open vSwitch and the network tools it needs. The storage role brings in Cinder and LVM. Each package has an interactive, repeatable setup command and a read-only --check mode.

# Controller: apk add saphira-openstack-controller; saphira-openstack-setup-controller; saphira-openstack-setup-controller --check
# Compute: apk add saphira-openstack-compute; saphira-openstack-setup-compute; saphira-openstack-setup-compute --check
# Storage: apk add saphira-openstack-storage; saphira-openstack-setup-storage; saphira-openstack-setup-storage --check

Controller setup asks for the controller address, region, browser-facing console host and passwords; it writes service configuration, bootstraps the databases and identity service, registers endpoints, starts the controller services and proves their HTTP endpoints answer. Compute setup asks for the controller, service password and provider network details; it probes for KVM, prepares Nova, Neutron, libvirt and Open vSwitch, then checks that the controller can see the hypervisor and agents. Storage setup asks for a controller and a dedicated volume disk; it refuses mounted or partitioned media unless the operator explicitly confirms the risk.

Cinder’s final volume-export path still depends on the iSCSI target support being available and proven end-to-end. The storage helper stops honestly at that boundary rather than claiming that a package installation has produced attachable volumes.

The same service packages on both editions

Saphira uses OpenRC; SaphiraD uses systemd. OpenStack service APKs package both their OpenRC init script and their systemd unit. For example, Keystone, Glance, Placement and Horizon ship /etc/init.d/NAME and NAME.service; Nova, Neutron and Cinder do the same for their individual services. Package installation alone does not enable any of them.

Saphira · OpenRC

rc-update add keystone default
rc-service keystone start
rc-service keystone status

SaphiraD · systemd

systemctl enable --now keystone.service
systemctl status keystone.service

Use the role setup command first; it knows the order in which its own configuration, database work and services must be handled. These commands are the visible service controls afterwards: use the Saphira form on an OpenRC machine or the SaphiraD form on a systemd machine, never both. The same pattern applies to glance, placement, nova-compute, neutron-openvswitch-agent, cinder-volume and the other packaged OpenStack services.

The inventory: your cloud on paper first

The inventory lives at /etc/saphira-openstack/inventory.ini. It is plain text, editable and reproducible. Every decision is written down: no hidden address, hostname, bridge, VLAN, network or storage device is invented by the helper.

[global]

The cloud’s DNS name and whether the planned hosts use OpenRC or systemd. Both must be an explicit choice.

[node NAME]

Each machine’s controller and/or compute role plus its management IPv4 and IPv6 addresses. A small lab can combine roles; production planning often separates them.

[network NAME]

Management, provider, tenant and storage networks. Each has an IPv4, IPv6 or dual family, optional gateway, VLAN, bridge, interface and ownership choice.

[storage NAME] and [service NAME]

Storage type and whether it is shared or already exists, then the machine chosen for each OpenStack service. Existing storage is attached or imported—not reformatted.
# A shape, not a ready-made cloud. Use your own verified values.
[global]
domain = cloud.example
init = openrc

[node controller]
roles = controller,compute
address4 = 192.0.2.11
address6 = 2001:db8:1::11

[network management]
purposes = management
existing = yes
family = dual
cidr4 = 192.0.2.0/24
cidr6 = 2001:db8:1::/64

[operations]
credentials = interactive
ha = none

The documentation addresses above are intentionally non-routable examples. Replace every one with a value from the environment being designed. Mark an existing network or store as existing so the plan treats it as something to connect to, not something to recreate.

A sensible order of work

Small, visible steps leave you in control.

  1. Decide what actually needs a cloud: users, projects, virtual machines, storage, networks and recovery expectations.
  2. Inventory the hardware, CPU, RAM, network ports and storage. Leave headroom rather than assigning every resource to guest machines.
  3. Design management, tenant, provider and storage traffic before services are installed. IPv4 and IPv6 are independent choices; neither is assumed.
  4. Use saphira-openstack init, validate the result and read the plan. Correct the design on paper before making service changes.
  5. Follow the role-specific guides for the deployment work and test a small, real virtual machine, network and image path before promising the platform to users.

The published controller, compute, storage and documentation role packages are useful foundations, but a package list is not proof of a finished cloud. In particular, keep the documented Cinder lifecycle and Horizon asset prerequisites in view.

Continue with the detailed guides: OpenStack architecture, controller, compute, storage and troubleshooting.