Mit Open­Ne­bu­la können Sie auf eigenen Servern eine private Cloud betreiben und dort virtuelle Maschinen zentral verwalten. Diese Anleitung zeigt die Ein­rich­tung einer einfachen Multi-Node-Private-Cloud mit OneDeploy und lokalem Speicher.

Schritt 1: Vor­aus­set­zun­gen

Für eine funk­tio­nie­ren­de Open­Ne­bu­la-Cloud benötigen Sie min­des­tens zwei Linux-Server: einen so­ge­nann­ten Frontend-Server und min­des­tens einen Host-Server. Der Frontend-Server übernimmt die Ver­wal­tung der Cloud, während die Host-Server später die vir­tu­el­len Maschinen ausführen. Für erste Tests reicht ein Setup mit einem Frontend und einem Host völlig aus, für pro­duk­ti­ve Um­ge­bun­gen sind meist zwei oder mehr Hosts sinnvoll.

Hinweis

Wenn Sie noch auf der Suche nach der ge­eig­ne­ten Plattform sind, sollten Sie die Ei­gen­schaf­ten, Vor- und Nachteile im Vergleich zwischen Open­Ne­bu­la und Proxmox, Open­Ne­bu­la und OpenStack bzw. Open­Ne­bu­la und Cloud­Stack genau unter die Lupe nehmen. Die ver­schie­de­nen Lösungen un­ter­schei­den sich vor allem in Kom­ple­xi­tät und Ein­satz­be­reich.

Als Be­triebs­sys­tem sollte auf allen Servern eine Version von Ubuntu in­stal­liert sein; am besten eignet sich eine aktuelle Version des Be­triebs­sys­tems wie Ubuntu 24.04. Wichtig ist außerdem, dass die Pro­zes­so­ren Vir­tua­li­sie­rung un­ter­stüt­zen (wie bei­spiels­wei­se Intel VT-x oder AMD-V), da sonst keine vir­tu­el­len Maschinen gestartet werden können. In den meisten Open­Ne­bu­la-In­stal­la­tio­nen kommt der Linux-Hy­per­vi­sor KVM zum Einsatz, der diese Hardware-Vir­tua­li­sie­rung benötigt. Diese Funktion ist bei modernen Servern nor­ma­ler­wei­se vorhanden und kann im BIOS aktiviert werden.

Private Cloud powered by VMware
Cloud? Aber sicher!
  • Jederzeit voll­stän­di­ge Da­ten­ho­heit sowie Da­ten­kon­trol­le
  • Im Einklang mit allen ge­setz­li­chen Re­ge­lun­gen in Deutsch­land
  • Ohne Vendor Lock-in für höchste Fle­xi­bi­li­tät

Für ein kleines Test­sys­tem empfehlen sich folgende Vor­aus­set­zun­gen:

  • Frontend-Server: 4 CPU-Kerne und 8–16 GB RAM
  • Host-Server: Dieser Server sollte etwas stärker sein, zum Beispiel 8 CPU-Kerne und min­des­tens 32 GB RAM, damit mehrere virtuelle Maschinen gleich­zei­tig laufen können.
  • Netz­werk­ver­bin­dung: Alle Server benötigen eine stabile Netz­werk­ver­bin­dung un­ter­ein­an­der.
  • IP-Adresse: Jeder Server sollte eine feste IP-Adresse besitzen, damit Open­Ne­bu­la die Systeme zu­ver­läs­sig erreichen kann. Zu­sätz­lich benötigen Sie einen IP-Adress­be­reich für virtuelle Maschinen. Bei­spiels­wei­se könnten Sie im Netzwerk 192.168.1.0/24 die Adressen 192.168.1.200–192.168.1.220 für spätere VMs re­ser­vie­ren.
  • Ver­bin­dung: Eine SSH-Ver­bin­dung auf alle Server ist nötig.
  • Rechte: Ihr Be­nut­zer­kon­to muss Root- oder sudo-Rechte besitzen. Ohne diese Rechte lässt sich die In­stal­la­ti­on nicht durch­füh­ren.
Hinweis

Wenn Sie nur ex­pe­ri­men­tie­ren möchten, können auch kleinere Systeme funk­tio­nie­ren, al­ler­dings ist die Leistung dann begrenzt. Für Ein­stei­ge­rin­nen und Ein­stei­ger ist es darüber hinaus am ein­fachs­ten, zunächst mit lokalem Speicher auf jedem Host zu arbeiten. Dabei werden virtuelle Maschinen direkt auf dem je­wei­li­gen Server ge­spei­chert. Kom­ple­xe­re Spei­cher­lö­sun­gen wie Netz­werk­spei­cher können später ergänzt werden.

Schritt 2: Geeignete Ser­ver­ty­pen auswählen

Für den Betrieb einer Open­Ne­bu­la-Private-Cloud eignen sich un­ter­schied­li­che Ser­ver­ty­pen, je nach Ein­satz­zweck und Budget. Für erste Tests oder kleine Projekte können bereits einfache Systeme aus­rei­chen, während pro­duk­ti­ve Um­ge­bun­gen leis­tungs­stär­ke­re Hardware erfordern.

VPS (Virtual Private Server) eignen sich vor allem für Test­in­stal­la­tio­nen und erste Ex­pe­ri­men­te mit Open­Ne­bu­la. Sie sind kos­ten­güns­tig und schnell verfügbar, haben jedoch häufig ein­ge­schränk­te oder de­ak­ti­vier­te Vir­tua­li­sie­rungs­funk­tio­nen. Oft ist so­ge­nann­te „Nested Vir­tua­liza­ti­on“ nicht verfügbar, sodass sich virtuelle Maschinen innerhalb von Open­Ne­bu­la nicht oder nur ein­ge­schränkt starten lassen. Für In­stal­la­ti­ons- und Interface-Tests sind VPS-Systeme dennoch gut geeignet.

De­di­zier­te Server sind die beste Wahl für pro­duk­ti­ve Private Clouds. Sie bieten volle Kontrolle über Hardware, Netzwerk und Vir­tua­li­sie­rung und er­mög­li­chen stabile Per­for­mance auch bei vielen vir­tu­el­len Maschinen. De­di­zier­te Server sind besonders sinnvoll, wenn mehrere Nut­ze­rin­nen und Nutzer auf die Cloud zugreifen oder dauerhaft virtuelle Systeme betrieben werden sollen.

Schritt 3: Ubuntu vor­be­rei­ten und Server er­reich­bar machen

In­stal­lie­ren Sie zuerst Ubuntu auf allen Servern. Während der In­stal­la­ti­on sollten Sie feste IP-Adressen vergeben oder diese später in der Netz­werk­kon­fi­gu­ra­ti­on ein­rich­ten. Nach der In­stal­la­ti­on melden Sie sich auf jedem Server an und ak­tua­li­sie­ren das System mit folgenden Befehlen:

sudo apt update
sudo apt upgrade -y
bash

Diese Ak­tua­li­sie­rung stellt sicher, dass alle Pakete auf dem neuesten Stand sind und spätere In­stal­la­ti­ons­pro­ble­me vermieden werden.

Schritt 4: SSH-Ver­bin­dung ein­rich­ten

Open­Ne­bu­la benötigt außerdem eine funk­tio­nie­ren­de SSH-Ver­bin­dung zwischen den Servern. Der Frontend-Server muss sich ohne Passwort als root-User mit den Host-Servern verbinden können. Außerdem muss das Be­nut­zer­kon­to, das das Playbook ausführt, auf dem Frontend per sudo Root-Zugriff erhalten können. Beides wird benötigt, damit Open­Ne­bu­la später au­to­ma­tisch Software in­stal­lie­ren und kon­fi­gu­rie­ren kann. Wechseln Sie auf den Frontend-Server und erstellen Sie einen SSH-Schlüssel:

sudo ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N ""
bash

Danach kopieren Sie den Schlüssel mit folgendem Befehl auf die Host-Server (ersetzen Sie die hier ver­wen­de­ten Werte durch die tat­säch­li­chen IP-Adressen Ihrer eigenen Server und Ihres Netzwerks):

sudo ssh-copy-id root@192.168.1.11
bash

Testen Sie an­schlie­ßend die Ver­bin­dung:

sudo ssh root@192.168.1.11
bash

Wenn Sie ohne Pass­wort­ab­fra­ge an­ge­mel­det werden, funk­tio­niert die Ver­bin­dung korrekt.

Schritt 5: OneDeploy in­stal­lie­ren

Hinweis

OneDeploy eignet sich besonders für re­pro­du­zier­ba­re Multi-Node-In­stal­la­tio­nen. Für einfache Test­um­ge­bun­gen stellt Open­Ne­bu­la al­ter­na­tiv mit „miniONE“ bzw. einer vor­kon­fi­gu­rier­ten PoC-Appliance einen noch schnel­le­ren Einstieg bereit.

Die ein­fachs­te Methode zur In­stal­la­ti­on ist eine Sammlung von Ansible-Playbooks namens OneDeploy, die die komplette Ein­rich­tung au­to­ma­ti­siert. Dadurch müssen Sie viele kom­pli­zier­te Kon­fi­gu­ra­ti­ons­schrit­te nicht selbst durch­füh­ren. In­stal­lie­ren Sie zuerst die be­nö­tig­ten Programme auf dem Frontend-Server:

sudo apt install -y python3-pip pipx git make
bash

Danach laden Sie OneDeploy von Git herunter:

git clone https://github.com/OpenNebula/one-deploy.git
cd one-deploy
bash

OneDeploy benötigt außerdem eine spezielle Python-Umgebung. Diese richten Sie mit folgenden Befehlen ein:

pipx install hatch
pipx ensurepath
source ~/.bashrc
bash

In­stal­lie­ren Sie an­schlie­ßend die be­nö­tig­ten Ab­hän­gig­kei­ten:

make requirements
bash

Zum Schluss wechseln Sie in die vor­be­rei­te­te Umgebung:

hatch shell
bash

Wenn der Befehl er­folg­reich war, sehen Sie (one-deploy) am Anfang der Be­fehls­zei­le.

Schritt 6: Cloud-Kon­fi­gu­ra­ti­on erstellen

Nun müssen Sie Open­Ne­bu­la via Ansible-Inventory vorgeben, welche Server verwendet werden und wie das Netzwerk aufgebaut ist. Dazu erstellen Sie eine Kon­fi­gu­ra­ti­ons­da­tei. Wechseln Sie hierzu zunächst in ein neues Ver­zeich­nis:

mkdir ~/opennebula-config
cd ~/opennebula-config
bash

Erstellen Sie eine Datei. Wir nutzen an dieser Stelle den Editor nano, Sie können aber jeden be­lie­bi­gen Text­edi­tor Ihrer Wahl verwenden.

nano example.yml
bash

Fügen Sie folgenden Bei­spiel­in­halt in die soeben erstellte example.yml ein:

---
    all:
      vars:
         ansible_user: root
         one_version: '7.2'
         one_pass: opennebulapass
         ensure_hosts: true
         vn:
            admin_net:
              managed: true
              template:
                 VN_MAD: bridge
                 PHYDEV: eth0
                 BRIDGE: br0
                 AR:
                    TYPE: IP4
                    IP: 172.20.0.100
                    SIZE: 48
                 NETWORK_ADDRESS: 172.20.0.0
                 NETWORK_MASK: 255.255.255.0
                 GATEWAY: 172.20.0.1
                 DNS: 1.1.1.1
    frontend:
      hosts:
         f1: { ansible_host: 172.20.0.2 }
    node:
      hosts:
         n1: { ansible_host: 172.20.0.3 }
         n2: { ansible_host: 172.20.0.4 }
yaml

Im AR-Block, in dem der Adress­be­reich definiert wird, tragen Sie die IPs Ihrer Server anstelle der Bei­spiel­adres­sen ein. Besonders wichtig ist der Eintrag PHYDEV. Dort muss der Name Ihrer Netz­werk­schnitt­stel­le stehen. Häufig heißt sie zum Beispiel eth0, ens18 oder enp1s0. Für den Eintrag one_version ergänzen Sie die jeweilige Version von Open­Ne­bu­la.

Den Namen Ihrer Netz­werk­schnitt­stel­le können Sie mit folgendem Befehl her­aus­fin­den:

ip a
bash

Erstellen Sie zu­sätz­lich eine Datei ansible.cfg, in der grund­le­gen­de Ein­stel­lun­gen für die Aus­füh­rung von Ansible definiert werden. In der of­fi­zi­el­len Do­ku­men­ta­ti­on wird folgende Kon­fi­gu­ra­ti­on vor­ge­schla­gen:

[defaults]
inventory=./example.yml
gathering=explicit
host_key_checking=false
display_skipped_hosts=true
retry_files_enabled=false
any_errors_fatal=true
stdout_callback=yaml
timeout=30
collections_paths=/home/user/one-deploy/ansible_collections
[ssh_connection]
pipelining=true
ssh_args=-q -o ControlMaster=auto -o ControlPersist=60s
[privilege_escalation]
become      = true
become_user = root
txt

Diese Kon­fi­gu­ra­ti­ons­da­tei legt unter anderem fest, welche Inventory-Datei verwendet wird und wo sich die be­nö­tig­ten Ansible-Coll­ec­tions von OneDeploy befinden. Beachten Sie dabei, dass Sie den an­ge­ge­be­nen Pfad von collections_paths durch den korrekten Pfad zu Ihrem OneDeploy-Ver­zeich­nis ersetzen müssen. An­dern­falls kann Ansible die be­nö­tig­ten Coll­ec­tions mög­li­cher­wei­se nicht finden und das Playbook nicht korrekt ausführen.

Schritt 7: Open­Ne­bu­la in­stal­lie­ren und starten

Jetzt können Sie die ei­gent­li­che In­stal­la­ti­on starten. Testen Sie hierzu zunächst die Ver­bin­dung zwischen den Servern mit dem folgenden Befehl:

ansible -i example.yml all -m ping -b
bash

Wenn alle Hosts mit einem Pong antworten, ist die Ver­bin­dung korrekt ein­ge­rich­tet. Starten Sie an­schlie­ßend die In­stal­la­ti­on:

ansible-playbook -v opennebula.deploy.main
bash

Die In­stal­la­ti­on dauert meist mehrere Minuten. Wäh­rend­des­sen werden Pakete in­stal­liert, Netzwerke ein­ge­rich­tet und die Cloud kon­fi­gu­riert. Wenn keine Feh­ler­mel­dun­gen er­schei­nen, ist Open­Ne­bu­la bereit.

Testen Sie an­schlie­ßend die Ver­bin­dung, um si­cher­zu­ge­hen, dass alles er­folg­reich war:

onehost list
bash

Wenn die Hosts angezeigt werden, funk­tio­niert die Cloud korrekt.

Hinweis

Falls die Ver­bin­dung fehl­schlägt, prüfen Sie ins­be­son­de­re die SSH-Er­reich­bar­keit sowie die korrekte IP-Kon­fi­gu­ra­ti­on der Server. Auch falsche Pfade in der ansible.cfg können zu Fehlern führen.

Schritt 8: Web­ober­flä­che öffnen und erste VM starten

Open­Ne­bu­la besitzt eine Web­ober­flä­che, über die Sie die Cloud einfach und intuitiv bedienen können. Öffnen Sie diese im Browser über Port 2616:

http://IP-DES-FRONTEND-SERVERS:2616
bash

Melden Sie sich mit Ihren Zu­gangs­da­ten an:

  • Be­nut­zer­na­me: oneadmin
  • Passwort: Das Passwort aus der Kon­fi­gu­ra­ti­ons­da­tei (one_pass)

Nach dem Login sehen Sie die Ver­wal­tungs­ober­flä­che. Dort können Sie Hosts, Netzwerke und virtuelle Maschinen verwalten. Zum Test können Sie ein fertiges Image aus dem Mar­ket­place im­por­tie­ren und eine kleine virtuelle Maschine starten. Wenn die VM startet und eine IP-Adresse erhält, funk­tio­niert Ihre private Cloud korrekt.

Zum Hauptmenü