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.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Cloud de Confiance by S3NS . Para executar código ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:
-
Instale a CLI do Google Cloud e faça login na gcloud CLI com sua identidade federada. Depois de fazer login, inicialize a CLI do Google Cloud executando o seguinte comando:
gcloud init - Set a default region and zone.
-
Funções exigidas
Para receber as permissões necessárias para copiar a VM entre projetos, peça ao administrador para conceder a você o papel do IAM de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) 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.createno projeto -
Usar uma imagem personalizada para criar a VM:
compute.images.useReadOnlyna imagem -
Usar um snapshot para criar a VM:
compute.snapshots.useReadOnlyno snapshot -
Usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnlyno modelo de instância -
Especificar uma sub-rede para a VM:
compute.subnetworks.useno projeto ou na sub-rede escolhida -
Especificar um endereço IP estático para a VM:
compute.addresses.useno projeto -
Atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIpno projeto ou na sub-rede escolhida -
Atribuir uma rede legada à VM:
compute.networks.useno projeto -
Atribuir um endereço IP externo à VM usando uma rede legada:
compute.networks.useExternalIpno projeto -
Definir os metadados da instância de VM para a VM:
compute.instances.setMetadatano projeto -
Definir tags para a VM:
compute.instances.setTagsna VM -
Definir rótulos para a VM:
compute.instances.setLabelsna VM -
Definir uma conta de serviço a ser usada pela VM:
compute.instances.setServiceAccountna VM -
Criar um disco para a VM:
compute.disks.createno projeto -
Anexar um disco atual no modo somente leitura ou de leitura e gravação:
compute.disks.useno disco -
Anexar um disco atual no modo somente leitura:
compute.disks.useReadOnlyno 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_ZONESubstitua:
- 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_TYPESubstitua:
- 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 PADRÃO 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, especifiqueuspara armazenar a imagem na multirregiãousouus-central1para 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_FLAG \ --subnet SUBNETSubstitua:
VM_NAME: o nome da VMIMAGE_PROJECT: o ID do Cloud de Confiance projeto que contém a imagemIMAGE_FLAG: especifique uma destas opções:- Use a flag
--image IMAGE_NAMEpara especificar uma imagem personalizada.Por exemplo,
--image my-debian-image-v2 - Se você criou imagens personalizadas como parte de uma família de imagens personalizadas, use a flag
--image-family IMAGE_FAMILY_NAMEpara especificar 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.
- 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 da instância.Para especificar uma sub-rede em uma rede VPC compartilhada, substitua
SUBNETpor uma string do formulário:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAMESubstitua:
HOST_PROJECT_ID: o ID 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.