Importa immagini macchina da appliance virtuali


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

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

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

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

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per saperne di più, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Limitazioni e restrizioni

  • Puoi condividere un'immagine della macchina tra i progetti. Tuttavia, le reti VPC condivise non sono supportate.
  • Questa funzionalità non è supportata per i progetti protetti con Controlli di servizio VPC.
  • Non è possibile creare immagini macchina da VM di origine con più di 200 TB di dischi collegati.

Sistemi operativi supportati

Per il supporto del sistema operativo, consulta Dettagli del 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 da appliance virtuali.

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

Sostituisci quanto segue:

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

Esempio

Ad esempio, puoi utilizzare il seguente comando gcloud per importare un'immagine macchina denominata my-machine-image da un file OVA di origine denominato my-ova che è memorizzato 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: l'ID del progetto in cui vuoi importare il file OVA.
    • MACHINE_IMAGE_NAME: il nome dell'immagine della macchina da importare. Ad esempio, my-machine-image.
    • SOURCE_URI: URI del file OVA o di una directory contenente 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 altri valori args che possono essere forniti, consulta la sezione facoltativa relativa ai flag della pagina GitHub dell'importazione OVF di Compute Engine.

Importa immagini macchina con sostituzioni OVF

CPU e memoria personalizzate

gcloud

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

Esempio

A un'immagine macchina denominata my-machine-image sono state applicate le seguenti sostituzioni alle impostazioni nel file OVF:

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

Per importare my-machine-image con queste sostituzioni, esegui il seguente 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 predefinito o personalizzato da utilizzare.

Esempio

A un'immagine macchina denominata my-machine-image sono state applicate le seguenti sostituzioni alle impostazioni nel file OVF:

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

Per importare my-machine-image con queste sostituzioni, invia 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 di Google Cloud CLI per importare un'immagine macchina e specifica un flag --network. Se la rete è configurata con una modalità di subnet personalizzata, devi specificare anche i flag --subnet e --zone.

Esempio

A un'immagine macchina denominata my-machine-image sono state applicate le seguenti sostituzioni 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 queste sostituzioni, esegui il seguente comando di esempio:

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 specifica un argomento -network. Se la rete è configurata con una modalità di subnet personalizzata, devi specificare anche gli argomenti -subnet e -zone.

Esempio

A un'immagine macchina denominata my-machine-image sono state applicate le seguenti sostituzioni 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 queste sostituzioni, invia 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 l'IP esterno

Per importare un'immagine macchina utilizzando una rete che non consente indirizzi IP esterni, svolgi i seguenti passaggi:

  1. Aggiungi l'appliance virtuale a Cloud Storage.

  2. Il processo di importazione richiede l'installazione di gestori pacchetti sul sistema operativo dell'immagine macchina. Questi gestori dei pacchetti potrebbero dover effettuare richieste a repository di pacchetti esterni a Google Cloud. Per consentire l'accesso per questi aggiornamenti, devi configurare Cloud NAT. Per ulteriori informazioni, consulta Creare una configurazione NAT utilizzando il router Cloud.

  3. Configura Accesso privato Google. Per ulteriori informazioni, consulta Configurare l'accesso privato Google.

  4. Importa l'immagine macchina utilizzando Google Cloud CLI o l'API Cloud Build.

    Quando importi un'immagine macchina da un appliance virtuale, nel progetto vengono create VM temporanee. Per assicurarti che a queste VM temporanee non vengano assegnati indirizzi IP esterni, devi specificare un flag o un argomento aggiuntivo.

    Per ulteriori informazioni sul flag o sull'argomento obbligatorio, 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: il nome dell'immagine della macchina che vuoi importare.
  • SOURCE_URI: URI per il tuo file OVA o OVF su Cloud Storage. Ad esempio, gs://my-bucket/Ubuntu.ova.
  • OS: sistema operativo del file OVA. Questo indicatore è facoltativo per impostazione predefinita, ma potrebbe essere necessario 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 machine-images import.
  • ZONE: la zona in cui importare l'immagine della macchina. Se non viene specificato, 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 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 memorizzato 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 (VM) temporanee. Lo strumento di importazione su queste VM temporanee deve essere autenticato.

Un account di servizio è un'identità associata a una VM. È possibile accedere ai token di accesso dell'account di servizio tramite il server dei metadati della VM e utilizzarli per autenticare lo strumento di importazione sulla VM.

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

gcloud

  1. Aggiungi l'appliance virtuale a Cloud Storage.

  2. Crea un account di servizio e assegna i ruoli minimi. Per ulteriori informazioni sulla creazione degli account di servizio, consulta Creare e gestire gli account di servizio.

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

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

    Questi ruoli minimi sono necessari per l'account di servizio specificato per il --compute-service-account flag. Per ulteriori 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 da 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: il nome dell'immagine della macchina che vuoi importare.
    • SOURCE_URI: percorso del file OVA o OVF su Cloud Storage.
    • OS: sistema operativo del file OVA. Questo indicatore è facoltativo per impostazione predefinita, ma potrebbe essere necessario in alcuni casi. Ti consigliamo di fornire questo flag.
    • TEMP_SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato all'account servizio personalizzato creato nel passaggio precedente. Questo account di servizio viene utilizzato dalle VM temporanee. Se non specificato, 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 ci sono limitazioni di autorizzazione per questo account di servizio, che puoi personalizzare in base alle tue esigenze. Se non viene specificato, alla VM viene collegato il account di servizio Compute Engine predefinito.
    • SCOPES: specifica il livello di accesso per l'opzione--service-account. Se non specificato, vengono utilizzati gli ambiti predefiniti. Per ulteriori informazioni, consulta il flag --scopes.

REST

  1. Aggiungi l'appliance virtuale a Cloud Storage.

  2. Crea un account di servizio e assegna i ruoli minimi. Per ulteriori informazioni sulla creazione degli account di servizio, consulta Creare e gestire gli account di servizio.

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

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

    Questi ruoli minimi sono necessari per l'account di servizio specificato per l'argomento -compute-service-account. Per ulteriori 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 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 memorizzato 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 servizio personalizzato creato nel passaggio precedente. Questo account di servizio viene utilizzato dalle VM temporanee. Se non specificato, 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 ci sono limitazioni di autorizzazione per questo account di servizio, che puoi personalizzare in base alle tue esigenze. Se non viene specificato, alla VM viene collegato il account di servizio Compute Engine predefinito.
    • SCOPES: specifica il livello di accesso per l'opzione--service-account. Se non specificato, vengono utilizzati gli ambiti predefiniti. Per ulteriori informazioni, consulta il flag --scopes.

Passaggi successivi