Partilhar imagens entre projetos Public Cloud
Objetivo
Pode ser necessário partilhar uma imagem Instance backup ou uma imagem Volume backup entre vários projetos Public Cloud.
Com OpenStack, poderá partilhar uma imagem entre vários projetos, mesmo que não pertençam à mesma conta.
Esta funcionalidade oferece muitas possibilidades, mas também acarreta riscos. Por isso, é importante compreender os seus princípios.
Por exemplo, se deseja partilhar uma imagem de um projeto A com um projeto B (na mesma conta ou numa conta diferente), aplicam-se as seguintes regras:
- As imagens só podem ser partilhadas na mesma região. Por exemplo, uma imagem criada no projeto A na região GRA11 estará apenas disponível para o projeto B na mesma região GRA11.
- A imagem fica fisicamente ligada ao projeto A. O projeto B só dispõe de uma « autorização de acesso » a esta imagem.
- Se o Projeto A eliminar o acesso à imagem (eliminação da ACL, supressão da imagem, supressão do projeto para faturas não pagas, etc.), as instâncias que são executadas a partir desta imagem no Projeto B podem deixar de funcionar devido a problemas de migração ou de reconstrução.
Por isso, é importante ter isto em mente antes de nos envolvermos nesta configuração.
Para mais informações, consulte a documentação oficial OpenStack.
Este manual explica-lhe como partilhar imagens entre um ou vários projetos, mantendo a configuração e o estado da imagem.
Requisitos
Antes de seguir estes passos, recomendamos que consulte primeiro este guia:
Necessitará igualmente de:
Instruções
Partilhar uma imagem
Em primeiro lugar, execute o seguinte comando para listar as imagens existentes:
$ openstack image list --private
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | pfsense |
Warning
Para ser partilhada, uma imagem deve primeiro ser colocada em « visibilidade partilhada » (shared visibility).
$ openstack image set --shared <Image_UUID>
Pode executar o seguinte comando para listar as suas imagens que podem ser partilhadas com outro projeto:
$ openstack image list --shared
9a0fbdc5-****-****-****-8d404a1313ba pfsense
Adicionar um projeto a uma imagem
O próximo passo é adicionar o UUID de outro projeto como um membro da imagem. No nosso exemplo abaixo, adicionamos o UUID do « Projeto 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 |
+------------+--------------------------------------+
Depois de fazer isso, verifique a solicitação no projeto B:
$ openstack image member list <Image_UUID>
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | <UUID_Project_B> | pending |
+--------------------------------------+----------------------------------+----------+
Se o pedido de partilha estiver em estado pending, deve aceitá-lo:
$ openstack image set --accept 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba
+--------------------------------------+----------------------------------+----------+
| Image ID | Member ID | Status |
+--------------------------------------+----------------------------------+----------+
| 9a0fbdc5-1f4a-4a1c-ad46-8d404a1313ba | eff99684d8294dbe8c2d4dd7407073f1 | accepted |
+--------------------------------------+----------------------------------+----------+
Depois de o pedido de partilha ser aceite, verifique se pode ver e aceder à imagem:
$ 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 |
+------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Verificar os membros de uma imagem
Para visualizar todos os projetos com acesso à imagem, a partir do projeto source (neste caso o projeto A), execute este comando:
$ 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 |
+--------------------------------------+----------------------------------+----------+
Excluir um membro de uma imagem ou anular a partilha de uma imagem
No projeto source (projeto A), pode suprimir um membro da partilha:
$ openstack image remove project <image> <UUID_Project_To_Delete>
Saiba mais
Transferir a cópia de segurança de uma instância de um datacenter para outro.
Fale com nossa comunidade de utilizadores.