Importa immagini macchina da appliance virtuali

Utilizza un'immagine della macchina per archiviare tutte le configurazioni, i metadati, le autorizzazioni e i dati di uno o più dischi per un'istanza VM in esecuzione su Compute Engine. Per informazioni su quando e come utilizzare le immagini macchina, consulta Immagini macchina.

Questo documento descrive i passaggi per importare un'immagine macchina da un'appliance virtuale.

Prima di iniziare

  • Se per il progetto in cui vuoi importare l'immagine della macchina è stato definito un criterio relativo alle immagini attendibili, aggiungi projects/compute-image-import e projects/compute-image-tools all'elenco di publisher autorizzati.
  • Se stai importando un'appliance virtuale da un altro progetto, consulta Importazione tra progetti.
  • Esamina i requisiti dei file per VM di origine e OVF nella guida per l'importazione delle appliance virtuali in Compute Engine.
  • Per scoprire come soddisfare i requisiti prima di importare le immagini delle macchine, 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:

    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.

Limitazioni e restrizioni

  • Puoi condividere un'immagine macchina tra progetti. Tuttavia, le reti VPC condivise non sono supportate.
  • Questa funzionalità non è supportata per i progetti protetti con Controlli di servizio VPC.
  • Le immagini macchina non possono essere create da VM di origine con dischi collegati superiori a 200 TB.

Sistemi operativi supportati

Per il supporto del sistema operativo, consulta Dettagli sul sistema operativo.

Importa immagini macchina

Puoi importare immagini macchina da appliance virtuali utilizzando Google Cloud CLI o REST.

gcloud

Utilizza il comando gcloud compute machine-images import per importare un'immagine macchina dalle appliance virtuali.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

Sostituisci quanto segue:

  • MACHINE_IMAGE_NAME: nome dell'immagine della macchina che vuoi importare.
  • SOURCE_URI: percorso del file OVA o OVF in Cloud Storage.
  • OS: sistema operativo del file OVA. Questo flag è facoltativo per impostazione predefinita, ma in alcuni casi potrebbe essere obbligatorio. Ti consigliamo di fornire questo flag.

Esempio

Ad esempio, puoi utilizzare il seguente comando gcloud per importare un'immagine della macchina denominata my-machine-image da un file OVA di origine denominato my-ova che è archiviato nella directory gs://my-bucket ed esegue centos-7:

gcloud compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

REST

  1. Carica l'appliance virtuale in Cloud Storage.

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

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: ID del progetto in cui vuoi importare il file OVA.
    • MACHINE_IMAGE_NAME: nome dell'immagine della macchina da importare. Ad esempio, my-machine-image.
    • SOURCE_URI: URI del file OVA o di una directory contenente i pacchetti OVF archiviati in Cloud Storage. Ad esempio, gs://my-bucket/my-instance.ova.
    • OS: sistema operativo del file OVA. Ad esempio, ubuntu-1604. Questo flag è facoltativo per impostazione predefinita, ma potrebbe essere obbligatorio in alcuni casi. Ti consigliamo di fornire questo flag.

    Per ulteriori valori args che è possibile fornire, consulta la sezione dei flag facoltativi della pagina GitHub di importazione OVF di Compute Engine.

Importa immagini macchina con override OVF

CPU e memoria personalizzate

gcloud

Per eseguire l'override della configurazione della CPU o della memoria specificata nel file OVF, segui i passaggi dell'interfaccia a Google Cloud CLI per importare un'immagine macchina e specifica i flag --custom-cpu e --custom-memory.

Esempio

Un'immagine macchina denominata my-machine-image presenta i seguenti override applicati alle impostazioni nel file OVF:

  • Sistema operativo: Ubuntu 1404
  • CPU: 2 CPUs
  • Memoria: 2048 MB

Per importare my-machine-image con questi override, esegui questo comando:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

Per eseguire l'override della configurazione della CPU o della memoria specificata nel file OVF, segui i passaggi dell'API Compute Engine per importare un'immagine macchina e specifica l'argomento -machine-type. Questo -machine-type rappresenta un tipo di macchina predefinita o personalizzata da utilizzare.

Esempio

Un'immagine macchina denominata my-machine-image presenta i seguenti override applicati alle impostazioni nel file OVF:

  • Sistema operativo: Ubuntu 1404
  • CPU: 2 CPUs
  • Memoria: 2048 MB

Per importare my-machine-image con questi override, effettua la seguente richiesta all'API Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Sostituisci PROJECT_ID con l'ID progetto.

Reti personalizzate

gcloud

Per configurare una rete personalizzata, segui i passaggi dell'interfaccia a riga di Google Cloud CLI per importare un'immagine macchina e specificare un flag --network. Se la rete è configurata con una modalità di subnet personalizzata, devi specificare anche i flag --subnet e --zone.

Esempio

Un'immagine macchina denominata my-machine-image presenta i seguenti override applicati alle impostazioni nel file OVF:

  • Sistema operativo: Ubuntu 1404
  • Rete: custom-vpc-network
  • Subnet: company-vpc-us-east1-c
  • Zona: us-east1-c

Per importare my-machine-image con questi override, esegui il comando di esempio seguente:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network=custom-vpc-network \
    --subnet=company-vpc-us-east1-c \
    --zone=us-east1-c

REST

Per utilizzare una rete personalizzata, segui i passaggi dell'API Compute Engine per importare un'immagine macchina e specificare un argomento -network. Se la rete è configurata con una modalità di subnet personalizzata, devi specificare anche gli argomenti -subnet e -zone.

Esempio

Un'immagine macchina denominata my-machine-image presenta i seguenti override applicati alle impostazioni nel file OVF:

  • Sistema operativo: Ubuntu 1404
  • Rete: custom-vpc-network
  • Subnet: company-vpc-us-east1-c
  • Zona: us-central1-c

Per importare my-machine-image con questi override, effettua la seguente richiesta all'API Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Sostituisci PROJECT_ID con l'ID progetto.

Importa un'immagine macchina all'interno di una rete che non consente indirizzi IP esterni

Per importare un'immagine macchina utilizzando una rete che non consente indirizzi IP esterni, segui questi passaggi:

  1. Aggiungi l'appliance virtuale a Cloud Storage.

  2. Il processo di importazione richiede l'installazione di gestori di pacchetti nel sistema operativo per l'immagine della macchina. 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 l'immagine della macchina utilizzando Google Cloud CLI o l'API Cloud Build.

    Quando importi un'immagine macchina da un'appliance 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 sul flag o sull'argomento richiesti, fai clic sulle seguenti schede:

gcloud

Utilizza il comando gcloud compute machine-images import con il flag --no-address .

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

Sostituisci quanto segue:

  • MACHINE_IMAGE_NAME: nome dell'immagine della macchina che vuoi importare.
  • SOURCE_URI: URI per il file OVA o OVF in Cloud Storage. Ad esempio, gs://my-bucket/Ubuntu.ova.
  • OS: sistema operativo del file OVA. Questo flag è facoltativo per impostazione predefinita, ma in alcuni casi potrebbe essere obbligatorio. Ti consigliamo di fornire questo flag. Per un elenco dei valori supportati, consulta le opzioni del flag --os per il comando gcloud compute machine-images import.
  • ZONE: la zona in cui importare l'immagine della macchina. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

REST

Utilizza l'API Cloud Build e specifica l'argomento -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine macchina.
  • MACHINE_IMAGE_NAME: il nome dell'immagine della macchina da importare. Ad esempio, my-machine-image.
  • SOURCE_URI: l'URI del file OVA archiviato in Cloud Storage. Ad esempio, gs://my-bucket/my-machine.ova.
  • OS: il sistema operativo del file OVA. Ad esempio, ubuntu-1604. Questo flag è facoltativo per impostazione predefinita, ma potrebbe essere obbligatorio in alcuni casi. Ti consigliamo di fornire questo flag. Per un elenco dei valori supportati, consulta le opzioni del flag --os per il comando gcloud compute instances import.
  • ZONE: la zona in cui importare l'immagine della macchina.

Importa un'immagine macchina utilizzando account di servizio personalizzati

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

Un account di servizio è un'identità collegata a una VM. I token di accesso all'account di servizio sono accessibili tramite il server dei metadati della VM e utilizzati per autenticare lo strumento di importazione sulla VM.

Per impostazione predefinita, il processo di importazione utilizza l'account di servizio predefinito di Compute Engine. 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 l'appliance 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

    Questi ruoli minimi sono necessari per l'account di servizio specificato per il flag --compute-service-account. Per maggiori informazioni, consulta Concedere i ruoli richiesti all'account di servizio Compute Engine.

  3. Utilizza il comando gcloud compute machine-images import per importare un'immagine macchina dalle appliance virtuali.

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    Sostituisci quanto segue:

    • MACHINE_IMAGE_NAME: nome dell'immagine della macchina che vuoi importare.
    • SOURCE_URI: percorso del file OVA o OVF in Cloud Storage.
    • OS: sistema operativo del file OVA. Questo flag è facoltativo per impostazione predefinita, ma in alcuni casi potrebbe essere obbligatorio. Ti consigliamo di fornire questo flag.
    • TEMP_SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato all'account di servizio personalizzato creato nel passaggio precedente. Questo account di servizio è utilizzato dalle VM temporanee. Se non specificati, la VM utilizza l'account di servizio Compute Engine predefinito.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato all'account di servizio personalizzato da collegare a qualsiasi VM creata da questa immagine macchina. Non esistono limitazioni di autorizzazione per questo account di servizio. Puoi personalizzarlo in base alle esigenze. Se non specificato, l'account di servizio Compute Engine predefinito è collegato alla VM.
    • SCOPES: specifica il livello di accesso per l'opzione --service-account. Se non specificati, vengono utilizzati gli ambiti predefiniti. Per maggiori informazioni, esamina il flag --scopes.

REST

  1. Aggiungi l'appliance 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

    Questi ruoli minimi sono necessari per l'account di servizio specificato per l'argomento -compute-service-account. Per maggiori informazioni, consulta Concedere i ruoli richiesti all'account di servizio Compute Engine.

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

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "timeout":"7200s",
    "steps":[
      {
        "args":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine macchina.
    • MACHINE_IMAGE_NAME: il nome dell'immagine della macchina da importare. Ad esempio, my-machine-image.
    • SOURCE_URI: l'URI del file OVA archiviato in Cloud Storage. Ad esempio, gs://my-bucket/my-machine.ova.
    • OS: il sistema operativo del file OVA. Ad esempio, ubuntu-1604. Questo flag è facoltativo per impostazione predefinita, ma potrebbe essere obbligatorio in alcuni casi. Ti consigliamo di fornire questo flag. Per un elenco dei valori supportati, consulta le opzioni del flag --os per il comando gcloud compute instances import.
    • ZONE: la zona in cui importare l'immagine della macchina.
    • TEMP_SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato all'account di servizio personalizzato creato nel passaggio precedente. Questo account di servizio è utilizzato dalle VM temporanee. Se non specificati, la VM utilizza l'account di servizio Compute Engine predefinito.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato all'account di servizio personalizzato da collegare a qualsiasi VM creata da questa immagine macchina. Non esistono limitazioni di autorizzazione per questo account di servizio. Puoi personalizzarlo in base alle esigenze. Se non specificato, l'account di servizio Compute Engine predefinito è collegato alla VM.
    • SCOPES: specifica il livello di accesso per l'opzione --service-account. Se non specificati, vengono utilizzati gli ambiti predefiniti. Per maggiori informazioni, esamina il flag --scopes.

Che cosa succede dopo?