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.

Vorbereitung

Cloud Build API aufrufen

Das Tool zum Importieren virtueller Appliances verwendet Cloud Build.

In den meisten Fällen versucht gcloud compute images import, dem Cloud Build-Dienstkonto diese Berechtigungen zu gewähren. Sie können diese Berechtigungen auch manuell gewähren, um sicherzustellen, dass die erforderlichen Berechtigungen wirksam sind.

Console

  1. Aktivieren Sie die Cloud Build API.

    Cloud Build API aktivieren

    Wenn Sie die Cloud Build API über die Console aktivieren, erteilt Compute Engine dem Cloud Build-Dienstkonto die folgenden Rollen, damit der Cloud Build-Dienst Instanzen in Compute Engine importieren kann:

    • roles/iam.serviceAccountTokenCreator
    • roles/compute.admin
    • roles/iam.serviceAccountUser

    Das Importtool verwendet auch das Compute Engine-Standarddienstkonto. Das Compute Engine-Dienstkonto hat standardmäßig die Cloud IAM-Rolle "Projektbearbeiter". Wenn diese Rolle entfernt wird, kann der Importvorgang fehlschlagen. Informationen zum Hinzufügen der Rolle zum Dienstkonto finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen. Weitere Informationen zum Compute Engine-Standarddienstkonto finden Sie unter Compute Engine-Standarddienstkonto.

gcloud

Führen Sie die folgenden Schritte aus, um den Cloud Build-Dienst mit dem gcloud-Befehlszeilentool einzurichten:

  1. Aktivieren Sie Cloud Build.

    gcloud services enable cloudbuild.googleapis.com

    Das Importtool verwendet auch das Compute Engine-Standarddienstkonto. Das Compute Engine-Dienstkonto hat standardmäßig die Cloud IAM-Rolle "Projektbearbeiter". Wenn diese Rolle entfernt wird, kann der Importvorgang fehlschlagen. Informationen zum Hinzufügen der Rolle zum Dienstkonto finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen. Weitere Informationen zum Compute Engine-Standarddienstkonto finden Sie unter Compute Engine-Standarddienstkonto.

  2. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle compute.admin hinzu.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/compute.admin
    
  3. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle iam.serviceAccountUser hinzu.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountUser
    
  4. Fügen Sie dem Dienstkonto für die Cloud Build API die Rolle iam.serviceAccountTokenCreator hinzu.

    gcloud projects add-iam-policy-binding PROJECT_ID \
       --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \
       --role roles/iam.serviceAccountTokenCreator
    

    Ersetzen Sie Folgendes:

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 folgenden Betriebssysteme ausführen.

  • Linux-Betriebssysteme:
    • CentOS 6, CentOS 7 und CentOS 8
    • Debian 8, Debian 9
    • Red Hat Enterprise Linux 6, Red Hat Enterprise Linux 7 und Red Hat Enterprise Linux 8
    • Ubuntu 14.04 LTS, Ubuntu 16.04 LTS und Ubuntu 18.04 LTS
    • SUSE Linux Enterprise Server 12, SUSE Linux Enterprise Server 15 und OpenSUSE 15
  • Windows-Betriebssysteme:
    • Windows Server 2012, Windows Server 2012 R2, Windows Server 2012 R2 Core
    • Windows Server 2016, Windows Server 2016 Core
    • Windows Server 2019, Windows Server 2019 Core
    • Windows 7 SP1 (nur 32-Bit und 64-Bit, BYOL)
    • Windows 8.1 (32-Bit und 64-Bit, nur BYOL)
    • Windows 10, Versionen 1709, 1803, 1903, 1909 (32-Bit und 64-Bit, nur BYOL)

Beschränkungen

Diese Funktion weist die folgenden Einschränkungen auf:

  • Virtuelle Linux-Laufwerke müssen grub als Bootloader verwenden.
  • UEFI-Bootloader werden weder für Windows noch für Linux unterstützt.
  • 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.
  • Wenn Software zum Whitelisting von Anwendungen (z. B. Cb Protection von Carbon Black) auf Windows-Laufwerken installiert ist, kann dies dazu führen, dass der Importvorgang fehlschlägt. Eventuell müssen Sie diese Software vor dem Import deinstallieren.
  • 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.

Berechtigungen

Das Tool zum Importieren von Images führt beim Importieren einer virtuellen Laufwerksdatei mehrere Schritte aus. Dabei wird die Datei in Cloud Storage hochgeladen, gegebenenfalls ein neuer Bucket erstellt, die Datei in Compute Engine heruntergeladen und dann in Compute Engine ein Image von der Laufwerksdatei erstellt. Dieser Vorgang erfolgt automatisch. Google empfiehlt folgende Rollen für Ihr Konto, um dieses Feature problemlos nutzen zu können:

  • roles/storage.admin
  • roles/viewer
  • roles/resourcemanager.projectIamAdmin

Beim Importvorgang wird das Compute Engine-Standarddienstkonto als Teil des Workflows verwendet. Standardmäßig hat dieses Dienstkonto die Berechtigung roles/editor, die für den Vorgang ausreichend ist. Wenn Sie jedoch die Standardrollen und -berechtigungen für das Compute Engine-Dienstkonto geändert haben, prüfen Sie, ob das Dienstkonto immer noch die folgenden Rollen hat:

  • roles/compute.storageAdmin
  • roles/storage.objectViewer

Virtuelle Laufwerke importieren

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.

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 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 \
    --os os

Ersetzen Sie Folgendes:

  • image-name: Der Name des Ziel-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 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.
  • os: Das Betriebssystem von --source-file. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute images import.

    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.

Beispielbefehl

Mit dem folgenden Beispiel wird ein virtuelles debian-9-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 \
    --os debian-9

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.

API

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

  2. Erstellen Sie in der API 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",
           "-os=os",
           "-timeout=timeout",
           "-client_id=api"
         ],
         "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "timeout":"timeout",
     "tags":[
       "gce-daisy",
       "gce-daisy-image-import"
     ]
    }
    

    Dabei gilt:

    • project-id: Die Projekt-ID des Projekts, in das Sie das Image importieren möchten.
    • image-name: Der Name des zu importierenden Images.
    • timeout ist die maximale Zeit, die ein Build dauern sollte, bevor er mit der Meldung TIMEOUT fehlschlägt. In der API muss die Zeit in Sekunden angegeben werden. Der Wert 7200s für die Zeitüberschreitung sollte für die meisten Szenarien geeignet sein.
    • source-file: Der URI für das Image in Cloud Storage. Beispiel: gs://my-bucket/my-image.vmdk
    • os: Das Betriebssystem des Images.

    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-tools/gce_vm_image_import:release",
         "env": [
          "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
         ],
         "args": [
          "-timeout=7056s",
          "-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/gcr/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

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 Ihrem virtuellen Laufwerk kein bootfähiges Betriebssystem installiert ist, haben Sie die Möglichkeit, es mit dem Flag --data-disk anstelle des Flags --os trotzdem zu importieren. 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

Ersetzen Sie Folgendes:

  • image-name: Der Name des Ziel-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 relativen Pfad angeben. Ist die virtuelle Laufwerksdatei bereits in Cloud Storage gespeichert, muss sie sich in einem Storage-Bucket des Projekts befinden, das für den Importvorgang verwendet wird. Außerdem müssen Sie den vollständigen Pfad der Datei im Format gs://bucket-name/object-name angeben.

Beispielbefehl

Mit dem folgenden Beispiel wird ein virtuelles Laufwerk namens my-disk.vmdk in gs://my-gcs-bucket/ importiert.

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

API

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

  2. Erstellen Sie in der API 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=timeout",
            "-client_id=api",
            "-data_disk"
          ],
          "name":"gcr.io/compute-image-tools/gce_vm_image_import:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "timeout":"timeout",
      "tags":[
        "gce-daisy",
        "gce-daisy-image-import"
      ]
    }
    

    Geben Sie die folgenden args-Parameter an:

    • project-id: Die Projekt-ID des Projekts, in das Sie das Image importieren möchten.
    • image-name: Der Name des zu importierenden Images.
    • source-file: Der URI für das Image in Cloud Storage. Beispiel: gs://my-bucket/my-image.vmdk
    • timeout ist die maximale Zeit, die ein Build dauern sollte, bevor er mit der Meldung TIMEOUT fehlschlägt. In der API muss die Zeit in Sekunden angegeben werden. Der Wert 7200s für die Zeitüberschreitung sollte für die meisten Szenarien geeignet sein.

Bootfähiges Image erstellen

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 \
    --os os

Ersetzen Sie Folgendes:

  • image-name: Der Name des Ziel-Images.
  • source-image-name: Der Name des Quell-Images.
  • os: Das Betriebssystem von --source-image. Eine Liste der unterstützten Werte finden Sie in den --os-Flag-Optionen für den Befehl gcloud compute images import.

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

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 ist das auf dem Image installierte Betriebssystem Ubuntu 16.04.

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.

Weitere Informationen