Tutorial: OpenStack CLI auf eigenem Server installieren & nutzen

Version vom 18. März 2025, 21:10 Uhr von Rb (Diskussion | Beiträge) (→‎Ephemeral Storage)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

OpenStack CLI auf eigenem Server installieren & nutzen

Da die OpenStack-eigene Horizon-Oberfläche bspw. keine direkte Möglichkeit bietet, Snapshots herunterzuladen, besteht wie hier in der Anleitung beschrieben die Option, die OpenStack CLI auf einem eigenen Server zu installieren und diese mit unserer API zu verbinden. Über die API können alle Funktionen genutzt werden, die auch über Horizon verfügbar sind.

Alternativ zur OpenStack CLI gibt es Tools wie Terraform, OpenTofu und Ansible, die eine effiziente Verwaltung und Automatisierung von OpenStack-Ressourcen ermöglichen. Diese Tools können beispielsweise dazu verwendet werden, wiederholbare Deployments zu erstellen und den gesamten Prozess zu vereinfachen.

Schritt 1: API Zugang aktivieren

Um den API Zugang zu aktivieren, müssen Sie ein Passwort für diesen anlegen.

Afstack api activate.png

  1. Ihr API-Username.
  2. Ihr API-Passwort.
  3. Ihre Konfigurationsdatei, um auf die API zuzugreifen.
    Hinweis: Diese wird aber nicht für die CLI verwendet. Stattdessen wird die Konfigurationsdatei in der Openstack-Oberfläche genutzt. Dazu in den nächsten Schritten mehr.
  4. Hiermit aktivieren Sie den API-Zugang.

Schritt 2: Konfigurationsdatei herunterladen

Hierzu müssen Sie sich zuerst in die Horizon-Oberfläche mit dem in Schritt 1 aktivierten API-Zugang einloggen: Openstack login.png Danach müssen Sie einmal oben rechts auf Ihren Benutzernamen (1) und im aufgegangenen Menü auf "Openstack RC Datei"(2) klicken, um die Datei herunterzuladen:

Openstackrc.png

Diese Datei können Sie erstmal zwischenlagern. Diese wird nämlich im Installationsschritt benötigt.

Schritt 3: Openstack auf einem Gerät installieren

  • Verzeichnis für die Openstack CLI anlegen:
 mkdir openstack && cd openstack
  • Virtual Environment mit venv erzeugen und aktivieren:
 python3 -m venv venv
 source venv/bin/activate
  • pip updaten:
pip install --upgrade pip
  • Pakete installieren:
pip install python-openstackclient python-barbicanclient python-cinderclient python-designateclient python-glanceclient python-heatclient python-neutronclient python-novaclient python-octaviaclient
  • Die openrc-Datei, die in Schritt 2 heruntergeladen wurde, in das openstack-Verzeichnis kopieren.
  • openrc laden:
source $openrc_dateiname
  • $openrc_dateiname ist der Name der heruntergeladenen Konfigurationsdatei.
  • Danach kommt die Ausgabe, bei der Sie das Passwort Ihres API-Zugangs eingeben müssen:
Please enter your OpenStack Password for project stack12345 as user a12345:
  • Serverliste zum Prüfen, ob alles korrekt lief:
openstack server list
+-------------------+-------------------+--------+-------------------+-------------------+---------+
| ID                | Name              | Status | Networks          | Image             | Flavor  |
+-------------------+-------------------+--------+-------------------+-------------------+---------+
| d1234c23-1234-123 | supportwiki       | ACTIVE | shared-public-net | N/A (booted from  | a1.xs   |
| 2-abcd-artfiles11 |                   |        |work=192.0.2.161/24,| volume)          |         |
| cd                |                   |        |2001:db8:8893::abc/64|                 |         |
|                   |                   |        |                   |                   |         |
+-------------------+-------------------+--------+-------------------+-------------------+---------+
  • Und nun können Sie die OpenStack CLI auf Ihrem Server verwenden.

Beispiel: Wie lade ich ein Snapshot herunter?

Getestet wurde die Anleitung in Ubuntu 22.04 und macOS Sonoma 14.5

Volumes

Da unsere Instanzen auf normalen Volumes basieren und nicht auf ephemeral storage, funktioniert die herkömmliche Methode mit nova image-create nicht. Stattdessen sollte der Snapshot über das DCP erstellt und dann über die API in ein Image umgewandelt werden.

Schritt 1: Snapshot über das DCP erstellen

  • Melden Sie sich im DCP in Ihren af.stack-Account an.
  • Navigieren Sie über "af.stack" (1) -> "Server" (2) zu der Instanz, von der Sie einen Snapshot erstellen möchten, und klicken (3) Sie diese an.

Snapshoterstellen afstack.png

  • Klicken Sie dort auf "bearbeiten" (4) bei Snapshots.

Snapshoterstellen bearbeiten.png

  • In diesem Bereich sehen Sie Ihre bereits erzeugten Snapshots und können oben rechts auf den Button "+ Neu anlegen" (5) klicken, um ein Snapshot zu erstellen.

Snapshot erstellen.png

  • Hier müssen Sie auf "Snapshot" (6) klicken, um ein Snapshot schließlich erstellen zu lassen.

Snapshoterstellen button.png

Schritt 2: Snapshot in ein Volume umwandeln

Um den erstellten Snapshot weiterzuverarbeiten, muss er über die Openstack CLI in ein Volume konvertiert werden:

openstack volume create --snapshot $snapshot_id $volume_name
  • $snapshot_id ist die ID des erstellten Snapshots (abrufbar mit openstack volume snapshot list).
  • $volume_name ist der Name für das neue Volume.

Schritt 3: Volume in ein Image umwandeln

Nun muss das Volume in ein Image konvertiert werden:

openstack image create --volume $volume_id $image_name
  • $volume_id ist die ID des erstellten Volumes (abrufbar mit openstack volume list).
  • $image_name ist der Name für das neue Image.

Schritt 4: Image herunterladen

Sobald das Image erstellt wurde, kann es heruntergeladen werden:

glance image-download $image_id --file snapshot_name
  • $image_id ist die Image-ID, welche über openstack image list angezeigt werden kann.
  • snapshot_name ist der gewünschte Dateiname für das heruntergeladene Image. Das Image wird im raw-Format abgespeichert.

Ephemeral Storage

Ephemeral Storage ist ein temporärer Speicher, der direkt mit einer Instanz verbunden ist. In dem Falle kann man sehr simpel Snapshots herunterladen:

  • Um aus einer VM per Snapshot ein Image zu erstellen, muss man folgenden Befehl ausführen:
nova image-create $instance_name $image_name
  • $instance_name ist der Name des Servers, von dem ein Snapshot als Image erstellt werden soll
  • $image_name ist der Name der neu erstellten Imagedatei, diesen kann man frei wählen.
  • Hiermit wird das Image heruntergeladen:
glance image-download $image_id --file snapshot_name
  • $image_id ist die Image-ID, welche Sie bspw. über den Befehl openstack image list (siehe unten) einsehen können.
  • Die Image-ID können Sie sich über die Imageliste anzeigen:
openstack image list
+--------------------------------------+--------------------------------------+--------+
| ID                                   | Name                                 | Status |
+--------------------------------------+--------------------------------------+--------+
| 123456cc-d123-12df-a3cb-d1234567c1bb | test                                 | active |
+--------------------------------------+--------------------------------------+--------+