Questo documento spiega come copiare la VM in un altro progetto.
Prima di iniziare
- Rivedi le best practice per gli snapshot dei dischi permanenti e prepara il disco di avvio per gli snapshot.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso a Google Cloud servizi e API. Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
- 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 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) sul progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per copiare le VM tra i progetti. Per vedere quali sono esattamente le autorizzazioni necessarie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per copiare le VM tra progetti sono necessarie le seguenti autorizzazioni:
-
compute.instances.createsul progetto -
Per utilizzare un'immagine personalizzata per creare la VM:
compute.images.useReadOnlysull'immagine -
Per utilizzare uno snapshot per creare la VM:
compute.snapshots.useReadOnlysullo snapshot -
Per utilizzare un template di istanza per creare la VM:
compute.instanceTemplates.useReadOnlysul template di istanza -
Per specificare una subnet per la VM:
compute.subnetworks.usesul progetto o sulla subnet scelta -
Per specificare un indirizzo IP statico per la VM:
compute.addresses.usesul progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete VPC:
compute.subnetworks.useExternalIpsul progetto o sulla subnet scelta -
Per assegnare una rete legacy alla VM:
compute.networks.usesul progetto -
Per assegnare un indirizzo IP esterno alla VM quando utilizzi una rete legacy:
compute.networks.useExternalIpsul progetto -
Per impostare i metadati dell'istanza VM per la VM:
compute.instances.setMetadatasul progetto -
Per impostare i tag per la VM:
compute.instances.setTagssulla VM -
Per impostare le etichette per la VM:
compute.instances.setLabelssulla VM -
Per impostare un service account che la VM possa utilizzare:
compute.instances.setServiceAccountsulla VM -
Per creare un nuovo disco per la VM:
compute.disks.createsul progetto -
Per collegare un disco esistente in modalità di sola lettura o di lettura e scrittura:
compute.disks.usesul disco -
Per collegare un disco esistente in modalità di sola lettura:
compute.disks.useReadOnlysul disco
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Copia una VM in un altro progetto
Nel progetto di origine, crea uno snapshot del disco di avvio della VM utilizzando uno dei seguenti comandi:
Disco di avvio a livello di zona
Se la VM ha un disco di avvio a livello di zona, 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_ZONESostituisci quanto segue:
- SNAPSHOT_NAME: un nome per lo snapshot.
- SOURCE_DISK: il nome del volume del Persistent Disk a livello di zona da cui vuoi creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di snapshot, che può essere STANDARD o ARCHIVIO. Se non viene specificato un tipo, viene creato uno snapshot STANDARD. Scegli Archivio per una conservazione dei dati più economica.
- SOURCE_DISK_ZONE: la zona del volume del Persistent Disk a livello di zona da cui vuoi creare uno snapshot.
Disco di avvio a livello di regione
Se la VM ha un disco di avvio a livello di regione, 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_TYPESostituisci quanto segue:
- SNAPSHOT_NAME: un nome per lo snapshot.
- SOURCE_DISK: il nome del volume del Persistent Disk a livello di regione da cui vuoi creare uno snapshot.
- SOURCE_DISK_REGION: la regione del volume del Persistent Disk a livello di regione da cui vuoi creare uno snapshot.
- SNAPSHOT_TYPE: il tipo di snapshot, che può essere STANDARD o ARCHIVIO. Se non viene specificato un tipo, 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 immagine.SOURCE_SNAPSHOT: lo snapshot da cui vuoi creare l'immagine.- (Facoltativo)
LOCATION: un flag che consente di designare la regione o la multi-regione in cui è archiviata l'immagine. Ad esempio, specificausper archiviare l'immagine nella multi-regioneusoppureus-central1per archiviarla nella regioneus-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella multi-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 saperne di più sulla condivisione di immagini personalizzate, vedi Condivisione di 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_FLAG \ --subnet SUBNETSostituisci quanto segue:
VM_NAME: il nome della VM.IMAGE_PROJECT: l'ID del progetto Google Cloud che contiene l'immagine.IMAGE_FLAG: specifica una delle seguenti opzioni:- Utilizza il flag
--image IMAGE_NAMEper specificare un'immagine personalizzata.Ad esempio,
--image my-debian-image-v2. - Se hai creato le immagini personalizzate all'interno di una famiglia di immagini personalizzate, utilizza il flag
--image-family IMAGE_FAMILY_NAMEper specificare la famiglia di immagini personalizzate.In questo modo la VM viene creata 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 sistema operativo più recente nella famiglia di immagini personalizzatemy-debian-family.
- Utilizza il flag
SUBNET: se la subnet e l'istanza si trovano nello stesso progetto, sostituisciSUBNETcon il nome di una subnet che si trova nella stessa regione dell'istanza.Per specificare una subnet in una rete VPC condivisa, sostituisci
SUBNETcon una stringa nel seguente formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAMESostituisci quanto segue:
HOST_PROJECT_ID: l'ID progetto del progetto host VPC condiviso.REGION: la regione della subnet.SUBNET_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.