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.

Auf dieser Seite werden die Schritte zum Importieren eines Maschinen-Images aus einer virtuellen Appliance mithilfe der Compute Engine beschrieben.

Hinweise

Unterstützte Formate

Mit der Compute Engine können Sie Maschinen-Image-Dateien in den folgenden Formaten importieren:

  • Open Virtualization Format (OVF): Eine OVF-Datei und VMDK-Dateien (Virtual Machine Disk) im selben Bucket.
  • Open Virtual Appliance (OVA): Eine OVA-Datei, die eine OVF-Datei und VMDK-Dateien enthält.

Importvorgang für Maschinen-Images

So importieren Sie ein Maschinen-Image mit der Compute Engine in die Compute Engine:

  1. Maschinen-Imagedatei für den Import vorbereiten
  2. Zielprojekt auswählen
  3. Maschinen-Image in die Compute Engine importieren

Maschinendatei für den Import vorbereiten

Wenn Sie ein Maschinen-Image in ein Compute Engine-Image importieren möchten, müssen Sie zuerst die Maschinen-Imagedatei für den Import vorbereiten. In den folgenden Abschnitten werden diese Aufgaben ausführlich erläutert.

Maschinen-Image-Datei zu Cloud Storage hinzufügen

Wenn Sie ein Maschinen-Image in ein Compute Engine-Maschinen-Image importieren möchten, müssen Sie die Maschinen-Image-Datei zuerst zu Cloud Storage hinzufügen. Weitere Informationen finden Sie unter Objekte aus einem Dateisystem hochladen. Für eine bessere Leistung empfehlen wir, die Datei mit dem Maschinen-Image in einen Bucket in derselben Google Cloud-Umgebung hochzuladen, in der Sie das Maschinen-Image erstellen möchten.

Erforderliche Berechtigungen erteilen

Wenn Sie ein Maschinen-Image in ein Compute Engine-Maschinen-Image importieren möchten, gewähren Sie die Berechtigungen wie in der folgenden Tabelle beschrieben.

Rolle Erforderliche Berechtigungen Beschreibung
Storage-Objekt-Betrachter roles/storage.objectViewer Weisen Sie dem Standarddienstkonto von Migrate to Virtual Machines im Hostprojekt (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) die Rolle roles/vmmigration.serviceAgent für den Bucket zu, in dem sich das Image befindet, das Sie importieren möchten. Mit dieser Berechtigung kann Migrate to Virtual Machines auf das Quell-Image zugreifen.
VM-Migrationsadministrator roles/vmmigration.admin Gewähren Sie im Hostprojekt dem Nutzerkonto, mit dem Sie das Quell-Image importieren möchten, die Rolle roles/vmmigration.admin.
VM Migration-Dienstkonto roles/vmmigration.serviceAgent Weisen Sie dem Standarddienstkonto von Migrate to Virtual Machines im Hostprojekt (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) die Rolle roles/vmmigration.serviceAgent für das Zielprojekt zu. Wenn service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com beispielsweise das Migrate to Virtual Machines-Dienstkonto im Hostprojekt ist, müssen Sie diesem Dienstkonto die Rolle roles/vmmigration.serviceAgent zuweisen, um das Image im Zielprojekt zu erstellen.

Zielprojekt auswählen

Wenn Sie das Maschinen-Image hosten möchten, müssen Sie ein Zielprojekt erstellen oder auswählen. Ein Zielprojekt definiert das Zielprojekt für ein Maschinen-Image. Weitere Informationen zum Erstellen oder Auswählen eines Zielprojekts finden Sie unter Zielprojekt hinzufügen.

Maschinen-Image in Compute Engine importieren

Sie können ein Maschinen-Image mithilfe der Google Cloud CLI- oder der REST API-Befehle in Compute Engine importieren.

Wenn Sie ein Maschinen-Image importieren, erstellt die Compute Engine einige temporäre Ressourcen wie VMs oder Laufwerke im Zielprojekt. Diese temporären Ressourcen werden gelöscht, sobald der Import des Maschinen-Images abgeschlossen ist.

gcloud

Verwenden Sie die folgende Anfrage, um ein Maschinen-Image mit der Google Cloud CLI in Compute Engine zu importieren.

gcloud alpha migration vms machine-image-imports create IMAGE_NAME \
--source-file=SOURCE_FILE \
--location=REGION_ID \
--target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT

Ersetzen Sie Folgendes:

  • IMAGE_NAME: Der Name des Maschinen-Images, das Sie erstellen möchten. Weitere Informationen zu den Benennungsregeln finden Sie unter Namenskonventionen.
  • SOURCE_FILE ist die Datei, aus der Sie das Maschinen-Image importieren möchten. Geben Sie den Pfad im Format gs://bucket/folder/file ein. Informationen zum Abrufen des Pfads eines Objekts in einem Bucket finden Sie unter Objektmetadaten ansehen. Beachten Sie, dass Sie nur Images aus .ovf- und .ova-Dateien importieren können.
  • REGION_ID ist die Region, in der der Maschinen-Image-Importprozess ausgeführt werden soll. Das Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie das Image in einer Region erstellen möchten, muss singleRegionStorage auf "true" gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.
  • HOST_PROJECT_ID ist der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren möchten.
  • TARGET_PROJECT ist das Zielprojekt, in dem Sie das Maschinen-Image erstellen möchten. Falls noch nicht geschehen, fügen Sie ein Zielprojekt hinzu. Folgen Sie dazu der Anleitung unter Zielprojekt hinzufügen.
  • REGION_ID ist die Region, in der der Maschinen-Image-Importprozess ausgeführt werden soll. Das Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie das Image in einer Region erstellen möchten, muss singleRegionStorage auf "true" gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.

Weitere Informationen finden Sie unter gcloud migration vms image-imports.

REST API

So importieren Sie ein Maschinen-Image mithilfe der REST API in Compute Engine:

  1. Erstellen Sie mit der folgenden Anfrage eine Ressource zum Importieren von Maschinen-Images.

    POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME
    {
    "cloudStorageUri": "SOURCE_FILE",
    "machineImageTargetDefaults": {
    "imageName": "IMAGE_NAME",
    "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT",
    ...
    }
    }
    

    Ersetzen Sie Folgendes:

    • HOST_PROJECT_ID ist der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren möchten.
    • REGION_ID ist die Region, in der der Maschinen-Image-Importprozess ausgeführt werden soll. Das Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie das Maschinen-Image in einer Region erstellen möchten, muss singleRegionStorage auf "true" gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.
    • SOURCE_FILE ist die Datei, aus der Sie das Maschinen-Image importieren möchten. Geben Sie den Pfad im Format gs://bucket/folder/file ein. Informationen zum Abrufen des Pfads eines Objekts in einem Bucket finden Sie unter Objektmetadaten ansehen. Beachten Sie, dass Sie nur Images aus .ova- und .ovf-Dateien importieren können.
    • IMAGE_NAME: Der Name des Maschinen-Images, das Sie erstellen möchten. Weitere Informationen zu den Benennungsregeln finden Sie unter Namenskonventionen.
    • TARGET_PROJECT ist das Zielprojekt, in dem Sie das Maschinen-Image erstellen möchten. Falls noch nicht geschehen, fügen Sie ein Zielprojekt hinzu. Folgen Sie dazu der Anleitung unter Zielprojekt hinzufügen.

    In diesem Beispiel ist IMPORT_NAME eine ID, die die Importressource für das Maschinen-Image darstellt. Wenn Sie ein Maschinen-Image in die Compute Engine importieren, wird mit „Migrate to Virtual Machines“ zuerst eine Importressource für das Maschinen-Image erstellt. Die Maschinen-Image-Importressource stellt den Maschinen-Image-Importvorgang dar. Mit IMPORT_NAME können Sie den Link zum Maschinen-Image abrufen, das im Rahmen des Importprozesses importiert wurde.

    Eine vollständige Liste der unterstützte Maschinen-Image-Import/Erstellen/Anfrage-Felder finden Sie in der folgenden Tabelle.

    Feldname Beschreibung
    cloudStorageUri Der Pfad zur Datei, aus der Sie das Maschinen-Image importieren möchten. Geben Sie den Pfad im Format gs://bucket/folder/file ein. Informationen zum Abrufen des Pfads eines Objekts in einem Bucket finden Sie unter Objektmetadaten ansehen.
    Beachten Sie, dass Sie nur Images aus .ovf- und .ova-Dateien importieren können.
    machineImageTargetDefaults.targetProject Ist das Zielprojekt, in dem Sie das Image erstellen möchten. Weitere Informationen finden Sie in der API-Referenz für Zielprojekte. Beispiel:
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    Ersetzen Sie im Beispiel Folgendes:
    • HOST_PROJECT_ID ist der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren möchten.
    • TARGET_PROJECT ist das Zielprojekt, in dem Sie das Image erstellen möchten.
    machineImageTargetDefaults.machine_image_name Der Name des zu erstellenden Maschinen-Images. Weitere Informationen zu den Benennungsregeln finden Sie unter Namenskonvention für Ressourcen.
    machineImageTargetDefaults.description (Optional) Eine Beschreibung des Maschinen-Images.
    machineImageTargetDefaults.machine_type (Optional) Der Computer, mit dem das Maschinen-Image erstellt werden soll. Wenn Sie den Maschinentyp nicht angeben, wählt die Compute Engine anhand der Informationen aus dem Quellmaschinen-Image einen geeigneten Maschinentyp aus.
    machineImageTargetDefaults.labels Zur Organisation Ihres Projekts können Sie den Ressourcen Labels als Schlüssel/Wert-Paare hinzufügen. Weitere Informationen finden Sie unter Ressourcen mit Labels versehen.
    machineImageTargetDefaults.tags Fügen Sie dem Maschinen-Image beliebige Tags hinzu. Weitere Informationen finden Sie unter Tags für Ressourcen verwalten.
    machineImageTargetDefaults.additionalLicenses Sie können der VM-Instanz, die aus dem importierten Maschinen-Image erstellt wurde, bis zu zehn zusätzliche Lizenzen mit einem gültigen URL-Format hinzufügen. Sie können beispielsweise zusätzliche Lizenzen im folgenden URL-Format hinzufügen:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    machineImageTargetDefaults.service_account Geben Sie das Dienstkonto im Zielprojekt an, das vom Maschinen-Image verwendet wird. Standardmäßig ist dem Maschinen-Image kein Dienstkonto zugewiesen.
    Wenn Sie eine Compute Engine-Instanz aus einem Maschinen-Image erstellen und darauf eine Anwendung ausführen möchten, benötigt die Instanz möglicherweise Zugriff auf andere gcloud CLI-Dienste und APIs. Erstellen Sie ein Dienstkonto im Zielprojekt mit den erforderlichen Berechtigungen für den Zugriff auf diese Dienste und APIs, bevor Sie die Compute Engine-Instanz erstellen. Geben Sie dann das Dienstkonto hier an. Weitere Informationen finden Sie unter VM einrichten, die als Dienstkonto ausgeführt werden soll.
    Zum Anhängen des Dienstkontos an die Compute Engine-Instanz benötigt Ihr Nutzerkonto im Compute Engine-Hostprojekt die erforderlichen Berechtigungen. Weitere Informationen finden Sie unter Berechtigungen für das Dienstkonto des Zielprojekts konfigurieren.
    machineImageTargetDefaults.shielded_instance_config Optional: Aktivieren Sie Shielded VM auf dieser Instanz. Shielded VMs werden durch eine Reihe von Sicherheitsfunktionen gegen Rootkits und Bootkits geschützt. Weitere Informationen finden Sie unter Was ist Shielded VM?
    machineImageTargetDefaults.singleRegionStorage Setzen Sie dieses Flag auf „true“, wenn das Maschinen-Image storageLocations eine Region sein soll. Wenn Sie dieses Flag auf „false“ (falsch) setzen, wird die nächstgelegene Multiregion ausgewählt.
    machineImageTargetDefaults.skip_os_adaptation Setzen Sie dieses Flag auf „true“, wenn Sie die Betriebssystemanpassung überspringen möchten.
    Damit VMs, die aus importierten Maschinen-Images erstellt wurden, in Google Cloud ordnungsgemäß funktionieren, muss ihre Konfiguration geändert werden. Diese Änderungen werden als Betriebssystemanpassungen bezeichnet. Die Compute Engine führt im Maschinen-Image-Importvorgang automatisch Betriebssystemanpassungen durch. Weitere Informationen finden Sie unter VM-Instanzen für die Ausführung in Google Cloud anpassen.
    machineImageTargetDefaults.osAdaptationParameters.licenseType Der Lizenztyp, den Sie für Ihr Maschinen-Image verwenden möchten. Compute Engine unterstützt "Pay-As-You-Go"-Lizenzen (PAYG-Lizenzen) und die Verwendung eigener Lizenzen (Bring your own License, BYOL) für Ihre bereitgestellten VMs. Der Standardlizenztyp für eine migrierte VM wird von der Compute Engine basierend auf dem migrierten Betriebssystem zugewiesen, wie unter Unterstützte Betriebssysteme beschrieben.
    Wenn Ihr Betriebssystem mehrere Lizenztypen unterstützt, können Sie den Standardlizenztyp überschreiben, um explizit den Lizenztyp PAYG oder BYOL anzugeben.
    machineImageTargetDefaults.osAdaptationParameters.network_interfaces Mit der Compute Engine können Sie optional Maschinen-Images mit mehreren Netzwerkschnittstellen (NICs) erstellen. Jede Schnittstelle ist an ein anderes VPC-Netzwerk angeschlossen, sodass dieses Maschinen-Image Zugriff auf verschiedene VPC-Netzwerke in der gcloud CLI erhält.
    Bevor Sie zusätzliche Netzwerkschnittstellen hinzufügen, sollten Sie die folgenden Punkte beachten:
    • Das Anhängen mehrerer Netzwerkschnittstellen an dasselbe VPC-Netzwerk wird nicht unterstützt. Die Konfiguration kann zwar gespeichert werden, die Instanziierung der VM schlägt jedoch fehl.
    • Nachdem eine Compute Engine-Instanz aus einem Maschinen-Image instanziiert wurde, können Sie mit test-clone oder cut-over keine Netzwerkschnittstelle zu der erstellten Instanz hinzufügen oder daraus entfernen. Sie können test-clone oder cut-over mit unterschiedlichen Zieldetails wiederholen, um die Instanz neu zu erstellen.
      So fügen Sie eine Netzwerkschnittstelle hinzu oder entfernen sie:
      • Wählen Sie Netzwerkschnittstelle hinzufügen aus, um der Compute Engine-Instanz eine zusätzliche Netzwerkschnittstelle hinzuzufügen. Sie können dieselben Optionen wie bei der ersten Netzwerkschnittstelle festlegen.
    Weitere Informationen finden Sie unter Instanzen mit mehreren Netzwerkschnittstellen erstellen.
    machineImageTargetDefaults.osAdaptationParameters.generalize Setzen Sie dieses Flag auf „true“, wenn Sie das Maschinen-Image verallgemeinern möchten.
    Wenn Sie eine Instanz aus einem Maschinen-Image erstellen, fügt Windows der Instanz einige eindeutige Informationen hinzu. Bei der Generalisierung werden diese Informationen entfernt, damit Sie mehrere Instanzen aus demselben Maschinen-Image erstellen können.
    machineImageTargetDefaults.encryption Der von Google verwaltete Verschlüsselungsschlüssel, mit dem Sie Ihre Daten während des Importvorgangs verschlüsseln möchten. Weitere Informationen finden Sie unter Standardverschlüsselung ruhender Daten.

    Verwenden Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK), um die Daten des Maschinen-Images zu verschlüsseln. Diese Verschlüsselungsschlüssel werden von Ihnen erstellt, verwaltet und gehören Ihnen. Weitere Informationen finden Sie unter Ressourcen mit Cloud KMS-Schlüsseln schützen.
    Wenn Sie einen CMEK hinzufügen, müssen Sie die in der folgenden Tabelle beschriebenen Berechtigungen gewähren.
    Rolle Erforderliche Berechtigungen Beschreibung
    Dienstkonto für die Cloud VM Migration roles/vmmigration.serviceAgent Erteilen Sie dem Compute Engine-Dienstkonto diese Berechtigung, um Daten des während des Importvorgangs erstellten Maschinen-Images zu verschlüsseln.
    Compute Engine-Dienst-Agent roles/compute.serviceAgent Erteilen Sie dem Compute Engine-Dienst-Agent diese Berechtigung, um die Daten während des Importvorgangs zu verschlüsseln.

    Sie sollten eine Antwort ähnlich der folgenden Beispielantwort erhalten.

    {
      "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
      "metadata": {
        "createTime": "2023-10-31T09:12:26.94928636Z",
        "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
        "verb": "create",
        "apiVersion": "v1",
        "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
      }
    }
    
  2. Prüfen Sie mit dem folgenden Befehl, ob der Importjob für das Maschinen-Image abgeschlossen ist.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
    

    Ersetzen Sie Folgendes:

    • HOST_PROJECT_ID ist der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren.
    • REGION_ID ist die Region, in der der Maschinen-Image-Importprozess ausgeführt werden soll. Das Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie das Maschinen-Image in einer Region erstellen möchten, muss singleRegionStorage auf "true" gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.
    • OPERATION_ID: die Vorgangs-ID des Migrationsjobs.

    Sie sollten eine Antwort zum Abschluss des Vorgangs erhalten, die der folgenden Beispielantwort ähnelt.

      {
        "done": true,
        "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
        "response": {
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport",
          "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "cloudStorageUri": "SOURCE_FILE",
          "createTime": "2023-10-31T09:04:04.413664947Z",
          "machineImageTargetDefaults": {
            "imageName": "IMAGE_NAME",
            "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
          },
          "recentImageImportJobs": [
            {
              "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
              "diskImageTargetDetails": {
               "imageName": "IMAGE_NAME",
               "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
            },
             "state": "PENDING"
           }
          ]
        },
        "metadata": {
          "createTime": "2023-10-31T09:04:04.416740716Z",
          "endTime": "2023-10-31T09:05:36.79987142Z",
          "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "verb": "create",
          "apiVersion": "v1",
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
        }
      }
    
  3. Überwachen Sie mit dem folgenden Befehl den Abschluss des Importjobs für das Maschinen-Image.

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
    

    Ersetzen Sie Folgendes:

    • HOST_PROJECT_ID ist der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren.
    • REGION_ID ist die Region, in der der Maschinen-Image-Importprozess ausgeführt werden soll. Das Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie das Maschinen-Image in einer Region erstellen möchten, muss singleRegionStorage auf "true" gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.
    • IMPORT_NAME: die ID, die die Importressource für das Maschinen-Image darstellt. Wenn Sie ein Maschinen-Image in die Compute Engine importieren, wird mit Migrate to Virtual Machines zuerst eine Importressource für das Maschinen-Image erstellt. Die Maschinen-Image-Importressource stellt den Maschinen-Image-Importvorgang dar. Mit IMPORT_NAME können Sie den Link zum Maschinen-Image abrufen, das im Rahmen des Importprozesses importiert wurde.

    Sie sollten eine Antwort zum Jobabschluss erhalten, die der folgenden Beispielantwort ähnelt.

    {
      "createTime":"2023-10-31T09:12:27.053788394Z",
      "createdResources":[
        "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME"
      ],
      "diskImageTargetDetails": {
        "imageName":"IMAGE_NAME",
        "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
      },
      "endTime":"2023-10-31T09:16:50.224865783Z",
      "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
      "state":"SUCCEEDED"
    }
    

Nächste Schritte