From 0a58c48a7b683216209c6d3c265b2371c7c2abec Mon Sep 17 00:00:00 2001 From: Dylan Wheeler Date: Wed, 3 Dec 2025 13:10:10 -0600 Subject: [PATCH 1/3] feat: move sharing documentation from gitlab repo to docs --- docs/openstack/share_image.md | 98 +++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 99 insertions(+) create mode 100644 docs/openstack/share_image.md diff --git a/docs/openstack/share_image.md b/docs/openstack/share_image.md new file mode 100644 index 0000000..5c4b394 --- /dev/null +++ b/docs/openstack/share_image.md @@ -0,0 +1,98 @@ +# Share an Image in Openstack + +You can share an image from your project with a collaborator in a different project in OpenStack cloud so you can both launch instances using the same image. As the owner of the image, you can revoke the sharing privilege at any time. You can also use these methods to share an image with yourself in other projects, just think of yourself as the collaborator. + +**Prerequisites:** + +- You will need to set up the OpenStack CLI to work with the project where the image to be shared is located. + + ```shell + python3 -m venv openstackclient-env + source openstackclient-env/bin/activate + pip install --upgrade pip + pip install python-openstackclient + ``` + +- Source the openrc file from your openstack project. You can download it from your openstack project's dashboard by clicking on the project name in the top right. Click on the Openstack RC file from the drop down to download it. + + ```shell + # Source your openrc file + source + ``` + +- Find the ID of the target project you want to share the image with + + ```shell + # This runs on the receiver + openstack project list + ``` + +This information can also be found via the OpenStack UI + +## Share an Image With Another Project + +1. Find the image ID you want to share + + ```shell + openstack image list + ``` + +1. Set the image visibility to shared + + ```shell + openstack image set --shared + ``` + +1. Share the image with the target project + + ```shell + openstack image add project + ``` + +## Accept a Shared Image + +- Source the Target Project's Credentials: The user in the target project needs to source the appropriate OpenStack credentials for their project. +- Accept the Shared Image: The target project user then accepts the shared image using its ID: + + ```sh + # Run this on receiver's end + openstack image set --accept + ``` + +Upon acceptance, the image will appear in the target project's image list. + +## Unshare an Image (Optional) + +If you would like to remove a project from having access to the image, you can do the following + +- An image's owner can see which projects have access to the image: + + ```shell + openstack image member list + ``` + +- The owner can unshare an image like this: + + ```shell + openstack image remove project + ``` + +## Share an Image With the Community (Optional) + +You can also share an image with a community of users. + +- To share an image with the community you need to set the visibility like this + + ```shell + openstack image set --visibility community + ``` + +Community images do not appear in the default image lists. + +- To list an image shared to the community + + ```shell + openstack image list --community + ``` + +If you need to withdraw a community image, you can change its visibility back to "private" or delete it. diff --git a/mkdocs.yml b/mkdocs.yml index b423f10..5ec71ba 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -79,6 +79,7 @@ nav: - Openstack: - VM Migration: openstack/vm_migration.md - VM Service Setup: service/service_setup.md + - Share Openstack Image: openstack/share_image.md validation: nav: From a00342ae60c5f51b6d5a9e74d88d6db90b16151f Mon Sep 17 00:00:00 2001 From: Dylan Wheeler Date: Wed, 10 Dec 2025 12:30:45 -0600 Subject: [PATCH 2/3] feat: add visibility table. add web ui instructions and pictures --- docs/openstack/image-1.png | Bin 0 -> 39146 bytes docs/openstack/image-2.png | Bin 0 -> 6571 bytes docs/openstack/image.png | Bin 0 -> 18609 bytes docs/openstack/share_image.md | 17 +++++++++++++++++ 4 files changed, 17 insertions(+) create mode 100644 docs/openstack/image-1.png create mode 100644 docs/openstack/image-2.png create mode 100644 docs/openstack/image.png diff --git a/docs/openstack/image-1.png b/docs/openstack/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b33c4d71b03d79b11e88cddebc98c47790d6f4 GIT binary patch literal 39146 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≪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 literal 0 HcmV?d00001 diff --git a/docs/openstack/image.png b/docs/openstack/image.png new file mode 100644 index 0000000000000000000000000000000000000000..bba332202425066612301bde2be7948c9e50387d GIT binary patch literal 18609 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 W;Yd;a$R&USey?SerAsA^0{ Date: Wed, 10 Dec 2025 13:00:30 -0600 Subject: [PATCH 3/3] style: correcting style inconsistencies and header style --- docs/openstack/share_image.md | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/openstack/share_image.md b/docs/openstack/share_image.md index df1b9d4..4f1a0a5 100644 --- a/docs/openstack/share_image.md +++ b/docs/openstack/share_image.md @@ -1,19 +1,19 @@ # Share an Image in Openstack -You can share an image from your project with a collaborator in a different project in OpenStack cloud so you can both launch instances using the same image. As the owner of the image, you can revoke the sharing privilege at any time. You can also use these methods to share an image with yourself in other projects, just think of yourself as the collaborator. +You can share an image from your project with a collaborator in a different project in OpenStack cloud so you can both launch instances using the same image. As the owner of the image, you can revoke the sharing privilege at any time. You can also use these methods to share an image with yourself in other projects, just think of yourself as the collaborator. ## Image Visibility Descriptions | Visibility | Description | | ---------- | ----------- | -| public | Any user may read the image and its data payload. Additionally, the image appears in the default image list of all users. **If you need your image to be public level, it will require a support request** | +| public | Any user may read the image and its data payload. Additionally, the image appears in the default image list of all users. **If you need your image to be public level, it will require a support request** | | community | Any user may read the image and its data payload, but the image does not appear in the default image list of any user other than the owner. | | shared | Only the owner and the specific image members who have been added to the image may read the image or its data payload. The image appears in the default image list of the owner. It also appears in the default image list of members who have accepted the image. Non-owners, however, will not have access to the image until they are added as image members. | | private (**default**) | Only the owner image may read the image or its data payload. Additionally, the image appears in the owner’s default image list. | -**Prerequisites:** +## Prerequisites -- You will need to set up the OpenStack CLI to work with the project where the image to be shared is located. +- Set up the OpenStack CLI to work with the project where the image to be shared is located. ```shell python3 -m venv openstackclient-env @@ -29,30 +29,30 @@ You can share an image from your project with a collaborator in a different proj source ``` -- Find the ID of the target project you want to share the image with +- Find the ID of the target project you want to share the image with. ```shell # This runs on the receiver openstack project list ``` -This information can also be found via the OpenStack UI +The ID can also be found via the OpenStack UI. ## Share an Image With Another Project -1. Find the image ID you want to share +1. Find the image ID you want to share. ```shell openstack image list ``` -1. Set the image visibility to shared +1. Set the image visibility to shared. ```shell openstack image set --shared ``` -1. Share the image with the target project +1. Share the image with the target project. ```shell openstack image add project @@ -60,8 +60,8 @@ This information can also be found via the OpenStack UI ## Accept a Shared Image -- Source the Target Project's Credentials: The user in the target project needs to source the appropriate OpenStack credentials for their project. -- Accept the Shared Image: The target project user then accepts the shared image using its ID: +- Source the Target Project's Credentials. The user in the target project needs to source the appropriate OpenStack credentials for their project. +- Accept the Shared Image. The target project user then accepts the shared image using its ID: ```sh # Run this on receiver's end @@ -72,15 +72,15 @@ Upon acceptance, the image will appear in the target project's image list. ## Unshare an Image (Optional) -If you would like to remove a project from having access to the image, you can do the following +If you would like to revoke a project's access to an image, you can do the following -- An image's owner can see which projects have access to the image: +- The image owner can see which projects have access to the image. ```shell openstack image member list ``` -- The owner can unshare an image like this: +- The owner can unshare an image like this. ```shell openstack image remove project @@ -90,7 +90,7 @@ If you would like to remove a project from having access to the image, you can d You can also share an image with a community of users. -- To share an image with the community you need to set the visibility like this +- To share an image with the community you need to set the visibility like this. ```shell openstack image set --visibility community @@ -98,7 +98,7 @@ You can also share an image with a community of users. Community images do not appear in the default image lists. -- To list an image shared to the community +- To list an image shared to the community. ```shell openstack image list --community @@ -106,10 +106,10 @@ Community images do not appear in the default image lists. ## Share an Image Using OpensStack UI -- In the [web interface](https://cloud.rc.uab.edu) you will navigate the dropdown to Compute then select Images ![compute dropdown showing the selected images tab](image-1.png) +- In the [web interface](https://cloud.rc.uab.edu) you will navigate the dropdown to Compute then select Images. ![compute dropdown showing the selected images tab](image-1.png) -- From here locate the image you would like to share and locate the dropdown labeled `Launch` and click in to the dropdown menu there ![image showing the Launch button and dropdown arrow](image-2.png) +- From here locate the image you would like to share and locate the dropdown labeled `Launch` and click in to the dropdown menu there. ![image showing the Launch button and dropdown arrow](image-2.png) -- In the dropdown menu select `Edit Image` and then in the popup you will be given the choice to change the visibility ![visibility levels in openstack edit menu](image.png) +- In the dropdown menu select `Edit Image` and then in the popup you will be given the choice to change the visibility. ![visibility levels in openstack edit menu](image.png) If you need to withdraw a community image, you can change its visibility back to "private" or delete it.