Tutorial: OpenStack CLI auf eigenem Server installieren & nutzen
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.
- Ihr API-Username.
- Ihr API-Passwort.
- 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.
- 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:
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:
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?
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.
- Klicken Sie dort auf "bearbeiten" (4) bei Snapshots.
- 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.
- Hier müssen Sie auf "Snapshot" (6) klicken, um ein Snapshot schließlich erstellen zu lassen.
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.
- $snapshot_id ist die ID des erstellten Snapshots (abrufbar mit
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.
- $volume_id ist die ID des erstellten Volumes (abrufbar mit
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.
- $image_id ist die Image-ID, welche über
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.
- $image_id ist die Image-ID, welche Sie bspw. über den Befehl
- Die Image-ID können Sie sich über die Imageliste anzeigen:
openstack image list
+--------------------------------------+--------------------------------------+--------+
| ID | Name | Status |
+--------------------------------------+--------------------------------------+--------+
| 123456cc-d123-12df-a3cb-d1234567c1bb | test | active |
+--------------------------------------+--------------------------------------+--------+