Neste documento, descrevemos como copiar sua VM para um projeto diferente.
Antes de começar
- Consulte as Práticas recomendadas para snapshots de discos permanentes e prepare o disco de inicialização para os snapshots.
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Funções exigidas
Para ter as permissões necessárias para copiar a VM entre projetos,
peça ao administrador para conceder a você o papel de
Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1
) do IAM no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para copiar a VM entre projetos. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para copiar a VM entre projetos:
-
compute.instances.create
no projeto -
Usar uma imagem personalizada a fim de criar a VM:
compute.images.useReadOnly
na imagem -
Usar um snapshot para criar a VM:
compute.snapshots.useReadOnly
no snapshot -
Usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnly
no modelo de instância -
Atribuir uma rede legada à VM:
compute.networks.use
no projeto -
Especificar um endereço IP estático para a VM:
compute.addresses.use
no projeto -
Atribuir um endereço IP externo à VM ao usar uma rede legada:
compute.networks.useExternalIp
no projeto -
Especificar uma sub-rede para a VM:
compute.subnetworks.use
no projeto ou na sub-rede escolhida -
Atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIp
no projeto ou na sub-rede escolhida -
Definir os metadados da instância de VM para a VM:
compute.instances.setMetadata
no projeto -
Definir tags para a VM:
compute.instances.setTags
na VM -
Definir rótulos para a VM:
compute.instances.setLabels
na VM -
Definir uma conta de serviço a ser usada pela VM:
compute.instances.setServiceAccount
na VM -
Criar um disco para a VM:
compute.disks.create
no projeto -
Anexar um disco atual no modo somente leitura ou de leitura e gravação:
compute.disks.use
no disco -
Anexar um disco atual no modo somente leitura:
compute.disks.useReadOnly
no disco
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Copiar uma VM para outro projeto
No projeto de origem, crie um snapshot do disco de inicialização da VM usando um dos seguintes comandos:
Disco de inicialização zonal
Se sua VM tiver um disco de inicialização zonal, crie um snapshot usando o seguinte comando:
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --snapshot-type SNAPSHOT_TYPE \ --source-disk-zone SOURCE_DISK_ZONE
Substitua:
- SNAPSHOT_NAME: um nome para o snapshot.
- SOURCE_DISK: o nome do volume de disco permanente zonal com base no qual você quer criar um snapshot.
- SNAPSHOT_TYPE: o tipo de snapshot que pode ser STANDARD ou ARCHIVE. Se um tipo de snapshot não for especificado, um snapshot STANDARD será criado. Escolha "Arquivo' para uma retenção de dados mais econômica.
- SOURCE_DISK_ZONE: a zona do volume de disco permanente zonal com base na qual você quer criar um snapshot.
Disco de inicialização regional
Se sua VM tiver um disco de inicialização regional, crie um snapshot usando o seguinte comando:
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-region=SOURCE_DISK_REGION \ --snapshot-type=SNAPSHOT_TYPE
Substitua:
- SNAPSHOT_NAME: um nome para o snapshot.
- SOURCE_DISK: o nome do volume de disco permanente regional a partir do qual você quer criar um snapshot.
- SOURCE_DISK_REGION: o nome do Persistent Disk regional do qual você quer criar um snapshot
- SNAPSHOT_TYPE: o tipo de snapshot que pode ser PADRÃO ou ARCHIVE. Se um tipo de snapshot não for especificado, um snapshot STANDARD será criado.
Crie uma imagem personalizada a partir do snapshot usando o seguinte comando:
gcloud compute images create IMAGE_NAME \ --source-snapshot=SOURCE_SNAPSHOT \ [--storage-location=LOCATION]
Substitua:
IMAGE_NAME
: um nome para a nova imagem.SOURCE_SNAPSHOT
: o snapshot que você quer usar como base para criar a imagem.LOCATION
(opcional): uma sinalização que permite designar a região ou a multirregião em que a imagem está armazenada. Por exemplo, especifiqueus
para armazenar a imagem na multirregiãous
ouus-central1
para armazená-la na regiãous-central1
. Se você não especificar, o Compute Engine armazenará a imagem na multirregião mais próxima do local de origem dela.
Opcional: compartilhe a imagem personalizada com os usuários que criam VMs no projeto de destino. Para mais informações sobre como compartilhar imagens personalizadas, consulte Como compartilhar uma imagem personalizada em uma organização.
No projeto de destino, crie uma VM com base na imagem personalizada usando o seguinte comando:
gcloud compute instances create VM_NAME \ --image-project IMAGE_PROJECT \ [--image IMAGE | --image-family IMAGE_FAMILY] --subnet SUBNET
Substitua:
VM_NAME
: nome da VM;IMAGE_PROJECT
: ID do projeto que contém a imagemIMAGE
ouIMAGE_FAMILY
: especifique uma das seguintes opções:IMAGE
: nome da imagem personalizada.Por exemplo,
--image=my-debian-image-v2
IMAGE_FAMILY
: se você criou suas imagens personalizadas como parte de uma família de imagens personalizadas, especifique essa família.Isso cria a VM a partir da versão mais recente e não obsoleta do sistema operacional da imagem do SO na sua família de imagens personalizadas. Por exemplo, se você especificar
--image-family=my-debian-family
, o Compute Engine criará uma VM a partir da imagem do SO mais recente na família de imagens personalizadasmy-debian-family
.
SUBNET
: se a sub-rede e a instância estiverem no mesmo projeto, substitua SUBNET pelo nome de uma sub-rede que esteja na mesma região da instância.Para especificar uma sub-rede em uma rede VPC compartilhada, substitua
SUBNET
por uma string do formulário:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Substitua:
HOST_PROJECT_ID
: o ID do projeto do projeto host da VPC compartilhadaREGION
é a região da sub-redeSUBNET_NAME
é o nome da sub-rede
A região da sub-rede de uma rede VPC compartilhada também precisa corresponder à região que contém a instância.
A seguir
- Personalize a rede VPC do projeto de destino.