Back openDesk Edu for a sovereign, open-source education — every vote counts.
Vote nowSave products you love by clicking the heart icon.
CephFS im Produktiveinsatz: MDS-Architektur, Pool-Design, Quotas, Snapshots, Subvolume-Gruppen, Multi-MDS-Skalierung, Kubernetes CSI und Betrieb.
OSISM (Open Source Infrastructure as a Service Manager) ist die Deployment- und Operations-Plattform hinter dem Sovereign Cloud Stack (SCS) — Europas Antwort auf den Lock-in-Effekt von Hyperscalern. Es orchestriert den vollständigen Lebenszyklus einer Private Cloud, die auf OpenStack, Ceph und Kubernetes basiert, und wird über eine einzige, Ansible-gesteuerte Control Plane verwaltet. OSISM 10, veröffentlicht im März 2026, bietet Multi-Version-Support für sowohl OpenStack (2025.1 und 2025.2) als auch Ceph, wodurch der Release-Zyklus von OSISM zum ersten Mal von den Versionen der einzelnen Komponenten entkoppelt wird.
Dieser Artikel beschreibt, was OSISM ist, wie seine Komponenten zusammenpassen und die schrittweise Installationsroutine vom Bare-Metal-Server bis zum laufenden Cloud Pod.
Jedes OSISM-Deployment wird als Cloud Pod bezeichnet — eine eigenständige Private-Cloud-Umgebung mit eigenen Compute-, Storage-, Networking- und Management-Ebenen. Die Architektur ist geschichtet aufgebaut:
| Ebene | Technologie | Rolle |
|---|---|---|
| Hardware | x86_64 Server, SONiC Switches | Physisches Fundament |
| OS | Ubuntu 24.04 LTS | Betriebssystem der Nodes |
| OSISM | Ansible Playbooks, containerisierte Control Plane | Deployment- und Lifecycle-Management |
| OpenStack | Nova, Neutron, Cinder, Glance, Keystone | Virtueller Compute, Networking, Block Storage, Identity |
| Ceph | RBD, RGW, CephFS | Verteilter Block-, Object- und File-Storage |
| Kubernetes | K3s, Gardener, Cluster API | Container-Orchestrierung und Cluster-Lifecycle |
| SCS Standards | SCS-OpenStack, SCS-K8s, Keycloak | Compliance, Identity Federation, Audit |
| Zugriff | Horizon Dashboard, OpenStack CLI, Terraform | Benutzeroberflächen |
Der Cloud Pod ist kein Hypervisor-Produkt. Er ist ein Integrations-Framework, das bewährte Open-Source-Projekte nimmt und sie zu einer kohärenten, prüfbaren und upgradefähigen Plattform verknüpft. Jede Konfigurationsänderung erfolgt über ein einziges Git-Repository — es gibt keine "Click-Ops"-Konsole für den Operator.
Der Manager ist der zentrale Control Node und der einzige Einstiegspunkt für den Operator. Jede Aufgabe — das Deployment von OpenStack-Services, das Upgrade von Ceph, das Bootstrapping von Nodes, das Ausführen von Health-Checks — wird über ihn via osism CLI gesteuert.
Intern läuft der Manager als Set von Containern, die auf dem Manager-Node durch Docker Compose orchestriert werden. Die Architektur besteht aus:
osismclient / python-osism — Der Container, der die osism CLI bereitstellt. Alle Interaktionen des Operators erfolgen über diesen Befehl. Die zugrunde liegende Python-Bibliothek ist python-osism, welche zudem eine programmatische API exponiert.
Celery + Redis Job-Queues — Der Manager nutzt Celery, unterstützt durch eine Redis-Instanz (manager-redis), um Ansible-Tasks asynchron zu verteilen. Dieselbe Redis-Instanz dient gleichzeitig als Ansible-Facts-Cache, sodass alle Ansible-Container die gesammelten Host-Facts teilen. Fünf dedizierte Queues laufen parallel:
| Queue | Workload |
|---|---|
kolla-ansible | OpenStack Service Lifecycle |
ceph-ansible | Ceph Deployment und Management |
osism-ansible | Infrastructure-Level Playbooks |
osism-kubernetes | Kubernetes Operations |
reconciler | Inventory Reconciliation |
Parallele Queues bedeuten, dass ein OpenStack-Deployment und ein Ceph-Rolling-Upgrade gleichzeitig laufen können, ohne sich gegenseitig zu blockieren.
Ansible-Container — Jeder Workload-Typ hat sein eigenes Container-Image, das den relevanten Ansible-Code und die Abhängigkeiten enthält:
inventory-reconciler — Der einzige Container, der in das gemeinsame /ansible/inventory Volume schreibt. Er führt das Konfigurations-Repository mit NetBox-Daten (falls verwendet) zu einem einzigen, konsolidierten Inventory zusammen. Alle Ansible-Container mounten dieses Volume schreibgeschützt, wodurch garantiert wird, dass jeder Workload dieselbe konsistente Sicht auf Hosts und Variablen hat.
Konfigurations-Volume (/opt/configuration) — Wird schreibgeschützt in jeden Ansible-Container gemountet. Dies ist das Git-Konfigurations-Repository — die "Single Source of Truth" für Inventory, Gruppenvariablen, Host-Variablen und Secrets.
Die MetalBox ist ein Hardware-Provisioning-Toolkit, das auf OpenStack Ironic basiert. Sie provisioniert Bare-Metal-Server und Switches und bündelt alle Komponenten, die für das Offline-Bootstrapping eines Cloud Pods benötigt werden:
| MetalBox Komponente | Zweck |
|---|---|
| NetBox | Hardware-Inventory, IPAM, Verkabelungstopologie |
| OSISM Manager | Gleiche Control Plane wie ein regulärer Cloud Pod |
| Ironic | Bare-Metal-Provisioning via Virtual Media und Redfish |
| HTTPd | Stellt IPA-Boot-Images und Deployment-Images bereit |
| Docker Registry | Container-Images für Offline-/Air-Gapped-Umgebungen |
| APT Repository | Ubuntu-Pakete für Offline-Umgebungen |
| dnsmasq + Chrony | DHCP, DNS, NTP für das Provisioning |
Die MetalBox übernimmt zudem das SONiC ZTP (Zero Touch Provisioning) für Netzwerk-Switches. Switches mit ONIE booten in den Installationsmodus, finden die MetalBox via DHCP, laden ihr spezifisches SONiC-Image und die Konfiguration, installieren beides und booten in ein vollständig konfiguriertes Netzwerk-Betriebssystem neu — ohne dass eine Interaktion über die Konsole erforderlich ist.
Das Git-Konfigurations-Repository ist die Single Source of Truth für die gesamte Umgebung. Es enthält:
Das Repository wird aus einem Cookiecutter-Template auf einer lokalen Workstation oder einer dedizierten VM (dem sogenannten Seed Node) erstellt und anschließend auf den Manager übertragen. Nach dem initialen Deployment erfolgen Updates über osism apply configuration.
NetBox stellt die DCIM-Schicht (Data Centre Infrastructure Management) bereit — Hardware-Inventory, IP-Adressmanagement (IPAM), Verkabelung, Rack-Positionen, VLANs und benutzerdefinierte Felder. Die lokale NetBox-Instanz wird aus dem Konfigurations-Repository befüllt und dient als autoritative Datenquelle sowohl für den Manager als auch für die MetalBox.
Ceph stellt das vereinheitlichte Storage-Backend bereit — Block Storage (RBD) für Cinder, Object Storage (RGW) mit S3-kompatiblen APIs und File Storage (CephFS). In OSISM 10 ist ceph-ansible zugunsten von cephadm für neue Deployments veraltet; bestehende Cluster können via cephadm adopt in-place migriert werden.
Die Netzwerkebene nutzt SONiC (Software for Open Networking in the Cloud) auf Leaf-Spine-Switches mit BGP-unnumbered host-based Routing. Traditionelle Konzepte wie MLAG, Spanning Tree und Bonding werden durch BFD, BGP und ECMP ersetzt. Das virtuelle Networking innerhalb des Pods wird durch OVN (Open Virtual Network) gehandhabt, welches Overlay-Netzwerke zur Mandantentrennung bereitstellt.
OSISM folgt einem strikten sequenziellen Deployment-Prozess. Jeder Schritt baut auf dem vorherigen auf, und der Seed Node wird verworfen, sobald der Manager betriebsbereit ist.
Der Ausgangspunkt ist kein Server — es ist ein Git-Repository. Erstellen Sie auf einer lokalen Workstation (dem Seed Node) das Konfigurations-Repository aus dem Cookiecutter-Template:
pip install cookiecutter
cookiecutter https://github.com/osism/cookiecutter-configuration.git
cd output/configuration
git init && git add -A && git commit -m "init: configuration repository"
Bevor das Repository verwendbar ist, müssen sechs Dinge angepasst werden:
environments/manager/files/certificates/environments/manager/configuration.ymlenvironments/manager/configuration.ymlnode01 durch Ihre tatsächlichen Hostnamen in environments/manager/hostsmanager in environments/manager/hosts hinzusecrets/ enthält den SSH-Deploy-Key für das RepositoryPushen Sie das Repository zu GitHub, GitLab oder Ihrem internen Git-Server.
Der Seed-Knoten ist eine temporäre VM (oder Ihre Workstation), die das initiale Bootstrap des Managers durchführt. Er benötigt Docker oder Podman, SSH-Zugriff auf den zukünftigen Manager-Knoten und einen Klon des Konfigurations-Repositorys.
cd environments/manager
Alle nachfolgenden Befehle werden aus diesem Verzeichnis ausgeführt. Das Skript run.sh erkennt die Container-Engine automatisch und pullt den registry.osism.tech/osism/seed:latest Container, sofern verfügbar.
Dies ist der aufwendigste Schritt, der in fünf Teilschritte unterteilt ist:
3a — Operator-Benutzer erstellen
Der Operator-Benutzer dragon wird auf jedem Knoten erstellt. Alle OSISM-Container laufen unter diesem Benutzer, und Ansible nutzt ihn für den SSH-Zugriff.
ANSIBLE_BECOME_ASK_PASS=True \
ANSIBLE_ASK_VAULT_PASS=True \
ANSIBLE_ASK_PASS=True \
ANSIBLE_USER=osism \
./run.sh operator
ANSIBLE_USER ist der initiale Provisioning-Benutzer (z. B. osism im Knoten-Image oder ubuntu bei manuellen Installationen). Nach diesem Schritt werden für alle weiteren Befehle dragon verwendet.
3b — Netzwerkkonfiguration anwenden
./run.sh network
Sichern Sie bestehende Netzwerkkonfigurationen, bevor Sie dies ausführen. Die Netzwerk-Role wendet die Konfiguration aus environments/manager/configuration.yml an. Danach ist ein Neustart erforderlich, um sicherzustellen, dass die Konfiguration nach einem Reboot erhalten bleibt.
3c — Bootstrap des Manager-Knotens
./run.sh bootstrap
./run.sh reboot
Dies installiert Docker, die OSISM-Container-Images und bereitet den Knoten für den Manager-Dienst vor.
3d — Deployment des Manager-Dienstes
./run.sh configuration # Transfer the config repo
./run.sh traefik # Optional: reverse proxy
./run.sh netbox # Optional: DCIM inventory
./run.sh manager # Deploy the Manager containers
3e — Vault-Passwort setzen
ssh -i id_rsa.operator dragon@YOUR_MANAGER_NODE
osism set vault password
Nach diesem Schritt wird der Seed-Knoten nicht mehr benötigt.
Bei Verwendung der MetalBox werden Bare-Metal-Server über Ironic mittels virtueller Medien und Redfish provisioniert. Der Provisionierungs-Flow:
In Umgebungen ohne MetalBox werden Knoten manuell provisioniert (Ubuntu 24.04 LTS Installation) und dem Inventory des Konfigurations-Repositorys hinzugefügt.
Sobald die Knoten über ein Betriebssystem und Netzwerkzugriff verfügen, bootstrappen Sie diese vom Manager aus:
ssh dragon@YOUR_MANAGER_NODE
osism apply bootstrap
osism apply network
osism reboot
Dienste werden in einer strikten Reihenfolge bereitgestellt. Jeder Befehl kann optional zuerst die Container-Images vorab pullen:
osism pull <service-list>
osism apply <service-list>
Die empfohlene Deployment-Reihenfolge:
Validieren Sie vor dem Deployment die Netzwerkverbindung:
osism validate kolla-connectivity
osism validate ceph-connectivity # if using Ceph
Für Evaluation, Entwicklung und Training bietet OSISM Cloud in a Box (CIAB) an – ein Single-Node-Deployment, das eine vollständige Kubernetes-Cloud (oder einen kompletten OpenStack + Ceph + K8s Stack) von einem bootfähigen USB-Image aus installiert.
| CIAB-Typ | Enthaltene Komponenten | Anwendungsfall |
|---|---|---|
sandbox | Vollständiges OpenStack + Ceph + K8s | Komplette Cloud-Evaluation |
edge | OpenStack (reduziertes Ceph), zentrales Logging | Remote-Standorte mit begrenztem Speicher |
kubernetes | Nur K8s, kein OpenStack | Fokus auf Container-Orchestrierung |
Mindestanforderungen an die Hardware: 4 Kerne, 32 GB RAM, 1 TB Festplatte (bei /dev/sda oder /dev/nvme0n1), eine Netzwerkkarte (NIC) mit DHCP-Internetzugang.
Automatisierte Installation:
ubuntu-autoinstall-cloud-in-a-box-1.iso (oder -2.iso für NVMe)dddragon / passwordDie CIAB stellt eine WireGuard-VPN-Konfiguration unter /home/dragon/wireguard-client.conf bereit, um einen sicheren Zugriff auf alle Web-Interfaces (Horizon, Grafana, NetBox, Netdata, ARA, Ceph Dashboard) zu ermöglichen.
GitOps standardmäßig. Jede Konfigurationsänderung ist ein Git-Commit. Der Manager liest aus dem gemounteten Repository, nicht aus Ad-hoc-Konsolenbefehlen. Dies macht Audits, Rollbacks und Disaster Recovery unkompliziert – Repository klonen, den Manager darauf ausrichten und erneut anwenden.
Containerisiertes Ansible. Anstatt Ansible direkt auf dem Manager-Node auszuführen, läuft jeder Workload-Typ in seinem eigenen Container mit fixierten Versionen. Der Befehl osism apply steuert über Celery den korrekten Container an. Diese Isolation ermöglicht es, dass kolla-ansible und ceph-ansible gleichzeitig unterschiedliche Ansible-Versionen nutzen können.
Multi-Versions-Support (OSISM 10+). Ein OSISM 10 Deployment kann OpenStack 2025.1 oder 2025.2 sowie Ceph Quincy, Reef oder Squid betreiben. Die Version wird im Konfigurations-Repository ausgewählt und ist nicht an das OSISM-Release gebunden. Dies ist eine signifikante Änderung gegenüber früheren Versionen, bei denen der gesamte Stack an einen einzigen OpenStack-Release-Train gebunden war.
Operator-Benutzermodell. Der Benutzer dragon ist sowohl der SSH-Benutzer für Ansible als auch der Runtime-Benutzer für alle Container. Dies vereinfacht die Berechtigungen – es gibt keine Vermischung von Root- und Non-Root-Kontexten, und das SSH-Schlüsselpaar (id_rsa.operator) bietet konsistenten Zugriff über alle Nodes hinweg.