title | excerpt | updated |
---|---|---|
Partager des images entre projets Public Cloud |
Découvrez comment partager des images entre des projets Public Cloud à l'aide d'OpenStack |
2025-04-01 |
Il peut arriver que vous deviez partager une image Instance backup ou une image Volume backup entre plusieurs projets Public Cloud.
Avec OpenStack, vous pouvez partager une image entre plusieurs projets, même s'ils n'appartiennent pas au même compte.
Cette fonctionnalité offre de nombreuses possibilités mais elle comporte également des risques. Il est donc important d'en comprendre les principes.
Par exemple, si vous souhaitez partager une image d'un projet A avec un projet B (dans le même compte ou dans un compte différent), les règles suivantes s'appliquent :
-
- Les images ne peuvent être partagées qu'au sein de la même région. Par exemple, une image créée sur le projet A dans la région GRA11 ne sera disponible que pour le projet B dans cette même région GRA11.
- L'image reste attachée physiquement au projet A. Le projet B ne dispose que d'une « autorisation d'accès » à cette image.
- Si le Projet A supprime l'accès à l'image (suppression de l'ACL, suppression de l'image, suppression du projet pour factures impayées, etc.), les instances s'exécutant à partir de cette image sur le Projet B peuvent ne plus fonctionner en raison de problèmes de migration ou de reconstruction.
Il est donc important de garder cela à l'esprit avant de s'engager dans cette configuration.
Pour plus d'informations, veuillez consulter la documentation officielle OpenStack{.external}.
Ce guide vous montrera comment partager des images entre un ou plusieurs projets, tout en préservant la configuration et l'état de l'image.
Avant de suivre ces étapes, il est recommandé de consulter d'abord ce guide :
Vous aurez également besoin de :
- posséder une Instance Public Cloud dans votre compte OVHcloud ;
- Un utilisateur OpenStack créé dans votre projet ;
[!primary]
Ce guide fait référence à l'utilisation du client de ligne de commande OpenStack{.external}.
Tout d'abord, exécutez la commande suivante pour répertorier vos images existantes :
$ openstack image list --private
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | pfsense |
Warning
Pour être partagée, une image doit d'abord être mise en « visibilité partagée » (shared visibility).
$ openstack image set --shared <Image_UUID>
Vous pouvez exécuter la commande suivante pour lister vos images pouvant être partagées avec un autre projet :
$ openstack image list --shared
9a0fbdc5-****-****-****-8d404a1313ba pfsense
L'étape suivante consiste à ajouter l'UUID d'un autre projet comme membre de l'image. Dans notre exemple ci-dessous, nous ajoutons l'UUID du « Projet B ».
$ 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 |
+------------+--------------------------------------+
Une fois cela fait, vérifiez la demande sur le projet B :
$ openstack image member list <Image_UUID>
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | <UUID_Project_B> | pending |
+--------------------------------------+----------------------------------+----------+
Si la demande de partage est en statut pending
, vous devez l'accepter :
$ openstack image set --accept 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | eff99684d8294dbe8c2d4dd7407073f1 | accepted |
+--------------------------------------+----------------------------------+----------+
Une fois la demande de partage acceptée, vérifiez que vous pouvez voir et accéder à l'image :
$ 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 |
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Pour voir tous les projets ayant accès à l’image depuis le projet source (dans ce cas, le projet A), vous pouvez exécuter cette commande :
$ 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 |
+--------------------------------------+----------------------------------+----------+
Dans le projet source (projet A), vous pouvez supprimer un membre du partage :
$ openstack image remove project <image> <UUID_Projet_A_Supprimer>
Transférer la sauvegarde d'une instance d'un datacenter à un autre.
Échangez avec notre communauté d'utilisateurs.