Virtuelle Appliances importieren


Eine virtuelle Appliance ist ein Paket, das Speicherabbilder und die Hardwarekonfiguration für eine virtuelle Maschine (VM) enthält.

Ein weit verbreitetes und beliebtes Format für virtuelle Appliances ist das OVF-Format. Wenn Sie virtuelle Appliances im OVF-Format packen, generieren Sie ein OVF-Paket. Ein OVF-Paket ist ein Ordner, der eine .ovf-Deskriptordatei und eine Sammlung anderer Ressourcen wie Laufwerke enthält. Wird ein OVF-Paket in einer einzelnen Datei archiviert, wird es als OVA-Datei bezeichnet.

Sie können VMs im OVF-Format in Compute Engine importieren, unabhängig davon, ob sie in einem OVF-Paket oder in einer einzelnen OVA-Datei vorliegen. Lesen Sie Importmethode auswählen, um zu prüfen, ob die Verwendung einer virtuellen Appliance für Ihren Anwendungsfall die beste Wahl ist.

Wenn Sie eine virtuelle Appliance importieren, werden beim Import die in der Deskriptordatei gespeicherten Informationen verwendet, um eine VM-Instanz in Compute Engine zu erstellen und zu starten.

So können Sie OVA- und OVF-Dateien in Compute Engine importieren:

Hinweis

Cloud Build API aufrufen

Das Tool zum Importieren virtueller Appliances verwendet Cloud Build.

In den meisten Fällen versucht gcloud compute instances import, dem Cloud Build-Dienstkonto diese Berechtigungen zu gewähren. Sie können diese Berechtigungen auch manuell gewähren, um sicherzustellen, dass die erforderlichen Berechtigungen wirksam sind.

Console

  1. Aktivieren Sie die Cloud Build API.

    Cloud Build API aufrufen

    Wenn Sie die Cloud Build API über die Console aktivieren, erteilt Compute Engine dem Cloud Build-Dienstkonto die folgenden Rollen, damit der Cloud Build-Dienst Instanzen in Compute Engine importieren kann:

    • roles/iam.serviceAccountTokenCreator
    • roles/compute.admin
    • roles/iam.serviceAccountUser

    Das Importtool verwendet auch das Compute Engine-Standarddienstkonto. Das Compute Engine-Dienstkonto hat standardmäßig die IAM-Rolle "Projektbearbeiter". Wenn diese Rolle entfernt wird, kann der Importvorgang fehlschlagen. Informationen zum Hinzufügen der Rolle zum Dienstkonto finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen. Weitere Informationen zum Compute Engine-Standarddienstkonto finden Sie unter Compute Engine-Standarddienstkonto.

gcloud

Führen Sie die folgenden Schritte aus, um den Cloud Build-Dienst mit dem gcloud-Befehlszeilentool einzurichten:

  1. Aktivieren Sie Cloud Build.

    gcloud services enable cloudbuild.googleapis.com

    Das Importtool verwendet auch das Compute Engine-Standarddienstkonto. Das Compute Engine-Dienstkonto hat standardmäßig die IAM-Rolle "Projektbearbeiter". Wenn diese Rolle entfernt wird, kann der Importvorgang fehlschlagen. Informationen zum Hinzufügen der Rolle zum Dienstkonto finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen. Weitere Informationen zum Compute Engine-Standarddienstkonto finden Sie unter Compute Engine-Standarddienstkonto.

  2. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle compute.admin hinzu.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/compute.admin
    
  3. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle iam.serviceAccountUser hinzu.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountUser
    
  4. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle iam.serviceAccountTokenCreator hinzu.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountTokenCreator
    

    Dabei gilt:

Anforderungen

Quell-VM-Anforderungen

Die folgenden Anforderungen müssen von der VM erfüllt werden, die zum Erstellen der OVF-Datei verwendet wird:

  • Virtuelle Laufwerke müssen im VMDK- oder VHD-Format vorliegen.
  • Virtuelle Laufwerke dürfen nicht verschlüsselt sein.

    Sie können das Precheck-Tool ausführen, um zu prüfen, ob Ihre VM die Anforderungen erfüllt.

Das Betriebssystem für die Quell-VM sollte die folgenden Anforderungen erfüllen:

  • Für alle Windows-Betriebssysteme muss Version 3 von PowerShell oder höher installiert sein. PowerShell-Versionen, die älter als Version 3.0 sind, können Probleme mit den während des Importvorgangs verwendeten Start- und Shutdown-Skripts verursachen.
  • Für alle Linux-Distributionen muss das Bootlaufwerk die folgenden Anforderungen erfüllen:

    • Auf dem Bootlaufwerk muss GRUB installiert sein.
    • Das Bootlaufwerk darf sich nicht über mehrere physische Laufwerke erstrecken. Ein Laufwerk, das mit einem Logical Volume Manager partitioniert wird, wird nicht unterstützt. Wenn sich das Laufwerk über mehrere physische Laufwerke erstreckt, startet die aus der OVF-Datei erstellte VM möglicherweise nicht in Compute Engine.

OVF-Dateianforderungen

Die folgenden Anforderungen müssen von der OVF-Datei erfüllt werden:

  • Die OVF-Datei muss die in der OVF-Spezifikation beschriebene Level 1-Portabilität bieten. Virtuelle Appliances mit Level 2-Portabilität können zwar importiert werden, aber alle benutzerdefinierten Erweiterungen wie Details des Quell-Hypervisors werden während des Importvorgangs ignoriert.
  • Die OVF-Datei darf nur eine VM enthalten. Wenn mehrere VMs vorhanden sind, wird nur die erste VM importiert.
  • Das erste Laufwerk in der OVF-Datei muss bootfähig sein.

Konfigurationen, die vom Import-Tool importiert werden

Der OVF-Standard legt den Prozess für das Packen virtueller Appliances in einer Weise fest, die nicht vom Virtualisierungsanbieter abhängig ist. OVF-Pakete für virtuelle Appliances enthalten eine .ovf-Deskriptordatei und eine Sammlung anderer Ressourcen wie virtuelle Laufwerke.

Wenn Sie eine virtuelle OVF-Appliance in Compute Engine importieren, werden die folgenden Konfigurationen aus der Deskriptordatei verarbeitet und importiert:

  • Informationen zu virtuellen Laufwerken, die aus dem Element DiskSection des OVF-Pakets abgerufen werden
  • Informationen zu CPU und Arbeitsspeicher, die aus dem Element ResourceAllocationSection des OVF-Pakets abgerufen werden

    Wenn die CPU- oder Arbeitsspeicherkonfigurationen außerhalb der Grenzen des unterstützten Bereichs in Compute Engine liegen, legt der Importprozess die Werte auf das Maximum fest, das in Compute Engine unterstützt wird.

  • Details zum Bootlaufwerk, die aus dem Element BootDeviceSection des OVF-Pakets abgerufen werden

  • Details zum Gastbetriebssystem, die aus dem Element OperatingSystemSection des OVF-Pakets abgerufen werden

    Die Informationen zum Gastbetriebssystem werden verwendet, um die richtigen Treiber und Gastumgebungspakete für die importierte Instanz zu installieren. Wenn die im OVF-Paket gefundenen Informationen zum Gastbetriebssystem falsch sind, schlägt der Import fehl. Mit dem Flag --os können Sie Informationen zum Gastbetriebssystem überschreiben.

Importierte VMs werden immer mit einem einzelnen Netzwerkadapter mit einer externen IP-Adresse erstellt. Dieser einzelne Netzwerkadapter wird unabhängig von den in der OVF-Datei angegebenen Netzwerkkonfigurationen verwendet. Informationen zum Importieren einer VM ohne externe IP-Adresse finden Sie unter VM ohne externe IP-Adresse importieren.

Beim Importieren einer virtuellen Appliance werden die folgenden Abschnitte der Deskriptordatei ignoriert (nicht importiert):

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

Beschränkungen

Dieses Feature wird nicht für Projekte unterstützt, die durch VPC Service Controls geschützt werden.

Unterstützte Betriebssysteme

Geben Sie im Element OperatingSystemSection der Deskriptordatei das Betriebssystem an oder verwenden Sie während des Imports die Flag-Option --os mithilfe des Befehls gcloud compute instances import.

Informationen darüber, welche Betriebssysteme unterstützt werden, finden Sie unter Details zu Betriebssystemen.

Unterstützung für BYOL und BYOS

Standardmäßig werden OVF-Dateien, die Windows Server- und Red Hat Enterprise Linux-Betriebssysteme (RHEL) verwenden, importiert und für die Verwendung der On-Demand-Abrechnung für Premium-Betriebssysteme konfiguriert, für die zusätzliche Kosten anfallen.

Wenn Sie Ihre eigene Softwarelizenz oder ein eigenes Softwareabo verwenden möchten, können Sie Ihre virtuellen Appliances mit deren Lizenzen importieren. Informationen zu den Betriebssystemen, die BYOL oder BYOS unterstützen, finden Sie unter Details zu Betriebssystemen.

Geben Sie zum Importieren von Appliances als BYOL-lizenzierte Appliances die entsprechenden BYOL-Werte für das Flag [--os] an, wenn Sie den Befehl gcloud compute instances import ausführen.

Projektübergreifend importieren

  • Quellprojekt: das Projekt, in dem die OVA- oder OVF-Datei gespeichert ist.
  • Zielprojekt: das Projekt, in dem Sie die VM oder das Maschinen-Image erstellen möchten.

Wenn Ihre Quell- und Zielprojekte anders sind, benötigen die Dienstkonten im Zielprojekt Zugriff auf den Cloud Storage-Bucket in Ihrem Quellprojekt.

Führen Sie die folgenden Schritte aus, um projektübergreifend zu importieren:

  1. Suchen Sie in Ihrem Quellprojekt nach dem Cloud Storage-Bucket.
  2. Weisen Sie im Cloud Storage-Bucket den folgenden Dienstkonten roles/storage.objectViewer zu:

    • Cloud Build-Dienstkonto für das Zielprojekt: Dieses Dienstkonto hat das Format DESTINATION_PROJECT_NUMBER@cloudbuild.gserviceaccount.com.
    • Compute Engine-Dienstkonto für das Zielprojekt: Dieses Dienstkonto hat das Format DESTINATION_PROJECT_NUMBER-compute@developer.gserviceaccount.com.

    Ersetzen Sie DESTINATION_PROJECT_NUMBER durch die Projektnummer für das Zielprojekt.

    Eine Anleitung zum Gewähren des Zugriffs auf einen Cloud Storage-Bucket finden Sie unter Mitglieder zu einer Richtlinie auf Bucket-Ebene hinzufügen.

  3. Importieren Sie die virtuelle Appliance oder das Maschinen-Image.

Virtuelle Appliances importieren

Sie können Ihre virtuelle Appliance entweder mit dem gcloud-Befehlszeilentool oder der Cloud Build API importieren.

OVA-Datei importieren

gcloud

  1. Laden Sie die virtuelle Appliance in Cloud Storage hoch.
  2. Verwenden Sie zum Importieren einer OVA-Datei aus Cloud Storage in Compute Engine den Befehl gcloud compute instances import:

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

    Ersetzen Sie Folgendes:

    • VM_NAME: Name der zu erstellenden Instanz
    • PATH_TO_OVA_FILE: Pfad zur OVA-Datei in Cloud Storage

    Beispiele

    Mit diesem Befehl importieren Sie beispielsweise eine OVA-Datei Ubuntu.ova und erstellen eine Instanz namens my-instance:

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

    In einigen Fällen werden Sie möglicherweise aufgefordert, einen Wert für das Betriebssystem anzugeben. Zum Angeben des Betriebssystems müssen Sie das Flag --os hinzufügen. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute instances import.

    Führen Sie den folgenden Befehl aus, um beispielsweise eine OVA-Datei Ubuntu.ova zu importieren und eine Instanz namens my-instance zu erstellen, auf der Ubuntu 16.04 ausgeführt wird:

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

API

  1. Laden Sie die virtuelle Appliance in Cloud Storage hoch.

  2. Erstellen Sie in der API eine POST-Anfrage an die Cloud Build API.

    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"
     ]
    }
    

    Dabei gilt:

    • PROJECT_ID: Projekt-ID des Projekts, in das Sie die OVA-Datei importieren möchten.
    • VM_NAME: Name der zu erstellenden VM-Instanz. Beispiel: my-instance
    • SOURCE_URI: URI für die OVA-Datei, die in Cloud Storage gespeichert ist. Beispiel: gs://my-bucket/my-instance.ova
    • OS: Betriebssystem der OVA-Datei. Beispiel: ubuntu-1604 Dieses Flag ist standardmäßig optional, kann aber in einigen Fällen erforderlich sein. Wir empfehlen, dieses Flag anzugeben. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute instances import.
    • ZONE: Zone, in der die VM-Instanz erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.

    Weitere args-Werte, die Sie angeben können, finden Sie im Bereich zu optionalen Flags auf der GitHub-Seite für den Compute Engine-OVF-Import.

    Beispielantwort

    Die folgende Beispielantwort sieht ungefähr so aus wie die zurückgegebene Ausgabe:

    {
    "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",
              "-os=rhel-6",
              "-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"
        ]
      }
    }
    }
    

    Für das Monitoring Ihres Builds können Sie eine dieser Methoden verwenden:

    • Ausführen einer projects.builds.get-Anfrage mit der zurückgegebenen build-id
    • Prüfen der Logs, die unter der bereitgestellten logUrl gehostet werden

OVF-Datei importieren

gcloud

  1. Laden Sie die virtuelle Appliance in Cloud Storage hoch.
  2. Verwenden Sie zum Importieren einer OVF-Datei aus Cloud Storage in Compute Engine den Befehl gcloud compute instances import.

    Wenn Ihr Verzeichnis nur eine OVF-Datei enthält, können Sie entweder den Pfad zur Deskriptordatei oder den Pfad zu dem Verzeichnis angeben, das die OVF-Datei enthält.

    • Führen Sie den folgenden Befehl aus, um eine OVF-Datei unter Verwendung des Pfads zur Deskriptordatei zu importieren:

      gcloud compute instances import VM_NAME \
       --source-uri=gs:PATH_TO_OVF_FILE
      
    • Führen Sie den folgenden Befehl aus, um eine OVF-Datei unter Verwendung des Verzeichnispfads zu importieren:

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

    Ersetzen Sie Folgendes:

    • VM_NAME: Name der zu erstellenden Instanz
    • PATH_TO_OVF_FILE: Pfad zur OVF-Datei in Cloud Storage
    • PATH_TO_OVF_DIRECTORY: Pfad zum Verzeichnis mit der OVF-Datei in Cloud Storage

    Beispiele

    • Mit diesem Befehl importieren Sie beispielsweise aus dem Verzeichnis my-ovf-directory die OVF-Datei Ubuntu.ovf, die eine Instanz namens my-instance erstellt:

      gcloud compute instances import my-instance \
       --source-uri=gs://my-bucket/my-ovf-directory/Ubuntu.ovf
      
    • Mit diesem Befehl importieren Sie beispielsweise aus dem Verzeichnis my-ovf-directory eine OVF-Datei, die eine Instanz namens my-instance erstellt:

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

      In einigen Fällen werden Sie möglicherweise aufgefordert, einen Wert für das Betriebssystem anzugeben. Zum Angeben des Betriebssystems müssen Sie das Flag --os hinzufügen. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute instances import. Mit diesem Befehl importieren Sie beispielsweise die OVF-Datei Ubuntu.ovf und erstellen eine Instanz namens my-instance, auf der Ubuntu 16.04 ausgeführt wird:

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

API

  1. Fügen Sie die virtuelle Appliance zu Cloud Storage hinzu.

  2. Erstellen Sie in der API eine POST-Anfrage an die Cloud Build API.

    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"
     ]
    }
    

    Dabei gilt:

    • PROJECT_ID: Projekt-ID des Projekts, in das Sie die OVA-Datei importieren möchten.
    • VM_NAME: Name der zu erstellenden VM-Instanz. Beispiel: my-instance
    • SOURCE_URI: URI für die OVF-Datei, die in Cloud Storage gespeichert ist. Beispiel: gs://my-bucket/my-instance.ovf
    • OS: Betriebssystem der OVF-Datei. Beispiel: ubuntu-1604 Dieses Flag ist standardmäßig optional, kann aber in einigen Fällen erforderlich sein. Wir empfehlen, dieses Flag anzugeben. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute instances import.
    • ZONE: Zone, in der die VM-Instanz erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.

    Weitere args-Werte, die Sie angeben können, finden Sie im Bereich zu optionalen Flags auf der GitHub-Seite für den Compute Engine-OVF-Import.

    Beispielantwort

    Die folgende Beispielantwort sieht ungefähr so aus wie die zurückgegebene Ausgabe:

    {
    "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"
        ]
      }
    }
    }
    

    Es gibt mehrere Möglichkeiten, den Build zu überwachen:

    • Ausführen einer projects.builds.get-Anfrage mit der zurückgegebenen build-id
    • Prüfen der Logs, die unter der bereitgestellten logUrl gehostet werden

Mit benutzerdefinierten Einstellungen importieren

Benutzerdefinierte CPU und Arbeitsspeicher

gcloud

Damit Sie die in der OVF-Datei angegebene CPU- oder Arbeitsspeicherkonfiguration überschreiben können, führen Sie die Schritte des gcloud-Befehlszeilentools aus, um eine OVA-Datei zu importieren oder eine OVF-Datei zu importieren. Geben Sie außerdem die Flags --custom-cpu und --custom-memory an.

Beispiel

Führen Sie den folgenden Befehl aus, um beispielsweise eine Instanz namens my-instance zu importieren, auf der Ubuntu 14.04 ausgeführt wird und die 2 CPUs und 2.048 MB Arbeitsspeicher hat:

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

API

Damit Sie die in der OVF-Datei angegebene CPU- oder Arbeitsspeicherkonfiguration überschreiben können, führen Sie die Schritte der Cloud Build API aus, um eine OVA-Datei zu importieren oder eine OVF-Datei zu importieren. Geben Sie außerdem das Argument -machine-type an. Dieser -machine-type steht für einen vordefinierten oder benutzerdefinierten Maschinentyp, der verwendet werden soll.

Beispiel

Mit dieser Anfrage importieren Sie beispielsweise eine Instanz namens my-instance, die Ubuntu 14.04 ausführt und zwei CPUs und 2.048 MB Arbeitsspeicher hat. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

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",
        "-os=ubuntu-1404",
        "-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"
  ]
}

Benutzerdefinierte Netzwerke

gcloud

Damit Sie ein benutzerdefiniertes Netzwerk verwenden können, führen Sie die Schritte des gcloud-Befehlszeilentools aus, um eine OVA-Datei zu importieren oder eine OVF-Datei zu importieren. Geben Sie außerdem das Flag --network an. Wenn das Netzwerk mit einem benutzerdefinierten Subnetzmodus konfiguriert ist, müssen Sie auch die Flags --subnet und --zone angeben.

Beispiel 1: Mit einem benutzerdefinierten Netzwerk

Gehen Sie beispielsweise von folgenden Attributen aus:

  • VM-Name: my-instance
  • Betriebssystem: Ubuntu 1404
  • Netzwerk: custom-vpc-network
  • Subnetz: company-vpc-us-east1-c
  • Zone: us-east1-c

Mit diesem Befehl importieren Sie eine Instanz mit den vorherigen Attributen. Ersetzen Sie SERVICE_PROJECT_ID durch die ID des Projekts, in das Sie die virtuelle Appliance importieren möchten.

gcloud compute instances import my-instance \
    --os ubuntu-1404 \
    --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

Beispiel 2: Mit einem benutzerdefinierten Netzwerk (freigegebene VPC)

Gehen Sie beispielsweise von folgenden Attributen aus:

  • VM-Name: my-instance-2
  • Betriebssystem: Ubuntu 1404
  • Netzwerk: my-shared-vpc
  • Subnetz: my-shared-subnet
  • Zone: us-east1-c

So importieren Sie eine VM mit den vorherigen Attributen:

  1. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle compute.networkUser hinzu.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member serviceAccount:SERVICE_PROJECT_NUM@cloudbuild.gserviceaccount.com \
      --role roles/compute.networkUser
    

    Ersetzen Sie Folgendes:

    • HOST_PROJECT_ID: ID des Projekts, in dem sich die freigegebene VPC befindet
    • SERVICE_PROJECT_NUM: Projektnummer für das Projekt, in das Sie die virtuelle Appliance importieren möchten
  2. Importieren Sie die VM.

    gcloud compute instances import my-instance-2 \
       --os ubuntu-1404 \
       --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
    

    Ersetzen Sie Folgendes:

    • SERVICE_PROJECT_ID: ID des Projekts, in das Sie die virtuelle Appliance importieren möchten
    • HOST_PROJECT_ID: ID des Projekts, in dem sich die freigegebene VPC befindet

API

Damit Sie ein benutzerdefiniertes Netzwerk verwenden können, führen Sie die Schritte der Cloud Build API aus, um eine OVA-Datei zu importieren oder eine OVF-Datei zu importieren. Geben Sie außerdem das Argument -network an. Wenn das Netzwerk mit einem benutzerdefinierten Subnetzmodus konfiguriert ist, müssen Sie auch die Argumente -subnet und -zone angeben.

Beispiel: Mit einem benutzerdefinierten Netzwerk

Gehen Sie beispielsweise von folgenden Attributen aus:

  • VM-Name: my-instance
  • Betriebssystem: Ubuntu 1404
  • Netzwerk: custom-vpc-network
  • Subnetz: company-vpc-us-east1-c
  • Zone: us-east1-c

Erstellen Sie die folgende POST-Anfrage, um eine Instanz mit diesen Attributen zu importieren. Ersetzen Sie SERVICE_PROJECT_ID durch die ID des Projekts, in das Sie die virtuelle Appliance importieren möchten.

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",
        "-os=ubuntu-1404",
        "-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"
  ]
}

Beispiel 2: Mit einem benutzerdefinierten Netzwerk (freigegebene VPC)

Gehen Sie beispielsweise von folgenden Attributen aus:

  • VM-Name: my-instance-2
  • Betriebssystem: Ubuntu 1404
  • Netzwerk: my-shared-vpc
  • Subnetz: my-shared-subnet
  • Zone: us-east1-c

So importieren Sie eine VM mit den vorherigen Attributen:

  1. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle compute.networkUser hinzu.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member serviceAccount:SERVICE_PROJECT_NUM@cloudbuild.gserviceaccount.com \
      --role roles/compute.networkUser
    

    Ersetzen Sie Folgendes:

    • HOST_PROJECT_ID: ID des Projekts, in dem sich die freigegebene VPC befindet
    • SERVICE_PROJECT_NUM: Projektnummer für das Projekt, in das Sie die virtuelle Appliance importieren möchten
  2. Erstellen Sie die folgende POST-Anfrage, um die VM zu importieren.

    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",
           "-os=ubuntu-1404",
           "-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"
     ]
    }
    

    Ersetzen Sie Folgendes:

    • SERVICE_PROJECT_ID: ID des Projekts, in das Sie die virtuelle Appliance importieren möchten
    • HOST_PROJECT_ID: ID des Projekts, in dem sich die freigegebene VPC befindet

VM mithilfe von Netzwerken importieren, die externe IP-Adressen nicht zulassen

Führen Sie die folgenden Schritte aus, um eine VM mit Netzwerken zu importieren, die keine externen IP-Adressen zulassen:

  1. Fügen Sie die virtuelle Appliance zu Cloud Storage hinzu.

  2. Für den Import müssen Paketmanager auf dem Betriebssystem der VM installiert sein. Diese Paketmanager müssen möglicherweise Anfragen an Paket-Repositories außerhalb von Google Cloud stellen. Damit der Zugriff auf diese Updates möglich ist, müssen Sie Cloud NAT konfigurieren. Weitere Informationen finden Sie unter NAT-Konfiguration mit Cloud Router erstellen.

  3. Konfigurieren Sie den privaten Google-Zugriff. Eine ausführliche Anleitung finden Sie unter Privaten Google-Zugriff konfigurieren.

  4. Importieren Sie die VM mit dem gcloud-Befehlszeilentool oder der Cloud Build API.

    Wenn eine VM von einer virtuellen Appliance erstellt wird, werden temporäre VMs in Ihrem Projekt erstellt. Damit diesen temporären VMs keine externen IP-Adressen zugewiesen sind, müssen Sie ein zusätzliches Flag oder Argument angeben.

    Für weitere Informationen klicken Sie auf die folgenden Tabs:

gcloud

Importieren Sie eine virtuelle Appliance von Cloud Storage in Compute Engine mit dem Befehl gcloud compute instances import mit dem Flag --no-address.

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

Dabei gilt:

  • VM_NAME: Name der zu erstellenden Instanz.
  • SOURCE_URI: URI für Ihre OVA- oder OVF-Datei in Cloud Storage. Beispiel: gs://my-bucket/Ubuntu.ova
  • OS: Betriebssystem der OVA-Datei. Beispiel: ubuntu-1604 Dieses Flag ist standardmäßig optional, kann aber in einigen Fällen erforderlich sein. Wir empfehlen, dieses Flag anzugeben. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute instances import.
  • ZONE: die Zone, in der die virtuelle Appliance erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.

API

Sie können eine VM ohne externe IP-Adresse importieren. Verwenden Sie dazu die Cloud Build API mit einer Überschreibung für die externe IP-Adresse.

Wenn Sie die in der OVF-Datei angegebenen externen IP-Einstellungen überschreiben möchten, führen Sie die Schritte der Cloud Build API aus, um eine OVA-Datei zu importieren oder eine OVF-Datei zu importieren und geben Sie das Argument -no-external-ip an.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-instance-names=VM_NAME",
        "-ovf-gcs-path=SOURCE_FILE",
        "-os=OS",
        "-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"
  ]
}

Dabei gilt:

  • PROJECT_ID: Projekt-ID des Projekts, in das Sie das Image importieren möchten.
  • VM_NAME ist der Name der zu erstellenden VM.
  • SOURCE_FILE: URI für das Image in Cloud Storage. Beispiel: gs://my-bucket/Ubuntu.ova.
  • OS: Betriebssystem des Images. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute images import.
  • ZONE ist die Zone, in der das Image erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.

OVA-Datei mit UEFI-Bootloader importieren

Sie können eine OVA-Datei mit einem UEFI-Bootloader importieren, wenn Sie die Cloud Build API verwenden und das Argument -uefi-compatible angeben.

  1. Laden Sie die virtuelle Appliance in Cloud Storage hoch.

  2. Erstellen Sie in der API eine POST-Anfrage an die Cloud Build API.

    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",
           "-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"
     ]
    }
    

    Dabei gilt:

    • PROJECT_ID: Projekt-ID des Projekts, in das Sie die OVA-Datei importieren möchten.
    • VM_NAME: Name der zu erstellenden VM-Instanz. Beispiel: my-instance
    • SOURCE_URI: URI für die OVA-Datei, die in Cloud Storage gespeichert ist. Beispiel: gs://my-bucket/my-instance.ova
    • OS: Betriebssystem der OVA-Datei. Beispiel: ubuntu-1604 Dieses Flag ist standardmäßig optional, kann aber in einigen Fällen erforderlich sein. Wir empfehlen, dieses Flag anzugeben. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute instances import.
    • ZONE: Zone, in der die VM-Instanz erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.

Virtuelle Appliance mithilfe von benutzerdefinierten Dienstkonten importieren

Während eines Imports der virtuellen Appliance werden temporäre VM-Instanzen in Ihrem Projekt erstellt. Das Tool zum Importieren von Images auf diesen temporären VMs muss authentifiziert werden.

Ein Dienstkonto ist eine Identität, die mit einer VM verbunden ist. Auf Zugriffstoken für Dienstkonten kann über den Instanzmetadatenserver zugegriffen und zur Authentifizierung des Import-Tools auf der VM verwendet werden.

Beim Import wird standardmäßig das Compute Engine-Standarddienstkonto verwendet. Wenn jedoch das Compute Engine-Standarddienstkonto in Ihrem Projekt deaktiviert ist oder Sie ein benutzerdefiniertes Compute Engine-Dienstkonto verwenden möchten, müssen Sie ein Dienstkonto erstellen und für den Importvorgang angeben.

gcloud

  1. Fügen Sie die virtuelle Appliance zu Cloud Storage hinzu.

  2. Erstellen Sie ein Dienstkonto und weisen Sie die Mindestrollen zu. Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.

    Dem angegebenen Compute Engine-Dienstkonto müssen mindestens die folgenden Rollen zugewiesen sein:

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

    Diese Mindestrollen sind für das Dienstkonto erforderlich, das für das Flag --compute-service-account angegeben wurde.

  3. Importieren Sie die virtuelle Appliance mit dem Befehl gcloud compute instances import.

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

    Dabei gilt:

    • VM_NAME: Name der zu erstellenden Instanz.
    • SOURCE_URI: URI für Ihre OVA- oder OVF-Datei in Cloud Storage. Beispiel: gs://my-bucket/Ubuntu.ova
    • OS: Betriebssystem der OVA-Datei. Beispiel: ubuntu-1604 Dieses Flag ist standardmäßig optional, kann aber in einigen Fällen erforderlich sein. Wir empfehlen, dieses Flag anzugeben. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute instances import.
    • ZONE: die Zone, in der die virtuelle Appliance erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.
    • TEMP_SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des benutzerdefinierten Dienstkontos, das im vorherigen Schritt erstellt wurde. Dieses Dienstkonto wird von den temporären VMs verwendet. Wenn nicht angegeben, verwendet die VM das Compute Engine-Standarddienstkonto.
    • SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des benutzerdefinierten Dienstkontos, das an die durch den Importvorgang erstellte VM angehängt werden soll. Es gibt keine Berechtigungsbeschränkungen für dieses Dienstkonto. Sie können dieses Dienstkonto nach Bedarf anpassen. Wenn keine Angabe erfolgt, wird das Compute Engine-Standarddienstkonto mit der VM verbunden.
    • SCOPES: Legen Sie die Zugriffsebene für die Option --service-account fest. Wenn keine Angabe gemacht wird, werden die Standardbereiche verwendet. Weitere Informationen finden Sie unter dem Flag --scopes.

API

  1. Fügen Sie die virtuelle Appliance zu Cloud Storage hinzu.

  2. Erstellen Sie ein Dienstkonto und weisen Sie die Mindestrollen zu. Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.

    Dem angegebenen Compute Engine-Dienstkonto müssen mindestens die folgenden Rollen zugewiesen sein:

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

    Diese Mindestrollen sind für das Dienstkonto erforderlich, das für das Flag --compute-service-account angegeben wurde.

  3. Erstellen Sie in der API eine POST-Anfrage an die Cloud Build API.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "timeout":"7200s",
      "steps":[
        {
          "args":[
            "-instance-names=VM_NAME",
            "-ovf-gcs-path=SOURCE_FILE",
            "-os=OS",
            "-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"
      ]
    }
    

    Dabei gilt:

    • PROJECT_ID: Projekt-ID des Projekts, in das Sie das Image importieren möchten.
    • VM_NAME ist der Name der zu erstellenden VM.
    • SOURCE_FILE: URI für das Image in Cloud Storage. Beispiel: gs://my-bucket/Ubuntu.ova.
    • OS: Betriebssystem des Images. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute images import.
    • ZONE ist die Zone, in der das Image erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.
    • TEMP_SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des benutzerdefinierten Dienstkontos, das im vorherigen Schritt erstellt wurde. Dieses Dienstkonto wird von den temporären VMs verwendet. Wenn nicht angegeben, verwendet die VM das Compute Engine-Standarddienstkonto.
    • SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des benutzerdefinierten Dienstkontos, das an die durch den Importvorgang erstellte VM angehängt werden soll. Es gibt keine Berechtigungsbeschränkungen für dieses Dienstkonto. Sie können dieses Dienstkonto nach Bedarf anpassen. Wenn keine Angabe erfolgt, wird das Compute Engine-Standarddienstkonto mit der VM verbunden.
    • SCOPES: Legen Sie die Zugriffsebene für die Option -service-account fest. Wenn keine Angabe gemacht wird, werden die Standardbereiche verwendet. Weitere Informationen finden Sie unter dem Flag --scopes.

Nächste Schritte