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 wird beschrieben, wie Sie ein Maschinen-Image aus einer virtuellen Appliance mit Compute Engine importieren.
Hinweise
- Aktivieren Sie die VM Migration API für Ihr Projekt.
- Prüfen Sie, ob auf dem Bootlaufwerk ein unterstütztes Betriebssystem konfiguriert ist.
Unterstützte Dateiformate
Sie können Dateien für Maschinen-Images in den folgenden Formaten mit Compute Engine importieren:
Open Virtualization Format (OVF): Eine OVF-Datei und VMDK-Dateien (Virtual Machine Disk) im selben Bucket.
Open Virtual Appliance (OVA): Eine OVA-Datei mit einer OVF-Datei und Datenträgerdateien. Compute Engine unterstützt den Import von OVA-Maschinen-Image-Dateien in den folgenden Laufwerksdateiformaten:
- VM-Laufwerk (Virtual Machine Disk, VMDK)
- QEMU Copy-on-Write (QCOW)
- QEMU Copy-on-Write 2 (QCOW2)
- QEMU-Laufwerkformat (QED)
- VPC
- Virtuelles Laufwerk-Image (VDI)
- Virtuelle Festplatte v2 (VHDX)
Beschränkungen
Beim Importieren von Maschinen-Images gelten die folgenden Einschränkungen:
- Sie können keine Maschinen-Images in Maschinenserien der 4. Generation importieren, da diese keine Google Cloud Hyperdisk-Volumes unterstützen.
- Sie können keine auf der Arm-Architektur basierenden Maschinen-Images importieren.
- Sie können keine Maschinen-Images aus Quell-VMs mit den folgenden Eigenschaften erstellen:
- Angehängte Laufwerke mit mehr als 200 TB
- Maschinentypen A4, A3, C3D, H3 oder Z3
Maschinen-Image-Importvorgang
So importieren Sie ein Maschinen-Image in ein Compute Engine-Maschinen-Image:
- Maschinen-Image-Datei für den Import vorbereiten
- Zielprojekt auswählen
- Maschinen-Image in Compute Engine importieren
Maschinendatei für den Import vorbereiten
Wenn Sie ein Maschinenimage in ein Compute Engine-Image importieren möchten, müssen Sie zuerst die Maschinenimage-Datei für den Import vorbereiten. In den folgenden Abschnitten werden diese Aufgaben im Detail erläutert.
Maschinen-Image-Datei zu Cloud Storage hinzufügen
Wenn Sie ein Maschinenimage in ein Compute Engine-Maschinenimage importieren möchten, müssen Sie die Maschinenimage-Datei zuerst in Cloud Storage hochladen. 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 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, erteilen Sie 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/storage.objectViewer 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-Migrationsdienstkonto | 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
Zum Hosten des Maschinen-Images 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 Compute Engine im Zielprojekt einige temporäre Ressourcen wie VMs oder Laufwerke. Diese temporären Ressourcen werden gelöscht, wenn der Importvorgang für das Maschinen-Image 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 Namenskonvention.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 Maschinen-Image in einer Region erstellen möchten, musssingleRegionStorage
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 Sie noch kein Zielprojekt hinzugefügt haben, folgen Sie 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 Maschinen-Image in einer Region erstellen möchten, musssingleRegionStorage
auf „true“ gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.
Weitere Informationen finden Sie unter gcloud migration vms machine-image-imports
.
REST API
So importieren Sie ein Maschinen-Image mit der REST API in Compute Engine:
Erstellen Sie mit der folgenden Anfrage eine Importressource für 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, musssingleRegionStorage
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 Namenskonvention.TARGET_PROJECT
ist das Zielprojekt, in dem Sie das Maschinen-Image erstellen möchten. Falls Sie noch kein Zielprojekt hinzugefügt haben, folgen Sie der Anleitung unter Zielprojekt hinzufügen.
In diesem Beispiel ist
IMPORT_NAME
eine ID, die die Ressourcen für den Import von Maschinen-Images darstellt. Wenn Sie ein Maschinen-Image in Compute Engine importieren, erstellt Migrate to Virtual Machines zuerst eine Importressource für Maschinen-Images. Die Maschinen-Image-Importressource stellt den Maschinen-Image-Importvorgang dar. MitIMPORT_NAME
können Sie den Link zum Maschinen-Image abrufen, das im Rahmen des Maschinen-Image-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 der 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-Image. Weitere Informationen zu den Benennungsregeln finden Sie unter Namenskonvention für Ressourcen. machineImageTargetDefaults.description
(Optional) Eine Beschreibung des Maschinenimages. machineImageTargetDefaults.machine_type
(Optional) Die Maschine, mit der das Maschinen-Image erstellt werden soll. Wenn Sie den Maschinentyp nicht angeben, wählt Compute Engine einen relevanten Maschinentyp basierend auf den Informationen aus dem Quell-Maschinen-Image 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 alle Tags hinzu, die Sie an das Maschinen-Image anhängen möchten. 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 10 zusätzliche Lizenzen im 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 Maschinenimage 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“ 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 Cloudordnungsgemäß funktionieren, muss ihre Konfiguration geändert werden. Diese Änderungen werden als Betriebssystemanpassungen bezeichnet. Compute Engine führt im Maschinen-Image-Importvorgang automatisch Betriebssystemanpassungen durch. Weitere Informationen finden Sie unter VM-Instanzen für die Ausführung auf 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 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 Compute Engine können Sie optional ein Maschinenimage 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. Während die Konfiguration gespeichert werden kann, schlägt die Instanziierung der VM fehl.
- Nachdem eine Compute Engine-Instanz mit
test-clone
odercut-over
aus einem Maschinen-Image instanziiert wurde, können Sie keine Netzwerkschnittstelle zu der erstellten Instanz hinzufügen oder daraus entfernen. Sie könnentest-clone
odercut-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.
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, sodass Sie mehrere Instanzen aus demselben Maschinen-Image erstellen können.machineImageTargetDefaults.encryption
Der Google-owned and Google-managed encryption key , den Sie zum Verschlüsseln Ihrer Daten während des Importvorgangs verwenden möchten. Weitere Informationen finden Sie unter Standardverschlüsselung ruhender Daten.
Verwenden Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK), um die Daten des Maschinenimages 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.
Hinweis:Der Verschlüsselungsschlüssel, den Sie für den Importvorgang auswählen, wird auch für das Ausgabebild verwendet.
Wenn Sie einen CMEK hinzufügen, müssen Sie Berechtigungen wie in der folgenden Tabelle beschrieben gewähren.Rolle Erforderliche Berechtigungen Beschreibung Cloud VM Migration-Dienstkonto 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 diese Berechtigung dem Dienst-Agent von Compute Engine, um die Daten während des Importvorgangs zu verschlüsseln. Sie sollten eine Antwort ähnlich der folgenden 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" } }
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, musssingleRegionStorage
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 ähnlich der folgenden Beispielantwort sehen.
{ "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" } }
Verwenden Sie den folgenden Befehl, um den Importjob für das Maschinen-Image zu überwachen.
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, musssingleRegionStorage
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 Compute Engine importieren, erstellt Migrate to Virtual Machines zuerst eine Importressource für Maschinen-Images. Die Maschinen-Image-Importressource stellt den Maschinen-Image-Importvorgang dar. MitIMPORT_NAME
können Sie den Link zum Maschinen-Image abrufen, das im Rahmen des Maschinen-Image-Importprozesses importiert wurde.
Sie sollten eine Antwort ähnlich der folgenden Beispielantwort sehen.
{ "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" }