Importa immagini macchina da appliance virtuali


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

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

Prima di iniziare

Limitazioni e restrizioni

  • Puoi condividere un'immagine macchina tra progetti diversi. 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 a cui sono collegati dischi per una capacità superiore a 200 TB.

Sistemi operativi supportati

Per informazioni sul supporto dei sistemi operativi, vedi Dettagli del sistema operativo.

Importa immagini macchina

È possibile importare immagini macchina da appliance virtuali utilizzando Google Cloud CLI o l'API Cloud Build.

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 i seguenti valori:

  • MACHINE_IMAGE_NAME: il nome dell'immagine macchina da importare.
  • SOURCE_URI: il percorso del file OVA o OVF su Cloud Storage.
  • OS: il sistema operativo specificato nel file OVA. Per impostazione predefinita, questo flag è facoltativo, ma in alcuni casi potrebbe essere obbligatorio. Ti consigliamo di inserirlo.

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 è archiviato nella directory gs://my-bucket ed esegue il sistema operativo 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 al metodo projects.builds.create.

    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 i seguenti valori:

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

    Per informazioni su altri valori che possono essere inseriti nella sezione args, consulta il paragrafo sui flag facoltativi della pagina GitHub sull'importazione di file OVF in Compute Engine.

Importa immagini macchina eseguendo l'override dei file OVF

Quando importi un'immagine macchina da un'appliance virtuale, puoi eseguire l'override delle impostazioni presenti nel file OVF. Ad esempio, puoi modificare la configurazione della CPU o della memoria oppure utilizzare una rete personalizzata.

CPU e memoria personalizzate

Per eseguire l'override della configurazione della CPU o della memoria specificata nel file OVF, completa i seguenti passaggi:

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

I seguenti override delle impostazioni presenti nel file OVF vanno applicati a un'immagine macchina denominata my-machine-image:

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

Per importare my-machine-image con questi override, 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. -machine-type rappresenta un tipo di macchina predefinita o un tipo di macchina personalizzata della serie N1 da utilizzare.

Esempio

I seguenti override delle impostazioni presenti nel file OVF vanno applicati a un'immagine macchina denominata my-machine-image nel progetto my-project:

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

Per importare my-machine-image con questi override, invia la seguente richiesta all'API Cloud Build.

POST https://cloudbuild.googleapis.com/v1/projects/my-project/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"
}

Reti personalizzate

Per eseguire l'override della configurazione di rete specificata nel file OVF, completa i seguenti passaggi:

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à subnet personalizzata, devi specificare anche i flag --subnet e --zone.

Esempio

I seguenti override delle impostazioni presenti nel file OVF vanno applicati a un'immagine macchina denominata my-machine-image:

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

Esempio

I seguenti override delle impostazioni presenti nel file OVF vanno applicati a un'immagine macchina denominata my-machine-image:

  • 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, 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 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 sul sistema operativo dell'immagine macchina. Questi gestori di 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, vedi Crea una configurazione NAT utilizzando il router Cloud.

  3. Configura l'accesso privato Google. Per ulteriori informazioni, vedi Configurazione dell'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 argomento aggiuntivo.

    Per ulteriori informazioni sul flag o argomento obbligatorio, fai clic sulle schede seguenti:

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 i seguenti valori:

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

REST

Invia una richiesta POST al metodo projects.builds.create utilizzando l'API Cloud Build e specificando 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 i seguenti valori:

  • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine macchina.
  • MACHINE_IMAGE_NAME: il nome dell'immagine 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 specificato nel file OVA. Ad esempio, ubuntu-1604. Per impostazione predefinita, questo flag è facoltativo, ma in alcuni casi potrebbe essere obbligatorio. Ti consigliamo di inserirlo. Per un elenco dei valori supportati, vedi le opzioni del flag --os per il comando gcloud compute instances import.
  • ZONE: la zona in cui importare l'immagine macchina.

Importa un'immagine macchina utilizzando service account personalizzati

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

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

Per impostazione predefinita, il processo di importazione utilizza il service account predefinito di Compute Engine. Tuttavia, se il service account predefinito di Compute Engine è disattivato nel tuo progetto o se vuoi utilizzare un service account di Compute Engine personalizzato, devi crearne uno e specificarlo per la procedura di importazione.

gcloud

  1. Aggiungi l'appliance virtuale a Cloud Storage.

  2. Crea un service account e assegnagli i ruoli minimi. Per ulteriori informazioni sulla creazione dei service account, vedi Creazione e gestione dei service account.

    Al service account di Compute Engine specificato devono essere assegnati almeno i seguenti ruoli:

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

    Questi ruoli minimi sono necessari per il service account specificato con il flag --compute-service-account. Per ulteriori informazioni, vedi Concedi i ruoli richiesti al service account di 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 i seguenti valori:

    • MACHINE_IMAGE_NAME: il nome dell'immagine macchina da importare.
    • SOURCE_URI: il percorso del file OVA o OVF su Cloud Storage.
    • OS: il sistema operativo specificato nel file OVA. Per impostazione predefinita, questo flag è facoltativo, ma in alcuni casi potrebbe essere obbligatorio. Ti consigliamo di inserirlo.
    • TEMP_SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato al service account personalizzato creato nel passaggio precedente. Questo service account viene utilizzato dalle VM temporanee. Se non viene specificato, la VM utilizza il service account di Compute Engine predefinito.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato al service account personalizzato da associare a qualsiasi VM creata a partire da questa immagine macchina. Non ci sono limitazioni relative alle autorizzazioni per questo service account, che puoi personalizzare in base alle tue esigenze. Se non viene specificato un service account, alle VM viene associato quello predefinito di Compute Engine.
    • SCOPES: specifica il livello di accesso per l'opzione --service-account. Se non viene specificato, vengono utilizzati gli ambiti predefiniti. Per ulteriori informazioni, vedi il flag --scopes.

REST

  1. Aggiungi l'appliance virtuale a Cloud Storage.

  2. Crea un service account e assegnagli i ruoli minimi. Per ulteriori informazioni sulla creazione dei service account, consulta Creazione di service account.

    Al service account di Compute Engine specificato devono essere assegnati almeno i seguenti ruoli:

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

    Questi ruoli minimi sono necessari per il service account specificato con l'argomento -compute-service-account. Per ulteriori informazioni, vedi Concedi i ruoli richiesti al service account di Compute Engine.

  3. Invia una richiesta POST al metodo projects.builds.create utilizzando l'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 i seguenti valori:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare l'immagine macchina.
    • MACHINE_IMAGE_NAME: il nome dell'immagine 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 specificato nel file OVA. Ad esempio, ubuntu-1604. Per impostazione predefinita, questo flag è facoltativo, ma in alcuni casi potrebbe essere obbligatorio. Ti consigliamo di inserirlo. Per un elenco dei valori supportati, vedi le opzioni del flag --os per il comando gcloud compute instances import.
    • ZONE: la zona in cui importare l'immagine macchina.
    • TEMP_SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato al service account personalizzato creato nel passaggio precedente. Questo service account viene utilizzato dalle VM temporanee. Se non viene specificato, la VM utilizza il service account di Compute Engine predefinito.
    • SERVICE_ACCOUNT_EMAIL: l'indirizzo email associato al service account personalizzato da associare a qualsiasi VM creata a partire da questa immagine macchina. Non ci sono limitazioni relative alle autorizzazioni per questo service account, che puoi personalizzare in base alle tue esigenze. Se non viene specificato un service account, alle VM viene associato quello predefinito di Compute Engine.
    • SCOPES: specifica il livello di accesso per l'opzione --service-account. Se non viene specificato, vengono utilizzati gli ambiti predefiniti. Per ulteriori informazioni, vedi il flag --scopes.

Passaggi successivi