Importa dischi virtuali

Se nel tuo ambiente on-premise disponi di dischi virtuali con le configurazioni e il software di cui hai bisogno (a volte indicati come dischi dorati o immagini dorate), puoi risparmiare tempo importando questi dischi in Compute Engine e utilizzando l'immagine risultante per creare macchine virtuali. Lo strumento di importazione supporta la maggior parte dei formati di file di dischi virtuali, tra cui VMDK e VHD.

Se hai esportato il disco da Compute Engine, puoi creare immagini dal disco.

Per informazioni su come creare un sistema automatico per la migrazione di diverse macchine virtuali (VM), consulta Migrazione delle VM in Compute Engine.

Prima di iniziare

  • Se è stato definito un criterio relativo alle immagini attendibili per il progetto in cui stai importando l'immagine, aggiungi projects/compute-image-import e projects/compute-image-tools all'elenco di publisher consentiti.
  • Per scoprire come soddisfare i requisiti prima di importare le immagini, consulta la pagina Prerequisiti per l'importazione e l'esportazione delle immagini VM.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per maggiori informazioni, consulta Autenticazione per REST nella documentazione sull'autenticazione di Google Cloud.

Sistemi operativi supportati

Puoi importare dischi avviabili e non avviabili. Per poter avviare i dischi virtuali su Compute Engine, i dischi virtuali devono eseguire uno dei sistemi operativi supportati.

Supporto per BYOL e BYOS

Se preferisci utilizzare una licenza software o un abbonamento personale, puoi importare i dischi virtuali con le relative licenze. Per informazioni sui sistemi operativi che supportano BYOL o BYOS, consulta Dettagli del sistema operativo.

Puoi importare immagini con licenze esistenti utilizzando il comando gcloud compute instances import con il flag --byol.

Limitazioni

Questa funzionalità presenta le seguenti limitazioni generali:

Questa funzionalità presenta le seguenti limitazioni su Linux:

  • I dischi virtuali Linux devono utilizzare grub come bootloader.

  • I dischi virtuali Linux devono soddisfare gli stessi requisiti delle immagini personalizzate, incluso il supporto per i dispositivi Virtio-SCSI Storage Controller.

Questa funzionalità presenta le seguenti limitazioni su Windows:

  • Se installato sui dischi virtuali di Windows, il software che consente la lista consentita delle applicazioni, ad esempio CB Protection by Carbon Black, può causare la mancata riuscita del processo di importazione. Potrebbe essere necessario disinstallare questo software prima dell'importazione.

  • Sulle VM basate su Windows, l'adattatore di loopback Microsoft KM-TEST impedisce l'accesso di rete al server dei metadati e devi disabilitarlo o rimuoverlo prima dell'importazione.

Autorizzazioni

Per un'esperienza fluida durante l'importazione delle immagini, assicurati di aver concesso i ruoli IAM richiesti al tuo account, all'account di servizio Cloud Build e all'account di servizio Compute Engine. Per ulteriori informazioni, consulta Concedere i ruoli IAM richiesti.

Verifica la compatibilità

Prima di tentare di importare il disco per la VM, scarica ed esegui lo strumento di precontrollo all'interno della VM. Lo strumento di precontrollo analizza eventuali problemi di compatibilità che potrebbero causare l'errore del processo di importazione o il funzionamento non corretto del disco su Compute Engine.

Importa dischi virtuali

Puoi importare i dischi virtuali utilizzando la console Google Cloud, Google Cloud CLI o l'API Cloud Build.

Importa un disco virtuale di avvio

Per i dischi di avvio, non è necessario specificare il sistema operativo perché lo strumento di importazione rileva automaticamente il sistema operativo per determinare i driver e i pacchetti richiesti. Tuttavia, se devi eseguire l'override del sistema operativo rilevato, puoi specificare il flag --os o il parametro -os. Per un elenco dei valori supportati, vedi Flag --os.

Console

  1. Nella console Google Cloud, carica il file del disco virtuale in Cloud Storage.
  2. Vai alla pagina Crea un'immagine .

    Vai alla pagina Crea un'immagine

  3. Specifica un nome per l'immagine.

  4. In Origine, seleziona Disco virtuale (VMDK, VHD e così via).

  5. Sfoglia o inserisci manualmente la posizione di archiviazione per il file Cloud Storage.

  6. Seleziona il sistema operativo disponibile sul disco importato. Puoi anche apportare le seguenti modifiche:

    • Puoi scegliere di installare pacchetti ospite. Google consiglia di installare l'ambiente guest. Per ulteriori informazioni sull'ambiente guest, consulta la pagina relativa all'ambiente ospite.

    • Per i sistemi operativi Windows o Red Hat Enterprise Linux (RHEL), puoi anche scegliere un'opzione di licenza. Puoi consentire a Compute Engine di fornire una licenza o portarla con te. Per scoprire di più su come utilizzare il modello Bring Your Own License per Windows, consulta la pagina Bring Your Own License.

  7. (Facoltativo) Specifica altre proprietà per l'immagine. Ad esempio, puoi organizzare questa immagine come parte di una famiglia di immagini.

  8. Fai clic su Crea per importare l'immagine.

gcloud

Utilizza il comando gcloud compute images import per creare un'immagine Compute Engine avviabile. Sebbene Compute Engine possa avviare la maggior parte delle immagini del disco di avvio, il comando import assicura che il disco disponga dei driver richiesti e dei più recenti pacchetti di ambiente guest, necessari per avviare un'istanza e connettersi all'istanza mediante SSH o RDP.

Puoi importare file di dischi virtuali da un bucket Cloud Storage o dalla tua workstation locale.

Se importi il file del disco virtuale dalla workstation, lo strumento di importazione carica automaticamente il file in un bucket Cloud Storage.

Se preferisci, puoi caricare autonomamente il file del disco virtuale in Cloud Storage prima di avviare il processo di importazione, ma devi caricare il file in un bucket Cloud Storage nello stesso progetto che verrà utilizzato per il processo di importazione.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine di destinazione.
  • SOURCE_FILE: il file del tuo disco virtuale. Questo file può essere un file locale o un file archiviato in Cloud Storage. Se il disco virtuale è un file locale, puoi fornire un percorso assoluto o relativo. Se il file del disco virtuale è già archiviato in Cloud Storage, il file deve esistere in un bucket Cloud Storage nel progetto utilizzato per il processo di importazione e devi specificare il percorso completo del file nel formato gs://BUCKET_NAME/OBJECT_NAME.

Se importi un'immagine con una licenza esistente, specifica il flag --byol come segue:

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE --byol

Per istruzioni su come importare immagini in Google Cloud con licenze esistenti, consulta la pagina Bringing Your Own License (BYOL)

Se specifichi un file locale, l'operazione di caricamento può richiedere molto tempo, a seconda delle dimensioni del disco virtuale e della velocità della connessione di rete. L'esecuzione dell'operazione di importazione può richiedere decine di minuti, a seconda delle dimensioni del disco.

Esempio

L'esempio seguente importa un disco virtuale denominato my_server.vmdk archiviato in gs://your_gcs_bucket.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_server.vmdk

Parametri facoltativi

Per impostazione predefinita, i pacchetti di ambiente ospite vengono aggiunti a tutte le immagini del disco di avvio importate. Se non vuoi questi pacchetti, aggiungi il flag --no-guest-environment al comando di importazione.

REST

  1. Aggiungi il disco virtuale a Cloud Storage.

  2. Invia una richiesta POST all'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine.
    • IMAGE_NAME: il nome dell'immagine da importare.
    • SOURCE_FILE: l'URI dell'immagine in Cloud Storage, ad esempio gs://my-bucket/my-image.vmdk.

    Per ulteriori valori args che è possibile fornire, consulta la sezione dei flag facoltativi della pagina GitHub di importazione dell'immagine VM.

    Esempio di risposta

    La seguente risposta di esempio è simile all'output restituito:

    {
     "name": "operations/build/myproject-12345/operation-1578608233418",
     "metadata": {
      "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
      "build": {
       "id": "3a2055bc-ccbd-4101-9434-d376b88b8940",
       "status": "QUEUED",
       "createTime": "2019-09-20T15:55:29.353258929Z",
       "steps": [
        {
         "name": "gcr.io/compute-image-import/gce_vm_image_import:release",
         "env": [
          "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
         ],
         "args": [
          "-timeout=7000s",
          "-image_name=my-image",
          "-client_id=api",
          "-data-disk",
          "-source_file=gs://my-bucket/my-image.vmdk"
         ]
        }
       ],
       "timeout": "7200s",
       "projectId": "myproject-12345",
       "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com",
       "options": {
        "logging": "LEGACY"
       },
       "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456"
      }
    }
    

    Puoi monitorare la build in due modi:

    • Esegui una richiesta projects.builds.get utilizzando il valore build-id restituito.
    • Esamina i log ospitati nel logUrl fornito.

Importa e aggiungi una licenza a un disco virtuale

Per aggiungere una licenza durante l'importazione di un'immagine, utilizza il seguente comando gcloud compute images import.

gcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE
  --os=OS

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine da creare.
  • SOURCE_FILE: un file locale o URI Cloud Storage del disco virtuale da importare.
  • OS: il sistema operativo dell'immagine disco da importare. La licenza per il sistema operativo viene dedotta dal valore di questo flag; non esiste un flag esplicito per fornire informazioni sulla licenza durante l'importazione. Per un elenco dei valori supportati, vedi il flag --os.

Per ulteriori informazioni su come visualizzare e aggiungere licenze, consulta Visualizzare e aggiungere le licenze.

Importa un disco virtuale non avviabile

Console

  1. Nella console Google Cloud, carica il file del disco virtuale in Cloud Storage.
  2. Vai alla pagina Crea un'immagine.

    Vai alla pagina Crea un'immagine

  3. Specifica un nome per l'immagine.

  4. In Origine, seleziona Disco virtuale (VMDK, VHD, ...).

  5. Sfoglia o inserisci manualmente la posizione di archiviazione per il file Cloud Storage.

  6. Nella sezione Sistema operativo, seleziona Nessun sistema operativo. Solo dati.

  7. (Facoltativo) Specifica altre proprietà per l'immagine. Ad esempio, puoi organizzare questa immagine come parte di una famiglia di immagini.

  8. Fai clic su Crea per importare l'immagine.

gcloud

Puoi utilizzare il comando gcloud compute images import per creare un'immagine Compute Engine non avviabile. Se sul disco virtuale non è installato un sistema operativo avviabile, specifica il flag --data-disk. In questo modo viene saltato il passaggio che installa i driver e i pacchetti di ambiente guest per rendere l'immagine avviabile su Compute Engine.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --data-disk

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine di destinazione.
  • SOURCE_FILE: il file del tuo disco virtuale. Può essere un file locale o un file archiviato in Cloud Storage. Se il disco virtuale è un file locale, puoi utilizzare un percorso assoluto o relativo. Se il file del disco virtuale è già archiviato in Cloud Storage, il file deve esistere in un bucket Cloud Storage nel progetto utilizzato per il processo di importazione e devi specificare il percorso completo del file nel formato gs://BUCKET_NAME/OBJECT_NAME.

Esempio 1: importazione di un disco virtuale non avviabile da Cloud Storage

L'esempio seguente importa il nome di un disco virtuale my_disk.vmdk archiviato in gs://your_gcs_bucket.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_disk.vmdk
    --data-disk

Esempio 2: importare un file VMDK di grandi dimensioni specificando il valore di timeout

Il valore di timeout predefinito per il processo di importazione è di due ore. L'importazione di file VMDK di grandi dimensioni potrebbe richiedere fino a 24 ore. Se non specifichi il flag --timeout quando importi file di dimensioni così grandi, il processo non andrà a buon fine dopo due ore.

L'esempio seguente importa un disco virtuale denominato my_disk.vmdk archiviato in gs://your_gcs_bucket. Il valore di timeout per questa importazione è 24 ore.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_disk.vmdk
    --data-disk --timeout=24h

REST

  1. Aggiungi il disco virtuale a Cloud Storage.

  2. Invia una richiesta POST all'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "steps":[
        {
          "args":[
            "-image_name=IMAGE_NAME",
            "-source_file=SOURCE_FILE",
            "-timeout=7000s",
            "-client_id=api",
            "-data_disk"
          ],
          "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "timeout":"7200s",
      "tags":[
        "gce-daisy",
        "gce-daisy-image-import"
      ]
    }
    

    Sostituisci i seguenti valori args:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine.
    • IMAGE_NAME: il nome dell'immagine da importare.
    • SOURCE_FILE: l'URI dell'immagine in Cloud Storage, ad esempio gs://my-bucket/my-image.vmdk.

Importa i dischi utilizzando reti che non consentono indirizzi IP esterni

Per importare dischi virtuali utilizzando una rete che non consente IP esterni, procedi nel seguente modo:

  1. Aggiungi il disco virtuale a Cloud Storage.

  2. Il processo di importazione delle immagini richiede l'installazione di gestori di pacchetti nel sistema operativo per il disco virtuale. Questi gestori di pacchetti potrebbero dover effettuare richieste ai repository di pacchetti esterni a Google Cloud. Per consentire l'accesso a questi aggiornamenti, devi configurare Cloud NAT. Per ulteriori informazioni, consulta Creare una configurazione NAT utilizzando il router Cloud.

  3. Configura l'accesso privato Google. Per ulteriori informazioni, consulta Configurazione dell'accesso privato Google.

  4. Importa il disco virtuale utilizzando Google Cloud CLI o REST.

    Quando importi un disco virtuale, nel progetto vengono create delle VM temporanee. Per assicurarti che a queste VM temporanee non siano assegnati indirizzi IP esterni, devi specificare un flag o un argomento aggiuntivo.

    Per ulteriori informazioni, fai clic sulle seguenti schede:

gcloud

Utilizza il comando gcloud compute images import con il flag --no-address per importare il disco virtuale.

gcloud compute images import IMAGE_NAME \
    --source-file=SOURCE_FILE \
    --zone=ZONE \
    --no-address

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine disco che vuoi creare.
  • SOURCE_FILE: il file del tuo disco virtuale. Può essere un file locale o un file archiviato in Cloud Storage. Se il disco virtuale è un file locale, puoi fornire un percorso assoluto o relativo. Se il file del disco virtuale è già archiviato in Cloud Storage, il file deve esistere in un bucket Cloud Storage nel progetto utilizzato per il processo di importazione e devi specificare il percorso completo del file nel formato gs://BUCKET_NAME/OBJECT_NAME.
  • ZONE: la zona in cui creare l'immagine. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

REST

Invia una richiesta POST all'API Cloud Build e specifica l'argomento -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
   "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-zone=ZONE",
         "-no_external_ip",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
   ],
   "timeout":"7200s",
   "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
   ]
 }
 

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine.
  • IMAGE_NAME: il nome dell'immagine da importare.
  • SOURCE_FILE: l'URI dell'immagine in Cloud Storage. Ad esempio, gs://my-bucket/my-image.vmdk. per il comando gcloud compute images import.
  • ZONE: la zona in cui creare l'immagine. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

Importa un disco virtuale con bootloader UEFI

Per la maggior parte dei dischi virtuali, Compute Engine può rilevare e importare correttamente i dischi con un bootloader UEFI senza bisogno di un flag aggiuntivo.

Tuttavia, in scenari come questi, potrebbe essere necessario forzare un avvio UEFI durante l'importazione.

  • Se il processo di importazione dell'immagine non riesce a rilevare il bootloader UEFI durante l'importazione.
  • Se il disco può essere avviato in modalità doppia e presenta una combinazione di: hybrid-mbr + UEFI o protective-mbr + UEFI. Per i dischi con avvio doppio, l'importazione potrebbe utilizzare l'avvio non UEFI per impostazione predefinita.

gcloud

Puoi utilizzare il comando gcloud compute images import per forzare un'importazione a utilizzare l'avvio UEFI.

gcloud compute images import IMAGE_NAME \
    --source-file=SOURCE_FILE \
    --guest-os-features=UEFI_COMPATIBLE

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine da importare.
  • SOURCE_FILE: l'URI dell'immagine in Cloud Storage, ad esempio gs://my-bucket/my-image.vmdk.

Esempio

L'esempio seguente importa un disco virtuale denominato my-disk.vmdk archiviato in gs://my-gcs-bucket/ e ne forza l'utilizzo dell'avvio UEFI.

gcloud compute images import my-imported-image \
    --source-file gs://my-gcs-bucket/my-disk.vmdk \
    --guest-os-features=UEFI_COMPATIBLE

REST

Per forzare un'importazione a utilizzare l'avvio UEFI, puoi utilizzare l'API Cloud Build e specificare l'argomento -uefi_compatible. A tale scopo, completa i seguenti passaggi:

  1. Aggiungi il disco virtuale a Cloud Storage.

  2. Invia una richiesta POST all'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-uefi_compatible",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine.
    • IMAGE_NAME: il nome dell'immagine da importare.
    • SOURCE_FILE: l'URI dell'immagine in Cloud Storage, ad esempio gs://my-bucket/my-image.vmdk.

Importa un disco virtuale utilizzando un VPC condiviso

Prima di importare un disco virtuale che utilizza un VPC condiviso, devi aggiungere il ruolo compute.networkUser all'account di servizio Cloud Build. Per maggiori informazioni, consulta Concedere i ruoli richiesti all'account di servizio Cloud Build.

gcloud

Utilizza il comando gcloud compute images import per importare il disco virtuale.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --project SERVICE_PROJECT_ID \
    --zone ZONE \
    --network NETWORK \
    --subnet SUBNET

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine da importare.
  • SOURCE_FILE: il file del tuo disco virtuale. Può essere un file locale o un file archiviato in Cloud Storage. Se il disco virtuale è un file locale, puoi fornire un percorso assoluto o relativo. Se il file del disco virtuale è già archiviato in Cloud Storage, il file deve esistere in un bucket Cloud Storage nel progetto utilizzato per il processo di importazione e devi specificare il percorso completo del file nel formato gs://BUCKET_NAME/OBJECT_NAME.
  • SERVICE_PROJECT_ID: ID del progetto in cui vuoi importare l'immagine.
  • ZONE: la zona in cui vuoi importare l'immagine. Questa zona deve corrispondere alla regione della subnet. Ad esempio, se SUBNET è us-west1. La zona di importazione deve essere una delle seguenti: us-west1-a, us-west1-b o us-west1-c.
  • NETWORK: il percorso completo di una rete VPC condivisa. Ad esempio, projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
  • SUBNET: il percorso completo di una subnet VPC condivisa, ad esempio projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

    Comando di esempio

    gcloud compute images import example-image \
     --source-file gs://source-bucket/source-file.vmdk \
     --project my-image-project \
     --zone us-west1-c \
     --network projects/my-vpc-project/global/networks/my-shared-vpc \
     --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
    

REST

  1. Aggiungi il disco virtuale a Cloud Storage.

  2. Invia una richiesta POST all'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-zone=ZONE",
           "-network=NETWORK",
           "-subnet=SUBNET",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Sostituisci i seguenti valori args:

    • SERVICE_PROJECT_ID: ID del progetto in cui vuoi importare l'immagine.
    • IMAGE_NAME: il nome dell'immagine da importare.
    • SOURCE_FILE: URI dell'immagine in Cloud Storage, ad esempio gs://my-bucket/my-image.vmdk.
    • ZONE: la zona in cui vuoi importare l'immagine. Questa zona deve corrispondere alla regione della subnet. Ad esempio, se SUBNET è us-west1. La zona di importazione deve essere una delle seguenti: us-west1-a, us-west1-b o us-west1-c.
    • NETWORK: il percorso completo di una rete VPC condivisa. Ad esempio, projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
    • SUBNET: il percorso completo di una subnet VPC condivisa, ad esempio: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

Importazione di un disco virtuale utilizzando un account di servizio Compute Engine personalizzato

Durante l'importazione di un'immagine, nel progetto vengono create istanze di macchine virtuali temporanee (VM). Lo strumento di importazione delle immagini su queste VM temporanee deve essere autenticato.

Un account di servizio è un'identità collegata a una VM. È possibile accedere ai token di accesso all'account di servizio tramite il server dei metadati dell'istanza e utilizzarli per autenticare lo strumento di importazione delle immagini nella VM.

Per impostazione predefinita, il processo di importazione utilizza l'agente di servizio Compute Engine predefinito del progetto. Tuttavia, se l'account di servizio Compute Engine predefinito è disabilitato nel tuo progetto o se vuoi utilizzare un account di servizio Compute Engine personalizzato, devi creare un account di servizio e specificarlo per il processo di importazione.

gcloud

  1. Aggiungi il disco virtuale a Cloud Storage.

  2. Crea un account di servizio e assegna i ruoli minimi. Per saperne di più sulla creazione di account di servizio, consulta Creazione e gestione degli account di servizio.

    All'account di servizio Compute Engine specificato devono essere assegnati almeno i ruoli seguenti:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Per saperne di più, consulta Concedere i ruoli richiesti all'account di servizio Compute Engine.

  3. Usa il gcloud compute images import per importare l'immagine.

    gcloud compute images import IMAGE_NAME \
      --source-file SOURCE_FILE \
      --compute-service-account SERVICE_ACCOUNT_EMAIL
    

    Sostituisci quanto segue:

    • IMAGE_NAME: il nome dell'immagine di destinazione.
    • SOURCE_FILE: il file del tuo disco virtuale. Questo file può essere un file locale o un file archiviato in Cloud Storage. Se il disco virtuale è un file locale, puoi fornire un percorso assoluto o relativo. Se il file del disco virtuale è già archiviato in Cloud Storage, il file deve esistere in un bucket Cloud Storage nel progetto utilizzato per il processo di importazione e devi specificare il percorso completo del file nel formato gs://BUCKET_NAME/OBJECT_NAME.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato all'account di servizio Compute Engine creato nel passaggio precedente.

    Esempio

    L'esempio seguente importa un disco virtuale di avvio denominato my_server.vmdk archiviato in gs://your_gcs_bucket utilizzando un account di servizio con l'indirizzo email image-export-service-account@proj-12345.iam.gserviceaccount.com.

    gcloud compute images import my-imported-image \
      --source-file gs://your_gcs_bucket/my_server.vmdk \
      --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
    

REST

  1. Aggiungi il disco virtuale a Cloud Storage.

  2. Crea un account di servizio e assegna i ruoli minimi. Per saperne di più sulla creazione di account di servizio, consulta Creazione e gestione degli account di servizio.

    All'account di servizio Compute Engine specificato devono essere assegnati almeno i ruoli seguenti:

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Per saperne di più, consulta Concedere i ruoli richiesti all'account di servizio Compute Engine.

  3. Aggiungi il disco virtuale a Cloud Storage.

  4. Invia una richiesta POST all'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-compute_service_account=SERVICE_ACCOUNT_EMAIL",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
    ],
    "timeout":"7200s",
    "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
    ]
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine.
    • IMAGE_NAME: il nome dell'immagine da importare.
    • SOURCE_FILE: l'URI dell'immagine in Cloud Storage, ad esempio gs://my-bucket/my-image.vmdk.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato all'account di servizio Compute Engine creato nel passaggio precedente.

Crea un'immagine avviabile

Se hai un'immagine personalizzata di Compute Engine in cui è installato un sistema operativo avviabile ma non dispone dei driver Compute Engine o dei pacchetti dell'ambiente guest necessari, puoi utilizzare lo strumento di importazione delle immagini per rendere l'immagine avviabile in Compute Engine.

Utilizza il flag --source-image per specificare un'immagine personalizzata da rendere avviabile, invece di usare il flag --source-file che specifica il nuovo disco da importare.

gcloud compute images import IMAGE_NAME \
    --source-image SOURCE_IMAGE_NAME

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine di destinazione.
  • SOURCE_IMAGE_NAME: il nome dell'immagine di origine.

    Per istruzioni su come importare immagini in Google Cloud con licenze esistenti, consulta la pagina Bringing Your Own License (BYOL)

Comando di esempio

L'esempio seguente trasforma un'immagine Compute Engine denominata my-image in un'immagine avviabile denominata my-bootable-image. In questo esempio, --os ubuntu-1604 sostituisce il sistema operativo rilevato.

gcloud compute images import my-bootable-image \
    --source-image my-image \
    --os ubuntu-1604

Pulizia delle risorse

I file archiviati in Cloud Storage e le immagini in Compute Engine sono soggetti ad addebiti. Lo strumento di importazione importa il file del disco virtuale in Cloud Storage e crea un'immagine personalizzata di Compute Engine.

Dopo aver verificato che l'immagine sia stata importata correttamente e che si avvii correttamente come istanza di Compute Engine, puoi eliminare il file del disco virtuale da Cloud Storage. Lo strumento stampa l'URI del file durante il caricamento su Cloud Storage. Questo URI ha il seguente formato: gs://BUCKET_NAME/tmpimage/IMAGE_NAME.

Se hai importato un'immagine utilizzando il flag --data-disk e poi hai eseguito lo strumento import una seconda volta con il flag --source-image per rendere l'immagine avviabile, la prima immagine esiste ancora. Se non ti serve, considera la possibilità di eliminarla. Se specifichi lo stesso nome dell'immagine per entrambi i flag --image e --source-image, l'immagine verrà sovrascritta automaticamente e non sarà necessaria un'ulteriore pulizia.

Passaggi successivi