Virtuelle Laufwerke importieren


Wenn sich in Ihrer lokalen Umgebung virtuelle Laufwerke mit der für Sie erforderlichen Software und Konfiguration befinden (auch als goldene Laufwerke oder goldene Images bezeichnet), können Sie diese virtuellen Laufwerke in Compute Engine importieren und das hierbei entstehende Image zum Erstellen neuer virtueller Maschinen verwenden. Auf diese Weise sparen Sie Zeit. Das Importtool unterstützt die meisten Dateiformate für virtuelle Laufwerke, einschließlich VMDK und VHD.

Wenn Sie Ihr Laufwerk aus Compute Engine exportiert haben, können Sie Images des Laufwerks erstellen.

Informationen zum Erstellen eines automatisierten Systems zum Migrieren mehrerer virtueller Maschinen (VMs) finden Sie unter VMs zu Compute Engine migrieren.

Hinweise

  • Wenn für das Projekt, in das Sie das Image importieren, eine Trusted Image-Richtlinie definiert ist, fügen Sie projects/compute-image-import und projects/compute-image-tools zur Liste der zulässigen Publisher hinzu.
  • 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:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    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

Unterstützte Betriebssysteme

Sie können sowohl bootfähige als auch nicht bootfähige Laufwerke importieren. Damit Ihre virtuellen Laufwerke in Compute Engine bootfähig sind, müssen sie eines der unterstützten Betriebssysteme ausführen.

Unterstützung für BYOL und BYOS

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

Sie können Images mit vorhandenen Lizenzen importieren, indem Sie den Befehl gcloud compute instances import mit dem Flag --byol verwenden.

Beschränkungen

Diese Funktion weist die folgenden allgemeinen Einschränkungen auf:

  • Wenn Sie ein virtuelles Laufwerk mit RHEL importieren, wird BYOL (Bring Your Own License) nur unterstützt, wenn das Paket python-boto vor dem Importieren auf dem virtuellen Laufwerk installiert wird.

  • Betriebssysteme auf virtuellen Laufwerken müssen den ACPI-Standard unterstützen.

  • Dieses Feature wird nicht für Projekte unterstützt, die durch VPC Service Controls geschützt werden. Informationen zu diesen Umgebungen finden Sie unter Bootlaufwerke manuell importieren.

  • Sie können Arm-Images nicht mit dem Tool zum Importieren von Images importieren. Folgen Sie zum Importieren von Arm-Images der detaillierten Anleitung, wie unter Bootlaufwerke manuell importieren beschrieben.

  • Compute Engine unterstützt nicht den Import von mit Software verschlüsselten Laufwerken, da sie ohne Schlüssel nicht gelesen werden können. Insbesondere können Sie keine Images mit Windows 10 und höher importieren, die BitLocker-Datenträgerverschlüsselung verwenden.

Diese Funktion weist unter Linux folgende Einschränkungen auf:

  • Virtuelle Linux-Laufwerke müssen grub als Bootloader verwenden.

  • Für virtuelle Linux-Laufwerke gelten die gleichen Anforderungen wie für benutzerdefinierte Images. Dazu gehört auch die Unterstützung von Geräten mit Virtio-SCSI Storage Controller.

Diese Funktion weist unter Windows folgende Einschränkungen auf:

  • Wenn Software, die Anwendungen auf die Zulassungsliste setzt, z. B. CB Protection von Carbon Black, auf virtuellen Windows-Laufwerken installiert ist, kann dies dazu führen, dass der Importvorgang fehlschlägt. Eventuell müssen Sie diese Software vor dem Import deinstallieren.

  • Auf Windows-basierten VMs verhindert der Microsoft KM-TEST Loopback-Adapter den Netzwerkzugriff auf den Metadatenserver. Sie müssen ihn vor dem Import deaktivieren oder entfernen.

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.

Auf Kompatibilität prüfen

Bevor Sie das Laufwerk für Ihre VM importieren, müssen Sie das Precheck-Tool herunterladen und auf der VM ausführen. Das Precheck-Tool prüft auf mögliche Kompatibilitätsprobleme, die dazu führen können, dass der Importvorgang fehlschlägt oder das Laufwerk in Compute Engine nicht ordnungsgemäß funktioniert.

Virtuelle Laufwerke importieren

Sie können Ihre virtuellen Laufwerke mit der Google Cloud Console, der Google Cloud CLI oder der Cloud Build API importieren.

Bootfähige virtuelle Laufwerke importieren

Bei bootfähigen Laufwerken müssen Sie das Betriebssystem nicht angeben, da das Importtool das Betriebssystem automatisch erkennt und ermittelt, welche Treiber und Pakete erforderlich sind. Wenn Sie jedoch das erkannte Betriebssystem überschreiben möchten, können Sie das Flag --os oder -os angeben. Eine Liste der unterstützten Werte finden Sie unter Flag --os.

Console

  1. Laden Sie in der Google Cloud Console die virtuelle Laufwerksdatei auf Cloud Storage hoch.
  2. Rufen Sie die Seite Image erstellen auf.

    Zur Seite "Image erstellen"

  3. Geben Sie unter Name einen Namen für Ihr Image an.

  4. Wählen Sie unter Quelle die Option Virtuelles Laufwerk (VMDK, VHD, …) aus.

  5. Wechseln Sie zum Speicherort der Cloud Storage-Datei oder geben Sie diesen manuell ein.

  6. Wählen Sie das Betriebssystem aus, das auf dem importierten Laufwerk verfügbar ist. Sie können dabei folgende Änderungen vornehmen:

    • Sie können Gastpakete installieren Google empfiehlt die Installation der Gastumgebung. Weitere Informationen zur Gastumgebung finden Sie unter Gastumgebung.

    • Für Windows- oder RHEL-Betriebssysteme (Red Hat Enterprise Linux) können Sie auch eine Lizenzoption auswählen. Dabei haben Sie die Möglichkeit, eine Lizenz über Compute Engine bereitzustellen oder Ihre eigene Lizenz zu verwenden. Weitere Informationen zur Verwendung einer eigenen Lizenz für Windows finden Sie unter Eigene Lizenz verwenden (Bring your own license, BYOL).

  7. (Optional) Geben Sie zusätzliche Attribute für das Image an. Sie können dieses Image beispielsweise als Teil einer Image-Familie definieren.

  8. Klicken Sie auf Erstellen, um das Image zu importieren.

gcloud

Sie können mit dem Befehl gcloud compute images import ein bootfähiges Compute Engine-Image erstellen. Obwohl die meisten Bootlaufwerk-Images von Compute Engine gestartet werden können, sorgt der Befehl import dafür, dass das Laufwerk die erforderlichen Treiber und die neuesten Gastumgebungspakete hat. Diese sind erforderlich, um eine Instanz zu starten und per SSH oder RDP eine Verbindung zu ihr herstellen zu können.

Sie können virtuelle Laufwerksdateien entweder aus einem Cloud Storage-Bucket oder von Ihrem lokalen Computer importieren.

Wenn Sie die virtuelle Laufwerksdatei von Ihrem Computer importieren, lädt das Importtool die Datei automatisch in einen Cloud Storage-Bucket hoch.

Sie können die virtuelle Laufwerksdatei auch selbst in Cloud Storage hochladen, bevor Sie den Importvorgang starten. In diesem Fall müssen Sie die Datei jedoch in einen Cloud Storage-Bucket in demselben Projekt hochladen, das für den Importvorgang verwendet wird.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE

Dabei gilt:

  • IMAGE_NAME ist der Name des Ziel-Images.
  • SOURCE_FILE: die virtuelle Laufwerksdatei. Diese Datei kann eine lokale Datei oder eine in Cloud Storage gespeicherte Datei sein. Wenn das virtuelle Laufwerk eine lokale Datei ist, können Sie einen absoluten oder einen relativen Pfad verwenden. Ist die virtuelle Laufwerksdatei bereits in Cloud Storage gespeichert, muss sie sich in einem Cloud Storage-Bucket in dem Projekt befinden, das für den Importprozess verwendet wird. Außerdem müssen Sie den vollständigen Pfad der Datei im Format gs://BUCKET_NAME/OBJECT_NAME angeben.

Wenn Sie ein Image mit einer vorhandenen Lizenz importieren, geben Sie das Flag --byol so an:

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE --byol

Eine Anleitung zum Importieren von Images mit vorhandenen Lizenzen in Google Cloud finden Sie unter Eigene Lizenz verwenden (Bring your own License, BYOL).

Wenn Sie eine lokale Datei angeben, kann der Uploadvorgang je nach Größe Ihres virtuellen Laufwerks und der Geschwindigkeit der Netzwerkverbindung sehr lange dauern. Der Importvorgang kann abhängig von der Größe des Laufwerks mehrere Minuten dauern.

Beispiel

Mit dem folgenden Beispiel wird ein virtuelles Laufwerk namens my_server.vmdk in gs://your_gcs_bucket importiert.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_server.vmdk

Optionale Parameter

Standardmäßig werden Gastumgebungspakete allen importierten Bootlaufwerk-Images hinzugefügt. Wenn Sie diese Pakete nicht verwenden möchten, geben Sie in Ihren Importbefehl das Flag --no-guest-environment an.

REST

  1. Fügen Sie das virtuelle Laufwerk Cloud Storage hinzu.

  2. Senden Sie eine POST-Anfrage an die Cloud Build API.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Dabei gilt:

    • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie das Image importieren möchten.
    • IMAGE_NAME ist der Name des zu importierenden Images.
    • SOURCE_FILE ist der URI für das Bild in Cloud Storage, z. B. gs://my-bucket/my-image.vmdk

    Weitere args-Werte, die Sie angegeben können, finden Sie auf der GitHub-Seite zum VM-Image-Import im Abschnitt zu den optionalen Flags.

    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-09-20T15:55:29.353258929Z",
       "steps": [
        {
         "name": "gcr.io/compute-image-import/gce_vm_image_import:release",
         "env": [
          "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
         ],
         "args": [
          "-timeout=7000s",
          "-image_name=my-image",
          "-client_id=api",
          "-data-disk",
          "-source_file=gs://my-bucket/my-image.vmdk"
         ]
        }
       ],
       "timeout": "7200s",
       "projectId": "myproject-12345",
       "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com",
       "options": {
        "logging": "LEGACY"
       },
       "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456"
      }
    }
    

    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

Lizenz importieren und an ein virtuelles Laufwerk anhängen

Mit dem folgenden gcloud compute images import-Befehl können Sie eine Lizenz beim Importieren eines Images anhängen.

gcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE
  --os=OS

Dabei gilt:

  • IMAGE_NAME ist der Name des zu erstellenden Images.
  • SOURCE_FILE ist eine lokale Datei oder ein Cloud Storage-URI des zu importierenden virtuellen Laufwerks.
  • OS ist das Betriebssystem des zu importierenden Laufwerk-Images. Die Lizenz für das Betriebssystem wird aus dem Wert dieses Flags abgeleitet. Es gibt kein explizites Flag, um beim Import Lizenzinformationen bereitzustellen. Eine Liste der unterstützten Werte finden Sie unter Flag --os.

Weitere Informationen zum Aufrufen und Anfügen von Lizenzen finden Sie unter Lizenzen ansehen und anhängen.

Nicht bootfähige virtuelle Laufwerke importieren

Console

  1. Laden Sie in der Google Cloud Console die virtuelle Laufwerksdatei auf Cloud Storage hoch.
  2. Rufen Sie die Seite Image erstellen auf.

    Zur Seite "Image erstellen"

  3. Geben Sie unter Name einen Namen für Ihr Image an.

  4. Wählen Sie unter Quelle die Option Virtuelles Laufwerk (VMDK, VHD, …) aus.

  5. Wechseln Sie zum Speicherort der Cloud Storage-Datei oder geben Sie diesen manuell ein.

  6. Wählen Sie unter "Betriebssystem" die Option Kein Betriebssystem. Nur Daten. aus.

  7. (Optional) Geben Sie zusätzliche Attribute für das Image an. Sie können dieses Image beispielsweise als Teil einer Image-Familie definieren.

  8. Klicken Sie auf Erstellen, um das Image zu importieren.

gcloud

Sie können mit dem Befehl gcloud compute images import ein nicht bootfähiges Compute Engine-Image erstellen. Wenn auf dem virtuellen Laufwerk kein bootfähiges Betriebssystem installiert ist, geben Sie das Flag --data-disk an. Dadurch wird der Schritt übersprungen, bei dem Treiber- und Gastumgebungspakete installiert werden, um das Image in Compute Engine bootfähig zu machen.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --data-disk

Dabei gilt:

  • IMAGE_NAME ist der Name des Ziel-Images.
  • SOURCE_FILE: die virtuelle Laufwerksdatei. Diese Datei kann eine lokale Datei oder eine in Cloud Storage gespeicherte Datei sein. Wenn das virtuelle Laufwerk eine lokale Datei ist, können Sie einen absoluten oder relativen Pfad angeben. Ist die virtuelle Laufwerksdatei bereits in Cloud Storage gespeichert, muss sie sich in einem Cloud Storage-Bucket in dem Projekt befinden, das für den Importprozess verwendet wird. Außerdem müssen Sie den vollständigen Pfad der Datei im Format gs://BUCKET_NAME/OBJECT_NAME angeben.

Beispiel 1: Nicht bootfähiges virtuelles Laufwerk aus Cloud Storage importieren

Im folgenden Beispiel wird ein virtuelles Laufwerk namens my_disk.vmdk in gs://your_gcs_bucket importiert.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_disk.vmdk
    --data-disk

Beispiel 2: Große VMDK-Datei durch Angabe des Zeitlimits importieren

Das standardmäßige Zeitlimit für den Importvorgang beträgt zwei Stunden. Der Import großer VMDK-Dateien kann bis zu 24 Stunden dauern. Wenn Sie beim Importieren solcher großen Dateien nicht das Flag --timeout angeben, schlägt der Vorgang nach zwei Stunden fehl.

Mit dem folgenden Beispiel wird ein virtuelles Laufwerk namens my_disk.vmdk in gs://your_gcs_bucket importiert. Das Zeitlimit für diesen Import beträgt 24 Stunden.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/my_disk.vmdk
    --data-disk --timeout=24h

REST

  1. Fügen Sie das virtuelle Laufwerk Cloud Storage hinzu.

  2. Senden Sie eine POST-Anfrage an die Cloud Build API.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "steps":[
        {
          "args":[
            "-image_name=IMAGE_NAME",
            "-source_file=SOURCE_FILE",
            "-timeout=7000s",
            "-client_id=api",
            "-data_disk"
          ],
          "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "timeout":"7200s",
      "tags":[
        "gce-daisy",
        "gce-daisy-image-import"
      ]
    }
    

    Geben Sie die folgenden args-Parameter an:

    • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie das Image importieren möchten.
    • IMAGE_NAME ist der Name des zu importierenden Images.
    • SOURCE_FILE ist der URI für das Bild in Cloud Storage, z. B. gs://my-bucket/my-image.vmdk

Laufwerke mithilfe von Netzwerken importieren, die keine externen IP-Adressen zulassen

Führen Sie die folgenden Schritte aus, um virtuelle Laufwerke mit einem Netzwerk zu importieren, das keine externen IP-Adressen zulässt:

  1. Fügen Sie das virtuelle Laufwerk zu Cloud Storage hinzu.

  2. Für den Image-Import müssen auf dem Betriebssystem für das virtuelle Laufwerk Paketmanager 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. Weitere Informationen finden Sie unter Privaten Google-Zugriff konfigurieren.

  4. Importieren Sie das virtuelle Laufwerk entweder mit der Google Cloud CLI oder mit REST.

    Wenn Sie ein virtuelles Laufwerk importieren, werden in Ihrem Projekt temporäre VMs 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

Verwenden Sie den Befehl gcloud compute images import mit dem Flag --no-address, um das virtuelle Laufwerk zu importieren.

gcloud compute images import IMAGE_NAME \
    --source-file=SOURCE_FILE \
    --zone=ZONE \
    --no-address

Dabei gilt:

  • IMAGE_NAME ist der Name des Laufwerks-Images, das Sie erstellen möchten.
  • SOURCE_FILE: die virtuelle Laufwerksdatei. Dies kann eine lokale Datei oder eine in Cloud Storage gespeicherte Datei sein. Wenn das virtuelle Laufwerk eine lokale Datei ist, können Sie einen absoluten oder einen relativen Pfad verwenden. Ist die virtuelle Laufwerksdatei bereits in Cloud Storage gespeichert, muss sie sich in einem Cloud Storage-Bucket in dem Projekt befinden, das für den Importprozess verwendet wird. Außerdem müssen Sie den vollständigen Pfad der Datei im Format gs://BUCKET_NAME/OBJECT_NAME angeben.
  • 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.

REST

Senden Sie eine POST-Anfrage an die Cloud Build API und geben Sie das Argument -no-external-ip an.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
   "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-zone=ZONE",
         "-no_external_ip",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
   ],
   "timeout":"7200s",
   "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
   ]
 }
 

Dabei gilt:

  • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie das Image importieren möchten.
  • IMAGE_NAME ist der Name des zu importierenden Images.
  • SOURCE_FILE ist der URI für das Image in Cloud Storage. Beispiel: gs://my-bucket/my-image.vmdk für den Befehl gcloud compute images import.
  • ZONE ist die Zone, in der das Image erstellt werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.

Virtuelles Laufwerk mit UEFI-Bootloader importieren

Für die meisten virtuellen Laufwerke kann Compute Engine Laufwerke mit einem UEFI-Bootloader erkennen und erfolgreich importieren, ohne dass ein zusätzliches Flag erforderlich ist.

Für Szenarien wie die folgenden müssen Sie einen UEFI-Boot jedoch möglicherweise während des Imports erzwingen.

  • Wenn beim Image-Import während des Imports der UEFI-Bootloader nicht erkannt wird.
  • Wenn Ihr Laufwerk dual-bootfähig ist und eine Kombination aus entweder hybrid-mbr + UEFI oder protective-mbr + UEFI hat. Bei dual-bootfähigen Laufwerken wird möglicherweise standardmäßig auf den Nicht-UEFI-Start importiert.

gcloud

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

gcloud compute images import IMAGE_NAME \
    --source-file=SOURCE_FILE \
    --guest-os-features=UEFI_COMPATIBLE

Dabei gilt:

  • IMAGE_NAME ist der Name des zu importierenden Images.
  • SOURCE_FILE ist der URI für das Image in Cloud Storage, z. B. gs://my-bucket/my-image.vmdk.

Beispiel

Mit dem folgenden Beispiel wird ein virtuelles Laufwerk namens my-disk.vmdk in gs://my-gcs-bucket/ importiert und die Verwendung des UEFI-Boots erzwungen.

gcloud compute images import my-imported-image \
    --source-file gs://my-gcs-bucket/my-disk.vmdk \
    --guest-os-features=UEFI_COMPATIBLE

REST

Um einen Import zur Verwendung von UEFI-Boot zu erzwingen, können Sie die Cloud Build API verwenden und das Argument -uefi_compatible angeben. Dazu müssen Sie die folgenden Schritte ausführen:

  1. Fügen Sie das virtuelle Laufwerk 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
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-uefi_compatible",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Dabei gilt:

    • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie das Image importieren möchten.
    • IMAGE_NAME ist der Name des zu importierenden Images.
    • SOURCE_FILE ist der URI für das Bild in Cloud Storage, z. B. gs://my-bucket/my-image.vmdk

Virtuelles Laufwerk mithilfe einer freigegebenen VPC importieren

Bevor Sie ein virtuelles Laufwerk mit einer freigegebenen VPC importieren, müssen Sie dem Cloud Build-Dienstkonto die Rolle compute.networkUser hinzufügen. Weitere Informationen finden Sie unter Erforderliche Rollen für das Cloud Build-Dienstkonto zuweisen.

gcloud

Importieren Sie das virtuelle Laufwerk mit dem Befehl gcloud compute images import.

gcloud compute images import IMAGE_NAME \
    --source-file SOURCE_FILE \
    --project SERVICE_PROJECT_ID \
    --zone ZONE \
    --network NETWORK \
    --subnet SUBNET

Dabei gilt:

  • IMAGE_NAME ist der Name des zu importierenden Images.
  • SOURCE_FILE: die virtuelle Laufwerksdatei. Dies kann eine lokale Datei oder eine in Cloud Storage gespeicherte Datei sein. Wenn das virtuelle Laufwerk eine lokale Datei ist, können Sie einen absoluten oder einen relativen Pfad verwenden. Ist die virtuelle Laufwerksdatei bereits in Cloud Storage gespeichert, muss sie sich in einem Cloud Storage-Bucket in dem Projekt befinden, das für den Importprozess verwendet wird. Außerdem müssen Sie den vollständigen Pfad der Datei im Format gs://BUCKET_NAME/OBJECT_NAME angeben.
  • SERVICE_PROJECT_ID: ID des Projekts, in das Sie das Image importieren möchten
  • ZONE ist die Zone, in die Sie das Image importieren möchten. Diese Zone muss mit der Region des Subnetzes übereinstimmen. Wenn SUBNET beispielsweise us-west1 ist. Die Importzone muss eine der folgenden sein: us-west1-a, us-west1-b oder us-west1-c.
  • NETWORK ist der vollständige Pfad zu einem freigegebenen VPC-Netzwerk. Beispiel: projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
  • SUBNET ist vollständiger Pfad zu einem freigegebenen VPC-Subnetzwerk. Beispiel: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

    Beispielbefehl

    gcloud compute images import example-image \
     --source-file gs://source-bucket/source-file.vmdk \
     --project my-image-project \
     --zone us-west1-c \
     --network projects/my-vpc-project/global/networks/my-shared-vpc \
     --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
    

REST

  1. Fügen Sie das virtuelle Laufwerk Cloud Storage hinzu.

  2. Senden Sie eine POST-Anfrage an die Cloud Build API.

    POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds
    {
     "steps":[
       {
         "args":[
           "-image_name=IMAGE_NAME",
           "-source_file=SOURCE_FILE",
           "-zone=ZONE",
           "-network=NETWORK",
           "-subnet=SUBNET",
           "-timeout=7000s",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"7200s",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Geben Sie die folgenden args-Parameter an:

    • SERVICE_PROJECT_ID: ID des Projekts, in das Sie das Image importieren möchten
    • IMAGE_NAME ist der Name des zu importierenden Images.
    • SOURCE_FILE ist der URI für das Image in Cloud Storage, z. B. gs://my-bucket/my-image.vmdk
    • ZONE ist die Zone, in die Sie das Image importieren möchten. Diese Zone muss mit der Region des Subnetzes übereinstimmen. Wenn SUBNET beispielsweise us-west1 ist. Die Importzone muss eine der folgenden sein: us-west1-a, us-west1-b oder us-west1-c.
    • NETWORK ist der vollständige Pfad zu einem freigegebenen VPC-Netzwerk. Beispiel: projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME.
    • SUBNET ist vollständiger Pfad zu einem freigegebenen VPC-Subnetzwerk. Beispiel: projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.

Virtuelles Laufwerk mithilfe eines benutzerdefinierten Compute Engine-Dienstkontos importieren

Während eines Image-Imports 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 Image-Import-Tools auf der VM verwendet werden.

Beim Import wird standardmäßig der Compute Engine-Dienst-Agent des Projekts 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 das virtuelle Laufwerk 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

    Weitere Informationen finden Sie unter Erforderliche Rollen für das Compute Engine-Dienstkonto zuweisen.

  3. Verwenden Sie gcloud compute images import, um das Image zu importieren.

    gcloud compute images import IMAGE_NAME \
      --source-file SOURCE_FILE \
      --compute-service-account SERVICE_ACCOUNT_EMAIL
    

    Dabei gilt:

    • IMAGE_NAME ist der Name des Ziel-Images.
    • SOURCE_FILE: die virtuelle Laufwerksdatei. Diese Datei kann eine lokale Datei oder eine in Cloud Storage gespeicherte Datei sein. Wenn das virtuelle Laufwerk eine lokale Datei ist, können Sie einen absoluten oder einen relativen Pfad verwenden. Ist die virtuelle Laufwerksdatei bereits in Cloud Storage gespeichert, muss sie sich in einem Cloud Storage-Bucket in dem Projekt befinden, das für den Importprozess verwendet wird. Außerdem müssen Sie den vollständigen Pfad der Datei im Format gs://BUCKET_NAME/OBJECT_NAME angeben.
    • SERVICE_ACCOUNT_EMAIL ist die E-Mail-Adresse des Compute Engine-Dienstkontos, das im vorherigen Schritt erstellt wurde.

    Beispiel

    Mit dem folgenden Beispiel wird ein virtuelles my_server.vmdk-Laufwerk namens gs://your_gcs_bucket in image-export-service-account@proj-12345.iam.gserviceaccount.com importiert. Hierfür wird ein Dienstkonto mit der E-Mail verwendet.

    gcloud compute images import my-imported-image \
      --source-file gs://your_gcs_bucket/my_server.vmdk \
      --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
    

REST

  1. Fügen Sie das virtuelle Laufwerk 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

    Weitere Informationen finden Sie unter Erforderliche Rollen für das Compute Engine-Dienstkonto zuweisen.

  3. Fügen Sie das virtuelle Laufwerk Cloud Storage hinzu.

  4. Senden Sie eine POST-Anfrage an die Cloud Build API.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "steps":[
     {
       "args":[
         "-image_name=IMAGE_NAME",
         "-source_file=SOURCE_FILE",
         "-compute_service_account=SERVICE_ACCOUNT_EMAIL",
         "-timeout=7000s",
         "-client_id=api"
       ],
       "name":"gcr.io/compute-image-import/gce_vm_image_import:release",
       "env":[
         "BUILD_ID=$BUILD_ID"
       ]
     }
    ],
    "timeout":"7200s",
    "tags":[
     "gce-daisy",
     "gce-daisy-image-import"
    ]
    }
    

    Dabei gilt:

    • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie das Image importieren möchten.
    • IMAGE_NAME ist der Name des zu importierenden Images.
    • SOURCE_FILE ist der URI für das Bild in Cloud Storage, z. B. gs://my-bucket/my-image.vmdk
    • SERVICE_ACCOUNT_EMAIL ist die E-Mail-Adresse des Compute Engine-Dienstkontos, das im vorherigen Schritt erstellt wurde.

Images bootfähig machen

Wenn Sie ein benutzerdefiniertes Compute Engine-Image mit einem bootfähigen Betriebssystem haben, dem aber erforderliche Compute Engine-Treiber oder Gastumgebungspakete fehlen, können Sie das Tool zum Importieren von Images verwenden, um dieses Image in Compute Engine bootfähig zu machen.

Verwenden Sie anstelle des Flags --source-file, mit dem ein neues zu importierendes Laufwerk angegeben wird, das Flag --source-image, um ein benutzerdefiniertes Image festzulegen, das bootfähig gemacht werden soll.

gcloud compute images import IMAGE_NAME \
    --source-image SOURCE_IMAGE_NAME

Dabei gilt:

Beispielbefehl

Im folgenden Beispiel wird ein Compute Engine-Image namens my-image in ein bootfähiges Image namens my-bootable-image umgewandelt. In diesem Beispiel überschreibt --os ubuntu-1604 das erkannte Betriebssystem.

gcloud compute images import my-bootable-image \
    --source-image my-image \
    --os ubuntu-1604

Ressourcenbereinigung

In Cloud Storage gespeicherte Dateien und in Compute Engine vorhandene Images sind kostenpflichtig. Das Importtool importiert die virtuelle Laufwerksdatei in Cloud Storage und erstellt ein benutzerdefiniertes Compute Engine-Image.

Nachdem Sie überprüft haben, ob das Image korrekt importiert und ordnungsgemäß als Compute Engine-Instanz gestartet wurde, können Sie die virtuelle Laufwerksdatei aus Cloud Storage löschen. Das Tool gibt den URI der Datei beim Hochladen in Cloud Storage aus. Dieser URI hat das folgende Format: gs://BUCKET_NAME/tmpimage/IMAGE_NAME.

Wenn Sie ein Image mit dem Flag --data-disk importieren und dann das import-Tool ein zweites Mal ausführen, um das Image mit dem Flag --source-image bootfähig zu machen, ist das erste Image noch vorhanden. Löschen Sie dieses Image, wenn Sie es nicht mehr benötigen. Wenn Sie den gleichen Image-Namen für die Flags --image und --source-image angeben, wird das Image automatisch überschrieben und es ist keine weitere Bereinigung erforderlich.

Nächste Schritte