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 init
Se 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 VMs 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.create
no projeto -
Para usar uma imagem personalizada para criar a VM:
compute.images.useReadOnly
na imagem -
Para usar um instantâneo para criar a VM:
compute.snapshots.useReadOnly
no instantâneo -
Para usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnly
no modelo de instância -
Para especificar uma sub-rede para a sua VM:
compute.subnetworks.use
no projeto ou na sub-rede escolhida -
Para especificar um endereço IP estático para a VM:
compute.addresses.use
no projeto -
Para atribuir um endereço IP externo à VM quando usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida -
Para atribuir uma rede antiga à VM:
compute.networks.use
no projeto -
Para atribuir um endereço IP externo à VM quando usar uma rede antiga:
compute.networks.useExternalIp
no projeto -
Para definir os metadados da instância de VM para a VM:
compute.instances.setMetadata
no projeto -
Para definir etiquetas para a VM:
compute.instances.setTags
na VM -
Para definir etiquetas para a VM:
compute.instances.setLabels
na VM -
Para definir uma conta de serviço para a VM usar:
compute.instances.setServiceAccount
na VM -
Para criar um novo disco para a VM:
compute.disks.create
no projeto -
Para anexar um disco existente no modo de leitura ou leitura/escrita:
compute.disks.use
no disco -
Para anexar um disco existente no modo de leitura:
compute.disks.useReadOnly
no 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_ZONE
Substitua 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_TYPE
Substitua 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, especifiqueus
para armazenar a imagem naus
região multirregional ouus-central1
para 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 SUBNET
Substitua 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_NAME
para especificar uma imagem personalizada.Por exemplo,
--image my-debian-image-v2
. - Se criou as suas imagens personalizadas
como parte de uma família de imagens personalizadas,
use a flag
--image-family IMAGE_FAMILY_NAME
para 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-family
personalizada.
- Use a flag
SUBNET
: se a sub-rede e a instância estiverem no mesmo projeto, substituaSUBNET
pelo 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
SUBNET
por uma string do seguinte formulário:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Substitua 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 de 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.