Este documento descreve como copiar a sua VM para um projeto diferente.
Antes de começar
- Reveja as práticas recomendadas para instantâneos de discos persistentes e prepare o disco de arranque para instantâneos.
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud initSe estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- Set a default region and zone.
-
Funções necessárias
Para receber as autorizações de que
precisa para copiar a VM entre projetos,
peça ao seu administrador para lhe conceder a função de IAM
Administrador de instâncias do Compute (v1) (roles/compute.instanceAdmin.v1)
no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para copiar a VM entre projetos. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para copiar VMs entre projetos:
-
compute.instances.createno projeto -
Para usar uma imagem personalizada para criar a VM:
compute.images.useReadOnlyna imagem -
Para usar um instantâneo para criar a VM:
compute.snapshots.useReadOnlyno instantâneo -
Para usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnlyno modelo de instância -
Para especificar uma sub-rede para a sua VM:
compute.subnetworks.useno projeto ou na sub-rede escolhida -
Para especificar um endereço IP estático para a VM:
compute.addresses.useno projeto -
Para atribuir um endereço IP externo à VM quando usar uma rede VPC:
compute.subnetworks.useExternalIpno projeto ou na sub-rede escolhida -
Para atribuir uma rede antiga à VM:
compute.networks.useno projeto -
Para atribuir um endereço IP externo à VM quando usar uma rede antiga:
compute.networks.useExternalIpno projeto -
Para definir os metadados da instância de VM para a VM:
compute.instances.setMetadatano projeto -
Para definir etiquetas para a VM:
compute.instances.setTagsna VM -
Para definir etiquetas para a VM:
compute.instances.setLabelsna VM -
Para definir uma conta de serviço para a VM usar:
compute.instances.setServiceAccountna VM -
Para criar um novo disco para a VM:
compute.disks.createno projeto -
Para anexar um disco existente no modo de leitura ou leitura/escrita:
compute.disks.useno disco -
Para anexar um disco existente no modo de leitura:
compute.disks.useReadOnlyno disco
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Copie uma VM para outro projeto
No projeto de origem, crie um instantâneo do disco de arranque da VM com um dos seguintes comandos:
Disco de arranque zonal
Se a sua VM tiver um disco de arranque zonal, crie um instantâneo com o seguinte comando:
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --snapshot-type SNAPSHOT_TYPE \ --source-disk-zone SOURCE_DISK_ZONESubstitua o seguinte:
- SNAPSHOT_NAME: um nome para o resumo.
- SOURCE_DISK: o nome do volume do Persistent Disk zonal a partir do qual quer criar um instantâneo.
- SNAPSHOT_TYPE: o tipo de instantâneo, STANDARD ou ARCHIVE. Se não for especificado um tipo de instantâneo, é criado um instantâneo STANDARD. Escolha Arquivar para uma retenção de dados mais rentável.
- SOURCE_DISK_ZONE: a zona do volume do Persistent Disk zonal a partir do qual quer criar um instantâneo.
Disco de arranque regional
Se a sua VM tiver um disco de arranque regional, crie um instantâneo com o seguinte comando:
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-region=SOURCE_DISK_REGION \ --snapshot-type=SNAPSHOT_TYPESubstitua o seguinte:
- SNAPSHOT_NAME: um nome para o resumo.
- SOURCE_DISK: O nome do volume do Persistent Disk regional a partir do qual quer criar um instantâneo.
- SOURCE_DISK_REGION: a região do volume do Persistent Disk regional a partir do qual quer criar um instantâneo.
- SNAPSHOT_TYPE: o tipo de instantâneo, STANDARD ou ARCHIVE. Se não for especificado um tipo de instantâneo, é criado um instantâneo STANDARD.
Crie uma imagem personalizada a partir da captura de ecrã com o seguinte comando:
gcloud compute images create IMAGE_NAME \ --source-snapshot=SOURCE_SNAPSHOT \ [--storage-location=LOCATION]Substitua o seguinte:
IMAGE_NAME: um nome para a nova imagemSOURCE_SNAPSHOT: o instantâneo a partir do qual quer criar a imagemLOCATION: Opcional: um indicador que lhe permite designar a região ou a região múltipla onde a sua imagem está armazenada. Por exemplo, especifiqueuspara armazenar a imagem nausregião multirregional ouus-central1para a armazenar na regiãous-central1. Se não fizer uma seleção, o Compute Engine armazena a imagem na multirregião mais próxima da localização de origem da imagem.
Opcional: partilhe a imagem personalizada com os utilizadores que criam VMs no projeto de destino. Para mais informações sobre a partilha de imagens personalizadas, consulte o artigo Partilhar uma imagem personalizada numa organização.
No projeto de destino, crie uma VM a partir da imagem personalizada com o seguinte comando:
gcloud compute instances create VM_NAME \ --image-project IMAGE_PROJECT \ IMAGE_FLAG \ --subnet SUBNETSubstitua o seguinte:
VM_NAME: o nome da VMIMAGE_PROJECT: o ID do projeto que contém a imagem Google CloudIMAGE_FLAG: especifique uma das seguintes opções:- Use a flag
--image IMAGE_NAMEpara especificar uma imagem personalizada.Por exemplo,
--image my-debian-image-v2. - Se criou as imagens personalizadas
como parte de uma família de imagens personalizadas,
use a flag
--image-family IMAGE_FAMILY_NAMEpara especificar essa família de imagens personalizadas.Esta ação cria a VM a partir da imagem do SO e da versão do SO não descontinuadas mais recentes na sua família de imagens personalizadas. Por exemplo, se especificar
--image-family my-debian-family, o Compute Engine cria uma VM a partir da imagem do SO mais recente na sua família de imagensmy-debian-familypersonalizada.
- Use a flag
SUBNET: se a sub-rede e a instância estiverem no mesmo projeto, substituaSUBNETpelo nome de uma sub-rede que esteja na mesma região que a instância.Para especificar uma sub-rede numa rede de VPC partilhada, substitua
SUBNETpor uma string do seguinte formulário:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAMESubstitua o seguinte:
HOST_PROJECT_ID: o ID do projeto do projeto anfitrião da VPC partilhadaREGION: a região da sub-redeSUBNET_NAME: o nome da sub-rede
A região da sub-rede para uma rede VPC partilhada também tem de corresponder à região que contém a instância.
O que se segue?
- Personalize a rede VPC do projeto de destino.