Importa appliance virtuali

Un'appliance virtuale è un pacchetto che contiene le immagini disco e la configurazione hardware per un'istanza di macchina virtuale (VM).

Un formato ampiamente usato e popolare per le appliance virtuali è il formato OVF. Quando pacchettizzi appliance virtuali nel formato OVF, generi un pacchetto OVF. Un pacchetto OVF è una cartella che contiene un file descrittore .ovf e una raccolta di altre risorse, come i dischi. Quando un pacchetto OVF viene archiviato in un unico file, si parla di file OVA.

Puoi importare in Compute Engine le VM in formato OVF, sia che si trovino in un pacchetto OVF sia in un singolo file OVA. Per verificare se l'utilizzo di un'appliance virtuale è la scelta migliore per il tuo caso d'uso, consulta Scegliere un percorso di migrazione.

Quando importi un'appliance virtuale, il processo di importazione utilizza le informazioni memorizzate nel file descrittore per creare e avviare una VM su Compute Engine.

In Compute Engine, puoi importare i file OVA o OVF nel seguente modo:

Prima di iniziare

  • Se per il progetto in cui vuoi importare l'appliance virtuale è stato definito un criterio per le immagini attendibili, aggiungi projects/compute-image-import e projects/compute-image-tools all'elenco di publisher autorizzati.
  • Se importi un'appliance virtuale da un altro progetto, consulta Importazione tra progetti.
  • 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.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    gcloud

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

      gcloud init
    2. Imposta una regione e una zona predefinite.

    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

Requisiti

Questa sezione elenca i requisiti per l'importazione di appliance virtuali in Compute Engine.

Requisiti della VM di origine

La VM utilizzata per creare il file OVF deve soddisfare i seguenti requisiti:

  • I dischi virtuali devono essere in formato VMDK o VHD.
  • I dischi virtuali non devono essere criptati.

    Per verificare che la tua VM soddisfi i requisiti, puoi eseguire lo strumento di precontrollo.

Il sistema operativo per la VM di origine deve soddisfare i seguenti requisiti:

  • Per tutti i sistemi operativi Windows, deve essere installato PowerShell 3 o versioni successive. Le versioni di PowerShell precedenti alla 3.0 possono causare problemi con gli script di avvio e arresto utilizzati durante il processo di importazione.
  • Per tutte le distribuzioni Linux, il disco di avvio deve soddisfare i seguenti requisiti:

    • Sul disco di avvio deve essere installato GRUB.
    • Il disco di avvio non deve comprendere più dischi fisici. Un disco partizionato utilizzando un gestore dei volumi logici (LVM) non è supportato. Se il disco occupa più dischi fisici, la VM creata dal file OVF potrebbe non avviarsi in Compute Engine.

Requisiti del file OVF

Il file OVF deve soddisfare i seguenti requisiti:

  • I file OVF devono fornire la portabilità di Level 1, come descritto nel documento sulla specifica OVF. Puoi importare le appliance virtuali che soddisfano la portabilità di Level 2, ma durante il processo di importazione vengono ignorate eventuali estensioni personalizzate, come i dettagli specifici dell'hypervisor di origine.
  • Il file OVF deve contenere una sola VM. Se è presente più di una VM, viene importata solo la prima.
  • Il primo disco nel file OVF deve essere avviabile.

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.

Configurazioni importate dallo strumento di importazione

Lo standard OVF specifica il processo per l'imballaggio di appliance virtuali in modo da non dipendere dal fornitore di virtualizzazione. I pacchetti di appliance virtuali OVF contengono un file descrittore .ovf e una raccolta di altre risorse come i dischi virtuali.

Quando importi un'appliance virtuale OVF in Compute Engine, vengono elaborate e importate le seguenti configurazioni del file descrittore:

  • Dischi virtuali. Informazioni recuperate dall'elemento DiskSection del pacchetto OVF.
  • CPU e memoria. Dati recuperati da ResourceAllocationSection del pacchetto OVF.

    Se le configurazioni di CPU o memoria non rientrano nei limiti dell'intervallo supportato in Compute Engine, il processo di importazione imposta i valori sul valore massimo supportato da Compute Engine.

  • Disco di avvio. Dettagli recuperati dall'elemento BootDeviceSection del pacchetto OVF.

  • Sistema operativo guest. Dettagli recuperati dall'elemento OperatingSystemSection del pacchetto OVF.

    Le informazioni sul sistema operativo guest vengono utilizzate per installare i driver e i pacchetti di ambiente guest corretti nell'istanza importata. Se le informazioni del sistema operativo guest trovate in OVF non sono corrette, l'importazione non va a buon fine. Puoi utilizzare il flag --os per eseguire l'override delle informazioni sul sistema operativo guest.

Le VM importate vengono sempre create con una singola scheda di rete con un indirizzo IP esterno. Questo singolo adattatore di rete viene utilizzato indipendentemente dalle configurazioni di rete specificate nel file OVF. Per importare una VM senza indirizzo IP esterno, consulta Importazione di una VM senza indirizzo IP esterno.

Quando importi un'appliance virtuale, le seguenti sezioni del file descrittore vengono ignorate (non importate):

  • NetworkSection
  • AnnotationSection
  • ProductSection
  • EulaSection
  • StartupSection
  • DeploymentOptionSection
  • InstallSection
  • EnvironmentFilesSection
  • SharedDiskSection
  • ScaleOutSection
  • PlacementGroupSection
  • PlacementSection
  • EncryptionSection

Limitazioni

Questa funzionalità non è supportata per i progetti protetti con Controlli di servizio VPC.

Sistemi operativi supportati

Facoltativamente, puoi specificare il sistema operativo nell'elemento OperatingSystemSection del file descrittore o specificare il flag --os quando importi l'appliance virtuale utilizzando il comando gcloud compute instances import.

Per informazioni sui sistemi operativi supportati, consulta Dettagli sul sistema operativo.

Supporto per BYOL e BYOS

Per impostazione predefinita, i file OVF che utilizzano i sistemi operativi Windows Server e Red Hat Enterprise Linux (RHEL) vengono importati e configurati per l'utilizzo della fatturazione on demand del sistema operativo premium, che comporta costi aggiuntivi.

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

Puoi importare le appliance come appliance con licenza BYOL utilizzando il comando gcloud compute instances import con il flag --byol. Se specifichi manualmente il sistema operativo, utilizza il flag --os per specificare un valore contenente il suffisso byol per il sistema operativo guest che vuoi importare. Ad esempio, --os=rhel-8-byol importa un'immagine RHEL 8 con una licenza esistente.

Importa tra progetti

  • Progetto di origine: il progetto in cui è archiviato il file OVA o OVF.
  • Progetto di destinazione: il progetto in cui vuoi creare l'immagine della VM o della macchina.

Se il progetto di origine e quello di destinazione sono diversi, gli account di servizio nel progetto di destinazione devono accedere al bucket Cloud Storage nel progetto di origine.

Per eseguire l'importazione tra progetti, completa i seguenti passaggi:

  1. Nel progetto di origine, individua il bucket Cloud Storage.
  2. Nel bucket Cloud Storage, concedi roles/storage.objectViewer ai seguenti account di servizio:

    • Account di servizio Cloud Build per il progetto di destinazione: questo account di servizio ha il formato DESTINATION_PROJECT_NUMBER@cloudbuild.gserviceaccount.com
    • Account di servizio Compute Engine per il progetto di destinazione: questo account di servizio ha il formato DESTINATION_PROJECT_NUMBER-compute@developer.gserviceaccount.com

    Sostituisci DESTINATION_PROJECT_NUMBER con il numero del progetto per il progetto di destinazione.

    Per istruzioni su come concedere l'accesso a un bucket Cloud Storage, consulta Aggiunta di un'entità a un criterio a livello di bucket.

  3. Importa l'appliance virtuale o l'immagine macchina.

Importa appliance virtuali

Puoi importare l'appliance virtuale utilizzando Google Cloud CLI o REST.

Importa un file OVA

gcloud

  1. Carica l'appliance virtuale in Cloud Storage.
  2. Per importare un file OVA da Cloud Storage in Compute Engine, utilizza il comando gcloud compute instances import.

    gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVA_FILE
    

    Sostituisci quanto segue:

    • VM_NAME: il nome dell'istanza che vuoi creare
    • PATH_TO_OVA_FILE: percorso del file OVA in Cloud Storage

    Esempi

    Ad esempio, per importare un file OVA Ubuntu.ova e creare un'istanza denominata my-instance, esegui questo comando:

    gcloud compute instances import my-instance \
        --source-uri=gs://my-bucket/Ubuntu.ova
    

    Se le informazioni sul sistema operativo guest nel file descrittore OVF non sono corrette o se vuoi sostituire il sistema operativo rilevato, puoi specificare il sistema operativo aggiungendo il flag --os. Per un elenco dei valori supportati, esamina le opzioni del flag --os per il comando gcloud compute instances import.

    Ad esempio, per importare un file OVA Ubuntu.ova e creare un'istanza denominata my-instance che esegue Ubuntu 16.04, esegui questo comando:

    gcloud compute instances import my-instance \
        --os=ubuntu-1604
        --source-uri=gs://my-bucket/Ubuntu.ova
    

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":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare il file OVA.
    • VM_NAME: il nome dell'istanza di macchina virtuale da creare. Ad esempio, my-instance.
    • SOURCE_URI: l'URI del file OVA archiviato in Cloud Storage. Ad esempio, gs://my-bucket/my-instance.ova.
    • ZONE: la zona in cui creare l'istanza VM. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

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

    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-12-30T19:06:03.968694865Z",
        "steps": [
          {
            "name": "gcr.io/compute-image-tools/gce_ovf_import:release",
            "env": [
              "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
            ],
            "args": [
              "-instance-names=my-instance",
              "-ovf-gcs-path=gs://my-bucket/my-instance.ova",
              "-zone=asia-northeast2",
              "-client-id=api",
              "-timeout": "7056s"
            ]
          }
        ],
        "timeout": "7200s",
        "projectId": "myproject-12345",
        "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com",
        "options": {
          "logging": "LEGACY"
        },
        "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345",
        "tags": [
          "gce-ovf-import"
        ]
      }
    }
    }
    

    Per monitorare la build, puoi utilizzare uno dei seguenti metodi:

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

Importa un file OVF

gcloud

  1. Carica l'appliance virtuale in Cloud Storage.
  2. Per importare un file OVF da Cloud Storage a Compute Engine, utilizza il comando gcloud compute instances import.

    Se la directory contiene un solo file OVF, puoi fornire il percorso del file descrittore o il percorso della directory che contiene il file OVF.

    • Per importare un file OVF utilizzando il percorso del file descrittore, esegui questo comando:

      gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVF_FILE
      
    • Per importare un file OVF utilizzando il percorso della directory, esegui questo comando:

      gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVF_DIRECTORY
      

    Sostituisci quanto segue:

    • VM_NAME: il nome dell'istanza da creare
    • PATH_TO_OVF_FILE: il percorso del file OVF in Cloud Storage
    • PATH_TO_OVF_DIRECTORY: il percorso della directory che contiene il file OVF su Cloud Storage

    Esempi

    • Per importare un file OVF Ubuntu.ovf dalla directory my-ovf-directory che crea un'istanza denominata my-instance, esegui questo comando:

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      
    • Per importare un file OVF dalla directory my-ovf-directory che crea un'istanza denominata my-instance, esegui questo comando:

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory
      

      Se le informazioni sul sistema operativo guest nel file descrittore OVF non sono corrette o se vuoi sostituire il sistema operativo rilevato, puoi specificare il sistema operativo aggiungendo il flag --os. Per un elenco dei valori supportati, esamina le opzioni del flag --os per il comando gcloud compute instances import. Ad esempio, per importare un file OVF Ubuntu.ovf e creare un'istanza denominata my-instance che esegue Ubuntu 16.04, esegui questo comando:

      gcloud compute instances import my-instance \
       --os=ubuntu-1604 \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      

REST

  1. Aggiungi l'appliance virtuale a 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":[
           "-instance-names=VM_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-zone=ZONE",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare il file OVA.
    • VM_NAME: il nome dell'istanza di macchina virtuale da creare. Ad esempio, my-instance.
    • SOURCE_URI: l'URI del file OVF archiviato in Cloud Storage. Ad esempio, gs://my-bucket/my-instance.ovf.
    • OS: il sistema operativo del file OVF. Ad esempio, ubuntu-1604. Il flag --os è facoltativo per impostazione predefinita, ma puoi eseguire l'override del sistema operativo rilevato utilizzando questo flag. Per un elenco dei valori supportati, esamina le opzioni del flag --os per il comando gcloud compute instances import.
    • ZONE: la zona in cui creare l'istanza VM. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

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

    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-12-30T19:06:03.968694865Z",
        "steps": [
          {
            "name": "gcr.io/compute-image-tools/gce_ovf_import:release",
            "env": [
              "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
            ],
            "args": [
              "-instance-names=my-instance",
              "-ovf-gcs-path=gs://my-bucket/my-instance.ovf",
              "-os=ubuntu-1404",
              "-zone=asia-south1",
              "-client-id=api",
              "-timeout": "7056s"
            ]
          }
        ],
        "timeout": "7200s",
        "projectId": "myproject-12345",
        "logsBucket": "gs://12345.cloudbuild-logs.googleusercontent.com",
        "options": {
          "logging": "LEGACY"
        },
        "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=myproject-12345",
        "tags": [
          "gce-ovf-import"
        ]
      }
    }
    }
    

    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.

Importazione con impostazioni personalizzate

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 file OVA o importare un file OVF e specificare i flag --custom-cpu e--custom-memory.

Esempio

Ad esempio, per importare un'istanza denominata my-instance che ha 2 CPU e 2048 MB di memoria, esegui questo comando:

gcloud compute instances import my-instance \
    --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 Cloud Build per importare un OVA o importare un file OVF e specificare l'argomento -machine-type. Questo -machine-type rappresenta un tipo di macchina predefinita o personalizzata da utilizzare.

Esempio

Ad esempio, per importare un'istanza denominata my-instance che ha 2 CPU e 2048 MB di memoria, utilizza la seguente richiesta. Sostituisci PROJECT_ID con l'ID progetto.

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

Reti personalizzate

La rete personalizzata deve essere definita nello stesso progetto in cui stai importando l'immagine.

gcloud

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

Esempio 1: utilizzo di una rete personalizzata

Ad esempio, supponiamo le seguenti proprietà:

  • Nome VM: my-instance
  • Rete: custom-vpc-network
  • Subnet: company-vpc-us-east1-c
  • Zona: us-east1-c

Esegui questo comando per importare un'istanza con le proprietà precedenti. Sostituisci SERVICE_PROJECT_ID con l'ID del progetto in cui vuoi importare l'appliance virtuale.

gcloud compute instances import my-instance \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --project SERVICE_PROJECT_ID \
    --network custom-vpc-network \
    --subnet company-vpc-us-east1-c \
    --zone us-east1-c

Esempio 2: utilizzo di una rete personalizzata (VPC condiviso)

Ad esempio, supponiamo le seguenti proprietà:

  • Nome VM: my-instance-2
  • Rete: my-shared-vpc
  • Subnet: my-shared-subnet
  • Zona: us-east1-c

Per importare una VM con le proprietà precedenti, segui questi passaggi:

  1. Aggiungi il ruolo compute.networkUser all'account di servizio Cloud Build. Per ulteriori informazioni, consulta Concedere i ruoli richiesti all'account di servizio Cloud Build.

  2. Importare la VM.

    gcloud compute instances import my-instance-2 \
       --source-uri gs://my-bucket/Ubuntu.ova \
       --project SERVICE_PROJECT_ID \
       --network projects/HOST_PROJECT_ID/global/networks/my-shared-vpc \
       --subnet projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet
       --zone us-east1-c
    

    Sostituisci quanto segue:

    • SERVICE_PROJECT_ID: ID del progetto in cui vuoi importare l'appliance virtuale
    • HOST_PROJECT_ID: ID del progetto in cui si trova il VPC condiviso

REST

Per utilizzare una rete personalizzata, segui i passaggi dell'API Cloud Build per importare un OVA o importare un file OVF e specificare un argomento -network. Se la rete è configurata con una modalità di subnet personalizzata, devi specificare anche gli argomenti -subnet e -zone.

Esempio: utilizzo di una rete personalizzata

Ad esempio, supponiamo le seguenti proprietà:

  • Nome VM: my-instance
  • Rete: custom-vpc-network
  • Subnet: company-vpc-us-east1-c
  • Zona: us-east1-c

Crea la seguente richiesta POST per importare un'istanza con le proprietà precedenti. Sostituisci SERVICE_PROJECT_ID con l'ID del progetto in cui vuoi importare l'appliance virtuale.

POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=my-instance",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-zone=us-east1-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=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-ovf-import"
  ]
}

Esempio 2: utilizzo di una rete personalizzata (VPC condiviso)

Ad esempio, supponiamo le seguenti proprietà:

  • Nome VM: my-instance-2
  • Rete: my-shared-vpc
  • Subnet: my-shared-subnet
  • Zona: us-east1-c

Per importare una VM con le proprietà precedenti, segui questi passaggi:

  1. Aggiungi il ruolo compute.networkUser all'account di servizio Cloud Build. Per ulteriori informazioni, consulta Concedere i ruoli richiesti all'account di servizio Cloud Build.

  2. Crea la seguente richiesta POST per importare la VM.

    POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
    {
     "timeout":"7200s",
     "steps":[
       {
         "args":[
           "-instance-names=my-instance-2",
           "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
           "-zone=us-east1-c",
           "-network=projects/HOST_PROJECT_ID/global/networks/my-shared-vpc",
           "-subnet=projects/HOST_PROJECT_ID/regions/us-east1/subnetworks/my-shared-subnet",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":[
       "gce-ovf-import"
     ]
    }
    

    Sostituisci quanto segue:

    • SERVICE_PROJECT_ID: ID del progetto in cui vuoi importare l'appliance virtuale.
    • HOST_PROJECT_ID: ID del progetto in cui si trova il VPC condiviso.

Importa una VM utilizzando reti che non consentono indirizzi IP esterni

Per importare una VM utilizzando reti che non consentono indirizzi IP esterni, completa 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 per la VM. 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 istruzioni dettagliate, consulta Configurazione dell'accesso privato Google.

  4. Importa la VM utilizzando Google Cloud CLI o REST.

    Quando la VM viene creata 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, fai clic sulle seguenti schede:

gcloud

Per importare un'appliance virtuale da Cloud Storage in Compute Engine, utilizza il comando gcloud compute instances import con il flag --no-address.

gcloud compute instances import VM_NAME \
    --source-uri=SOURCE_URI \
    --zone=ZONE \
    --no-address

Sostituisci quanto segue:

  • VM_NAME: il nome dell'istanza che vuoi creare.
  • SOURCE_URI: URI per il file OVA o OVF in Cloud Storage. Ad esempio, gs://my-bucket/Ubuntu.ova.
  • ZONE: la zona in cui creare l'appliance virtuale. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

REST

Puoi importare una VM senza IP esterno utilizzando l'API Cloud Build con un override per l'IP esterno.

Per eseguire l'override delle impostazioni dell'IP esterno specificate nel file OVF, segui i passaggi dell'API Cloud Build per importare un OVA o importare un file OVF e specificare l'argomento -no-external-ip.

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

Sostituisci quanto segue:

  • PROJECT_ID: ID del progetto in cui vuoi importare l'immagine.
  • VM_NAME: nome della VM da creare.
  • SOURCE_FILE: URI dell'immagine in Cloud Storage. Ad esempio, gs://my-bucket/Ubuntu.ova.
  • ZONE: la zona in cui creare l'immagine. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

Importa un file OVA con un bootloader UEFI

gcloud

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

gcloud compute instances import VM_NAME \
  --source-uri=SOURCE_URI \
  --guest-os-features=UEFI_COMPATIBLE

Sostituisci quanto segue:

  • VM_NAME: il nome della VM che vuoi creare.
  • SOURCE_URI: URI per il file OVA o OVF in Cloud Storage. Ad esempio, gs://my-bucket/Ubuntu.ova.

REST

Puoi importare un file OVA con un bootloader UEFI utilizzando l'API Cloud Build e specificando l'argomento -uefi-compatible.

  1. Carica l'appliance virtuale in Cloud Storage.

  2. Nell'API, crea una richiesta POST all'API Cloud Build.

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto in cui vuoi importare il file OVA.
    • VM_NAME: il nome dell'istanza di macchina virtuale da creare. Ad esempio, my-instance.
    • SOURCE_URI: l'URI del file OVA archiviato in Cloud Storage. Ad esempio, gs://my-bucket/my-instance.ova.
    • ZONE: la zona in cui creare l'istanza VM. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.

Importa un'appliance virtuale utilizzando account di servizio personalizzati

Durante l'importazione di un'appliance virtuale, 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. È 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 nella 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 instances import per importare l'appliance virtuale.

    gcloud compute instances import VM_NAME \
    --source-uri=SOURCE_URI \
    --zone=ZONE \
    --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
    --service-account=SERVICE_ACCOUNT_EMAIL \
    --scopes=SCOPES
    

    Sostituisci quanto segue:

    • VM_NAME: il nome dell'istanza che vuoi creare.
    • SOURCE_URI: URI per il file OVA o OVF in Cloud Storage. Ad esempio, gs://my-bucket/Ubuntu.ova.
    • ZONE: la zona in cui creare l'appliance virtuale. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.
    • 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 alla VM creata dal processo di importazione. 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. Nell'API, crea una richiesta POST all'API Cloud Build.

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

    Sostituisci quanto segue:

    • PROJECT_ID: ID del progetto in cui vuoi importare l'immagine.
    • VM_NAME: nome della VM da creare.
    • SOURCE_FILE: URI dell'immagine in Cloud Storage. Ad esempio, gs://my-bucket/Ubuntu.ova.
    • ZONE: la zona in cui creare l'immagine. Se non la specifichi, viene utilizzata la zona predefinita per il progetto.
    • 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 alla VM creata dal processo di importazione. 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.

Passaggi successivi