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 Migrationspfad 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:

Hinweise

  • Wenn für das Projekt, in das Sie die virtuelle Appliance importieren möchten, eine Trusted Image-Richtlinie definiert ist, fügen Sie projects/compute-image-import und projects/compute-image-tools zur Liste der zulässigen Herausgeber hinzu.
  • Wenn Sie eine virtuelle Appliance aus einem anderen Projekt importieren, finden Sie weitere Informationen unter Projektübergreifend importieren.
  • Informationen zu den Anforderungen für das Importieren von Images finden Sie unter Voraussetzungen für den Import und Export von VM-Images.
  • Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben. Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

Voraussetzungen

In diesem Abschnitt sind die Anforderungen für den Import virtueller Appliances in Compute Engine aufgeführt.

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.

Berechtigungen

Achten Sie für einen problemlosen Import darauf, dass Ihrem Konto, dem Cloud Build-Dienstkonto und dem Compute Engine-Dienstkonto die erforderlichen IAM-Rollen zugewiesen sind. Weitere Informationen finden Sie unter Erforderliche IAM-Rollen zuweisen.

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

Sie können das Betriebssystem optional im OperatingSystemSection-Element Ihrer Deskriptordatei angeben oder das Flag --os angeben, wenn Sie die virtuelle Appliance mithilfe des gcloud compute instances import-Befehls importieren.

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.

Sie können Appliances als BYOL-lizenzierte Appliances importieren. Dazu verwenden Sie den Befehl gcloud compute instances import mit dem Flag --byol. Wenn Sie das Betriebssystem manuell angeben, geben Sie mit dem Flag --os einen Wert an, der das Suffix byol für das Gastbetriebssystem enthält, das Sie importieren möchten. Beispielsweise importiert --os=rhel-8-byol ein RHEL 8-Image mit einer vorhandenen Lizenz.

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 Hauptkonto 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 der Google Cloud CLI oder mit REST 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
    

    Wenn die Informationen zum Gastbetriebssystem in der OVF-Deskriptordatei falsch sind oder wenn Sie das erkannte Betriebssystem überschreiben möchten, können Sie das Betriebssystem mit dem Flag --os angeben. 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
    

REST

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

  2. Senden Sie 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",
           "-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
    • 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",
              "-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
      

      Wenn die Informationen zum Gastbetriebssystem in der OVF-Deskriptordatei falsch sind oder wenn Sie das erkannte Betriebssystem überschreiben möchten, können Sie das Betriebssystem mit dem Flag --os angeben. 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
      

REST

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

  2. Senden Sie 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 Das Flag --os ist standardmäßig optional, aber Sie können das erkannte Betriebssystem mit diesem Flag überschreiben. 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 Google Cloud CLI 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 beispielsweise den folgenden Befehl aus, um eine Instanz namens my-instance zu importieren, die 2 CPUs und 2.048 MB Arbeitsspeicher hat:

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

REST

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

Wenn Sie beispielsweise eine Instanz namens my-instance mit zwei CPUs und 2.048 MB Arbeitsspeicher importieren möchten, verwenden Sie die folgende Anfrage. 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",
        "-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

Das benutzerdefinierte Netzwerk muss in demselben Projekt definiert werden, in das Sie das Image importieren.

gcloud

Damit Sie ein benutzerdefiniertes Netzwerk verwenden können, führen Sie die Schritte der Google Cloud CLI aus, um eine OVA-Datei zu importieren oder eine OVF-Datei zu importieren und geben Sie ein 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
  • 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 \
    --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
  • Netzwerk: my-shared-vpc
  • Subnetz: my-shared-subnet
  • Zone: us-east1-c

So importieren Sie eine VM mit den vorherigen Attributen:

  1. Weisen Sie dem Cloud Build-Dienstkonto die Rolle compute.networkUser zu. Weitere Informationen finden Sie unter Erforderliche Rollen für das Cloud Build-Dienstkonto zuweisen.

  2. Importieren Sie die 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
    

    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

REST

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
  • 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",
        "-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
  • Netzwerk: my-shared-vpc
  • Subnetz: my-shared-subnet
  • Zone: us-east1-c

So importieren Sie eine VM mit den vorherigen Attributen:

  1. Weisen Sie dem Cloud Build-Dienstkonto die Rolle compute.networkUser zu. Weitere Informationen finden Sie unter Erforderliche Rollen für das Cloud Build-Dienstkonto zuweisen.

  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",
           "-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 entweder mit der Google Cloud CLI oder mit REST.

    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 \
    --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
  • 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.

REST

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",
        "-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.
  • 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

gcloud

Mit dem Befehl gcloud compute instances import können Sie einen Import erzwingen, der den UEFI-Boot verwendet.

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

Dabei gilt:

  • VM_NAME: Name der VM, die Sie erstellen möchten.
  • SOURCE_URI: URI für Ihre OVA- oder OVF-Datei in Cloud Storage. Beispiel: gs://my-bucket/Ubuntu.ova

REST

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",
           "-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
    • 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 werden für das Dienstkonto benötigt, das für das Flag --compute-service-account angegeben ist. Weitere Informationen finden Sie unter Erforderliche Rollen für das Compute Engine-Dienstkonto zuweisen.

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

    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
    

    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
    • 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.

REST

  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 Argument -compute-service-account angegeben wurde. Weitere Informationen finden Sie unter Compute Engine-Dienstkonto die erforderlichen Rollen zuweisen.

  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",
            "-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.
    • 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