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 mit Compute Engine ein Maschinen-Image von einer virtuellen Appliance 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, die eine OVF-Datei und Laufwerkdateien enthält. Compute Engine unterstützt den Import von OVA-Maschinen-Image-Dateien in den folgenden Dateiformaten:
- Virtual Machine Disk (VMDK)
- QEMU Copy-on-Write (QCOW)
- QEMU Copy-on-Write 2 (QCOW2)
- QEMU-Laufwerksformat (QED)
- VPC
- Virtuelles Laufwerk-Image (VDI)
- Virtuelle Festplatte v2 (VHDX)
Beschränkungen
Beim Importieren von Maschinen-Images gelten die folgenden Einschränkungen:
- Maschinen-Images können nicht in die Maschinenserie der 4. Generation importiert werden, da diese keine Google Cloud Hyperdisk-Volumes unterstützt.
- Auf der Arm-Architektur basierende Maschinen-Images können nicht importiert werden.
- Es können keine Maschinen-Images aus Quell-VMs mit den folgenden Eigenschaften erstellt werden:
- Eingebundene Laufwerke mit mehr als 200 TB
- Maschinentypen A4, A3, C3D, H3 oder Z3
Maschinen-Images importieren
So importieren Sie ein Maschinen-Image mit Compute Engine in ein Compute Engine-Maschinen-Image:
- Maschinen-Image-Datei für den Import vorbereiten
- Zielprojekt auswählen
- Maschinen-Image in Compute Engine importieren
Maschinen-Image-Datei für den Import vorbereiten
Vor dem Import in ein Compute Engine-Image muss die Maschinen-Image-Datei zuerst entsprechend vorbereitet werden. In den folgenden Abschnitten werden die nötigen Schritte im Detail erläutert.
Maschinen-Image zu Cloud Storage hinzufügen
Vor dem Import in Compute Engine müssen Sie die Maschinen-Image-Datei zuerst in Cloud Storage hochladen. Weitere Informationen finden Sie unter Objekte aus einem Dateisystem hochladen. Für eine bessere Leistung empfehlen wir, die Maschinen-Image-Datei in einen Bucket in derselben Google Cloud hochzuladen, in der Sie das Maschinen-Image erstellen möchten.
Erforderliche Berechtigungen erteilen
Für den Import eines Maschinen-Images in Compute Engine werden die in der folgenden Tabelle beschriebenen Berechtigungen benötigt.
Rolle | Erforderliche Berechtigungen | Beschreibung |
---|---|---|
Storage Object Viewer | 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
Erstellen oder wählen Sie ein Zielprojekt, in dem das Maschinen-Image gehostet wird. Das Zielprojekt definiert das Projekt, in dem das Maschinen-Image ausgeführt wird. 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.
Beim Import erstellt Compute Engine im Zielprojekt einige temporäre Ressourcen wie VMs oder Laufwerke. Diese temporären Ressourcen werden gelöscht, sobald der Importvorgang für das Maschinen-Image abgeschlossen ist.
gcloud
Mit der folgenden Anfrage importieren Sie ein Maschinen-Image mit der Google Cloud CLI in Compute Engine.
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
: die Datei, aus der Sie das 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
: die Region, in der der Importprozess für das Maschinen-Image ausgeführt werden soll. Das Maschinen-Image wird in der nächstgelegenen Multiregion erstellt. Soll das Maschinen-Image in einer Region erstellt werden, musssingleRegionStorage
auf „true“ gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.HOST_PROJECT_ID
: Der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren möchten.TARGET_PROJECT
: 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
: die Region, in der der Importprozess für das Maschinen-Image ausgeführt werden soll. Das Maschinen-Image wird in der nächstgelegenen Multiregion erstellt. Soll das Maschinen-Image in einer Region erstellt werden, musssingleRegionStorage
auf „true“ gesetzt sein. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.
Weitere Informationen finden Sie unter gcloud compute migration 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 das Maschinen-Image.
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
: Der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren möchten.REGION_ID
: Die Region, in der der Importvorgang für das Maschinen-Image ausgeführt werden soll. Das Maschinen-Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie möchten, dass das Maschinen-Image in einer Region erstellt wird, überprüfen Sie, obsingleRegionStorage
auf „true“ gesetzt ist. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.SOURCE_FILE
: Die Datei, aus der Sie das 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 Maschinen-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
: 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 steht die ID
IMPORT_NAME
für die Importressource des Maschinen-Images. Wenn Sie ein Maschinen-Image in Compute Engine importieren, erstellt Migrate to Virtual Machines zuerst eine Importressource des Maschinen-Image. Diese Importressource steht für den Importvorgang. MitIMPORT_NAME
können Sie den Link zum Maschinen-Image abrufen, das während des Importvorgangs importiert wurde.In der folgenden Tabelle sind alle unterstützten Felder für Anfragen von Maschinen-Image-Importen aufgeführt.
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 Maschinen-Images aus.ovf
- und.ova
-Dateien importieren können.machineImageTargetDefaults.targetProject
Das Zielprojekt, in dem Sie das Maschinen-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
: 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) Die Maschine, mit der das Maschinen-Image erstellt werden soll. Wenn Sie den Maschinentyp nicht angeben, wählt Compute Engine basierend auf den Informationen aus dem Quellmaschinen-Image einen relevanten 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 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
Einer aus dem importierten Maschinen-Image erstellten VM-Instanz können bis zu 10 zusätzliche Lizenzen im gültigen URL-Format hinzugefügt werden. Das können beispielsweise Lizenzen im folgenden URL-Format sein:
https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
machineImageTargetDefaults.service_account
Geben Sie das vom Maschinen-Image verwendete Dienstkonto im Zielprojekt an. 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 sind durch eine Reihe von Sicherheitskontrollen vor 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 multiregionale Region ausgewählt.machineImageTargetDefaults.skip_os_adaptation
Setzen Sie dieses Flag auf „true“, wenn Sie die Betriebssystemanpassung überspringen möchten.
Die Konfiguration der aus importierten Maschinen-Images erstellten VMs muss angepasst werden, damit sie in Google Cloudordnungsgemäß funktionieren. Dies wird als Betriebssystemanpassung bezeichnet. Compute Engine führt beim Importieren des Maschinen-Image automatisch Betriebssystemanpassungen durch. Weitere Informationen finden Sie unter VM-Instanzen für die Ausführung auf Google Cloudanpassen.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 und explizit den Lizenztyp PAYG oder BYOL angeben.machineImageTargetDefaults.osAdaptationParameters.network_interfaces
Mit Compute Engine können Sie optional ein Maschinen-Image mit mehreren Netzwerkschnittstellen (NICs) erstellen. Jede Schnittstelle ist mit einem anderen VPC-Netzwerk verbunden, sodass dieses Maschinen-Image Zugriff auf verschiedene VPC-Netzwerke in der gcloud-CLI hat.
Bevor Sie zusätzliche Netzwerkschnittstellen hinzufügen, beachten Sie die folgenden Hinweise:- Das Anhängen mehrerer Netzwerkschnittstellen an dasselbe VPC-Netzwerk wird nicht unterstützt. Die Konfiguration wird zwar möglicherweise gespeichert, die Instanziierung der VM schlägt jedoch 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, um der Compute Engine-Instanz eine zusätzliche Netzwerkschnittstelle hinzuzufügen. Sie können dieselben Optionen wie für die ursprüngliche Netzwerkschnittstelle festlegen.
machineImageTargetDefaults.osAdaptationParameters.generalize
Setzen Sie dieses Flag auf „true“, wenn Sie das Maschinen-Image generalisieren möchten.
Wenn Sie eine Instanz aus einem Image erstellen, fügt Windows der Instanz einige eindeutige Informationen hinzu. Beim Generalisieren werden diese Informationen entfernt, sodass Sie mehrere Instanzen aus demselben Image erstellen können.machineImageTargetDefaults.encryption
Die Google-owned and Google-managed encryption key , die Sie zum Verschlüsseln Ihrer Daten während des Imports verwenden möchten. Weitere Informationen finden Sie unter Standardverschlüsselung inaktiver Daten.
Verwenden Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, 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.
Hinweis: Der von Ihnen für den Import ausgewählte Verschlüsselungsschlüssel wird auch für das Ausgabebild verwendet.
Wenn Sie einen CMEK hinzufügen, müssen Sie Berechtigungen wie in der folgenden Tabelle beschrieben erteilen.Rolle Erforderliche Berechtigungen Beschreibung Cloud VM Migration-Dienstkonto roles/vmmigration.serviceAgent Mit dieser Berechtigung kann das Compute Engine-Dienstkonto die Daten des während des Importvorgangs erstellten Machinen-Images verschlüsseln. Compute Engine-Dienstagent 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 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 Machine-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
: Der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren.REGION_ID
: Die Region, in der der Importvorgang für das Maschinen-Image ausgeführt werden soll. Das Maschinen-Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie möchten, dass das Maschinen-Image in einer Region erstellt wird, überprüfen Sie, obsingleRegionStorage
auf „true“ gesetzt ist. 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" } }
Überwachen Sie den Image-Importjob mit dem folgenden Befehl, bis er abgeschlossen ist.
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
: Der Name des Hostprojekts, aus dem Sie das Maschinen-Image migrieren.REGION_ID
: Die Region, in der der Importvorgang für das Maschinen-Image ausgeführt werden soll. Das Maschinen-Image wird in der nächstgelegenen Multiregion erstellt. Wenn Sie möchten, dass das Maschinen-Image in einer Region erstellt wird, überprüfen Sie, obsingleRegionStorage
auf „true“ gesetzt ist. Eine Liste der unterstützten Regionen finden Sie unter Regionen und Zonen.IMPORT_NAME
: Diese ID repräsentiert die Importressource des Maschinen-Images. Migrate to Virtual Machines erstellt vor dem Import in Compute Engine zuerst eine Importressource des Maschinen-Images. Diese Importressource steht für den Importvorgang. MitIMPORT_NAME
können Sie den Link zum Maschinen-Image abrufen, das während des Importvorgangs 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" }