title | excerpt | updated |
---|---|---|
Image zwischen Public Cloud Projekten teilen |
Erfahren Sie hier, wie Sie ein Image mit OpenStack zwischen Public Cloud Projekten teilen können |
2025-04-01 |
Es kann vorkommen, dass Sie ein Image eines Instanz Backups oder ein Image eines Volume Backups für mehrere Public Cloud Projekte freigeben müssen.
Mit OpenStack können Sie ein Image für mehrere Projekte freigeben, auch wenn diese nicht zum selben Account gehören.
Diese Funktion bietet viele Möglichkeiten, birgt aber auch Risiken. Es ist also wichtig, die Prinzipien zu verstehen.
Wenn Sie z.B. ein Image aus Projekt A für Projekt B freigeben möchten (unter demselben oder einem anderen Account), gelten die folgenden Regeln:
- Ein Image kamm nur innerhalb einer Region freigegeben werden. Ein in Projekt A in der Region GRA11 erstelltes Image ist beispielsweise nur für Projekt B in derselben Region (GRA11) verfügbar.
- Das Image bleibt physisch an Projekt A angehängt. Das Projekt B verfügt nur über eine Zugriffsberechtigung (access authorization) für dieses Image.
- Wenn Projekt A den Zugriff auf das Image unterdrückt (Löschen der ACL, Löschen des Images, Löschen des Projekts aufgrund ausstehender Zahlungen, etc.), funktionieren Instanzen, die von diesem Image aus in Projekt B ausgeführt werden, möglicherweise wegen Problemen bei Migration oder Rebuild nicht mehr.
Daher ist es wichtig, diese Punkte in Betracht zu ziehen, bevor Sie diese Konfigurationen anwenden.
Weitere Informationen finden Sie in der offiziellen OpenStack Dokumentation{.external}.
Diese Anleitung erklärt, wie Sie ein Image für ein anderes Projekt freigeben und dabei die Image-Konfiguration und den Image-Status beibehalten.
- Sie haben Ihre Umgebung für die Verwendung der OpenStack API vorbereitet.
- Sie haben eine Public Cloud Instanz in Ihrem Account erstellt.
- Sie haben einen OpenStack User erstellt.
[!primary]
Diese Anleitung bezieht sich auf die Verwendung des OpenStack Client{.external}.
Führen Sie zunächst den folgenden Befehl aus, um die vorhandenen Images aufzulisten:
$ openstack image list --private
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | pfsense |
Warning
Um es teilen zu können, muss ein Image zunächst auf geteilte Sichtbarkeit (shared visibility) eingestellt werden.
$ openstack image set --shared <Image_UUID>
Sie können den folgenden Befehl ausführen, um die Images aufzulisten, die für ein anderes Projekt freigegeben werden können:
$ openstack image list --shared
9a0fbdc5-****-****-****-8d404a1313ba pfsense
Im nächsten Schritt fügen Sie die UUID eines anderen Projekts als Member des Image hinzu. In unserem Beispiel unten fügen wir die UUID von Projekt B hinzu.
$ openstack image add project 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba <UUID_Project_B>
+------------+--------------------------------------+
| Field | Value |
+------------+--------------------------------------+
| created_at | 2020-01-27T13:26:52Z |
| image_id | 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba |
| member_id | <UUID_Project_B> |
| schema | /v2/schemas/member |
| status | pending |
| updated_at | 2020-01-30T15:18:00Z |
+------------+--------------------------------------+
Überprüfen Sie danach die Anfrage für Projekt B:
$ openstack image member list <Image_UUID>
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | <UUID_Project_B> | pending |
+--------------------------------------+----------------------------------+----------+
Wenn sich die Freigabeanforderung im Status pending
befindet, müssen Sie sie akzeptieren:
$ openstack image set --accept 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | eff99684d8294dbe8c2d4dd7407073f1 | accepted |
+--------------------------------------+----------------------------------+----------+
Nachdem Sie die Freigabeanfrage akzeptiert haben, überprüfen Sie, ob Sie das Image sehen und darauf zugreifen können:
$ openstack image show 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum | 1b19c9e5bdd36b9010de0164dd8b245e |
| container_format | bare |
| created_at | 2018-05-08T15:38:50Z |
| disk_format | raw |
| file | /v2/images/9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba/file |
| id | 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba |
| min_disk | 0 |
| min_ram | 0 |
| name | pfsense |
| owner | 35c9ee22e5c84c1097a5652b0abcbab3 |
| properties | direct_url='swift+config://ref1/glance/9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba', locations='[{'url': 'swift+config://ref1/glance/9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba', 'metadata': {}}]' |
| protected | False |
| schema | /v2/schemas/image |
| size | 10737418240 |
| status | active |
| tags | |
| updated_at | 2018-05-08T15:53:57Z |
| virtual_size | None |
| visibility | private |
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Um alle Projekte anzuzeigen, die über das Quell-Projekt (in diesem Fall Projekt A) Zugriff auf das Image haben, können Sie diesen Befehl ausführen:
$ openstack image member list 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | <project C> | pending |
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | <project B> | accepted |
+--------------------------------------+----------------------------------+----------+
Im Quell-Projekt (Projekt A) können Sie ein Member der Freigabe löschen:
$ openstack image remove project <image> <UUID_Project_To_Delete>
Backup einer Instanz von einer Region in eine andere übertragen
Treten Sie unserer User Community bei.