Questo documento descrive come copiare la VM in un altro progetto.
Prima di iniziare
- Consulta le best practice per disco permanente permanenti e prepara il disco di avvio per gli snapshot.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per copiare le VM tra progetti,
chiedi all'amministratore di concederti il ruolo IAM Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1
) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per copiare le VM tra i progetti. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per copiare le VM tra progetti sono necessarie le seguenti autorizzazioni:
-
compute.instances.create
sul progetto -
Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnly
sull'immagine -
Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnly
sullo snapshot -
Per utilizzare un modello di istanza per creare la VM:
compute.instanceTemplates.useReadOnly
nel modello di istanza -
Per assegnare una rete legacy alla VM:
compute.networks.use
nel progetto -
Per specificare un indirizzo IP statico per la VM:
compute.addresses.use
nel progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy:
compute.networks.useExternalIp
nel progetto -
Per specificare una subnet per la VM:
compute.subnetworks.use
nel progetto o nella subnet scelta -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC:
compute.subnetworks.useExternalIp
nel progetto o nella subnet scelta -
Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadata
nel progetto -
Per impostare i tag per la VM:
compute.instances.setTags
sulla VM -
Per impostare le etichette per la VM:
compute.instances.setLabels
sulla VM -
Per impostare un account di servizio da utilizzare per la VM:
compute.instances.setServiceAccount
sulla VM -
Per creare un nuovo disco per la VM:
compute.disks.create
nel progetto -
Per collegare un disco esistente in modalità di sola lettura o di lettura e scrittura:
compute.disks.use
sul disco -
Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnly
sul disco
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Copiare una VM in un altro progetto
Nel progetto di origine, crea uno snapshot del disco di avvio della VM utilizzando uno tra i seguenti comandi:
Disco di avvio zonale
Se la VM ha un disco di avvio zonale, crea uno snapshot utilizzando il seguente comando:
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --snapshot-type SNAPSHOT_TYPE \ --source-disk-zone SOURCE_DISK_ZONE
Sostituisci quanto segue:
- SNAPSHOT_NAME: un nome per lo snapshot.
- SOURCE_DISK: il nome del volume Persistent Disk a livello di zona da cui vuoi creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE. Se non viene specificato un tipo di snapshot, viene creato uno snapshot STANDARD. Scegli Archiviazione per una conservazione dei dati più economica.
- SOURCE_DISK_ZONE: la zona del volume del Persistent Disk zonale da cui vuoi creare uno snapshot.
Disco di avvio regionale
Se la VM ha un disco di avvio regionale, crea uno snapshot utilizzando il seguente comando:
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-region=SOURCE_DISK_REGION \ --snapshot-type=SNAPSHOT_TYPE
Sostituisci quanto segue:
- SNAPSHOT_NAME: un nome per lo snapshot.
- SOURCE_DISK: il nome del volume del Persistent Disk regionale da cui vuoi creare uno snapshot.
- SOURCE_DISK_REGION: la regione del volume del Persistent Disk regionale da cui vuoi creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE. Se non viene specificato un tipo di snapshot, viene creato uno snapshot STANDARD.
Crea un'immagine personalizzata dallo snapshot utilizzando il seguente comando:
gcloud compute images create IMAGE_NAME \ --source-snapshot=SOURCE_SNAPSHOT \ [--storage-location=LOCATION]
Sostituisci quanto segue:
IMAGE_NAME
: un nome per la nuova immagineSOURCE_SNAPSHOT
: lo snapshot da cui vuoi creare l'immagineLOCATION
: facoltativo, un flag che consente di designare la regione o la regione multipla in cui è archiviata l'immagine. Ad esempio, specificaus
per archiviare l'immagine nella località con più aree geograficheus
ous-central1
per archiviarla nella regioneus-central1
. Se non effettui una selezione, Compute Engine archivia l'immagine nella regione più vicina alla località di origine dell'immagine.
(Facoltativo) Condividi l'immagine personalizzata con gli utenti che creano VM nel progetto di destinazione. Per ulteriori informazioni sulla condivisione di immagini personalizzate, consulta Condividere un'immagine personalizzata all'interno di un'organizzazione.
Nel progetto di destinazione, crea una VM dall'immagine personalizzata utilizzando il seguente comando:
gcloud compute instances create VM_NAME \ --image-project IMAGE_PROJECT \ [--image IMAGE | --image-family IMAGE_FAMILY] --subnet SUBNET
Sostituisci quanto segue:
VM_NAME
: il nome della VMIMAGE_PROJECT
: l'ID progetto che contiene l'immagineIMAGE
oIMAGE_FAMILY
: specifica una delle seguenti opzioni:IMAGE
: nome dell'immagine personalizzataAd esempio,
--image=my-debian-image-v2
.IMAGE_FAMILY
: se hai creato le immagini personalizzate all'interno di una famiglia di immagini personalizzate, specifica questa famiglia di immagini personalizzate.In questo modo viene creata la VM dall'immagine e dalla versione del sistema operativo più recenti e non deprecate nella famiglia di immagini personalizzate. Ad esempio, se specifichi
--image-family=my-debian-family
, Compute Engine crea una VM dall'immagine del sistema operativo più recente nella famiglia di immagini personalizzatemy-debian-family
.
SUBNET
: se la subnet e l'istanza si trovano nello stesso progetto, sostituisci SUBNET con il nome di una subnet che si trova nella stessa regione dell'istanza.Per specificare una subnet in una rete VPC condiviso, sostituisci
SUBNET
con una stringa del seguente formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Sostituisci quanto segue:
HOST_PROJECT_ID
è l'ID progetto del progetto host VPC condivisoREGION
è la regione della subnetSUBNET_NAME
è il nome della subnet
Anche la regione della subnet per una rete VPC condivisa deve corrispondere alla regione contenente l'istanza.
Passaggi successivi
- Personalizza la rete VPC del progetto di destinazione.