Copiare le VM tra progetti


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:
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. 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

  1. 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.

  2. 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
    • LOCATION: facoltativo, un flag che consente di designare la regione o la regione multipla in cui è archiviata l'immagine. Ad esempio, specifica us per archiviare l'immagine nella località con più aree geografiche us o us-central1 per archiviarla nella regione us-central1. Se non effettui una selezione, Compute Engine archivia l'immagine nella regione più vicina alla località di origine dell'immagine.
  3. (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.

  4. 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 VM
    • IMAGE_PROJECT: l'ID progetto che contiene l'immagine
    • IMAGE o IMAGE_FAMILY: specifica una delle seguenti opzioni:
      • IMAGE: nome dell'immagine personalizzata

        Ad 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 personalizzate my-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 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.