Maschinen-Images erstellen

Ein Maschinen-Image dient Ihnen dazu, alle Konfigurationen, Metadaten, Berechtigungen und Daten von einem oder mehreren Laufwerken für eine auf Compute Engine ausgeführte VM-Instanz zu speichern. Die VM-Instanz, die Sie zum Erstellen eines Maschinen-Images verwenden, wird als Quellinstanz bezeichnet.

Informationen dazu, wann und wie Maschinen-Images verwendet werden, finden Sie unter Maschinen-Images.

Auf dieser Seite werden die Schritte zum Erstellen eines Maschinen-Images aus einer Quellinstanz beschrieben.

Vorbereitung

Limits und Einschränkungen

Erstellen eines Maschinen-Images aus einer Instanz

Sie können Maschinen-Images entweder mit der Google Cloud Console, dem gcloud-Befehlszeilentool oder der Compute Engine API erstellen.

Zum Erstellen eines Maschinen-Images benötigen Sie die folgenden Informationen:

  • einen Namen für das Maschinen-Image, das Sie erstellen möchten;
  • den Namen der Quellinstanz;
  • die Zone, in der sich die Quellinstanz befindet;
  • eine optionale Beschreibung;
  • eine optionale storageLocation. Wenn Sie keinen Speicherort angeben, ist der Standardspeicherort der multiregionale Cloud Storage-Speicherort der Quellinstanz.
  • einen optionalen Verschlüsselungsschlüssel. Sie können zwischen einem von Google verwalteten Schlüssel, einem Cloud Key Management Service (Cloud KMS)-Schlüssel oder einem vom Kunden bereitgestellten Verschlüsselungsschlüssel (CSEK) wählen. Wenn kein Verschlüsselungsschlüssel angegeben ist, werden die Maschinen-Images mit einem von Google verwalteten Schlüssel verschlüsselt.
  • Wenn Sie ein Maschinen-Image für das Klonen und die Replikation von Instanzen verwenden möchten, entfernen Sie die für die Instanz spezifischen Betriebssystem- und Anwendungsinformationen, bevor Sie das Maschinen-Image aus einer Instanz erstellen. Verwenden Sie beispielsweise für Windows-VM-Instanzen GCESysprep, um das System für die Replikation vorzubereiten.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Maschinen-Images.

    Zur Seite "Maschinen-Images"

  2. Klicken Sie auf Maschinen-Image erstellen.
  3. Geben Sie unter Name einen Namen für Ihr Maschinen-Image an.
  4. (Optional) Geben Sie eine Beschreibung ein.
  5. Wählen Sie die Quell-VM-Instanz aus.
  6. (Optional) Geben Sie an, wo das Maschinen-Image gespeichert werden soll. Wählen Sie entweder Multiregional oder Regional Storage aus. Weitere Informationen zum Speicherort finden Sie unter Storage-Speicherort des Maschinen-Images.
  7. (Optional) Wählen Sie eine Verschlüsselungsmethode aus.
  8. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie den Befehl gcloud beta compute machine-images create, um ein Maschinen-Image aus einer Instanz zu erstellen.

gcloud beta compute machine-images create machine-image-name \
    --source-instance source-instance-name

Ersetzen Sie Folgendes:

  • machine-image-name ist der Name des Maschinen-Images, das Sie erstellen möchten.
  • source-instance-name ist der Name der Quellinstanz, aus der Sie das Image erstellen möchten.

Beispiel

Sie können beispielsweise mit dem folgenden gcloud-Befehl ein Maschinen-Image namens my-machine-image aus einer Quellinstanz namens my-instance erstellen:

gcloud beta compute machine-images create my-machine-image  \
    --source-instance my-instance

Der Vorgang dauert einige Minuten. Nachdem das Maschinen-Image erstellt wurde, sieht die Ausgabe in etwa so aus:

Created [https://www.googleapis.com/compute/beta/projects/project-12345/global/machineImages/my-machine-image].
NAME               STATUS
my-machine-image   READY

API

Erstellen Sie mit der API eine POST-Anfrage an die Methode machineimages.insert. Geben Sie im Anfragetext die folgende POST-Anfrage an:

POST https://www.googleapis.com/compute/beta/projects/project-id/global/machineImages

{
  "name": "machine-image-name",
  "sourceInstance": "source-instance-url"
}

Ersetzen Sie Folgendes:

  • project-id: Ihre Projekt-ID.
  • machine-image-name ist der Name des Maschinen-Images, das Sie erstellen möchten.
  • source-instance-url: die vollständige oder ein Teil der URL der Quellinstanz, die Sie zum Erstellen des Maschinen-Images verwenden möchten. Beispiel: Sie haben eine Quellinstanz namens my-instance in einem Projekt namens myProject. Dementsprechend sind die folgenden URLs gültig:

    • https://www.googleapis.com/compute/v1/projects/myProject/global/global/instances/my-instance
    • projects/myProject/global/global/instances/my-instance
    • global/instances/my-instance

Maschinen-Image aus einer virtuellen Appliance erstellen

Sie können Maschinen-Images aus virtuellen Appliances mithilfe des gcloud-Befehlszeilentools oder der Compute Engine API erstellen.

Damit Sie eine virtuelle Appliance importieren können, müssen Sie zuvor die folgenden Schritte ausführen:

  1. Aktivieren Sie die Cloud Build API
  2. Prüfen Sie die Anforderungen und unterstützten Betriebssysteme für den Import virtueller Appliances in Compute Engine.

gcloud

Verwenden Sie den Befehl gcloud beta compute machine-images import, um ein Maschinen-Image aus virtuellen Appliances zu erstellen.

gcloud beta compute machine-images import machine-image-name \
    --source-uri=gs:path-to-virtual-appliance-file
    --os=os

Ersetzen Sie Folgendes:

  • machine-image-name ist der Name des Maschinen-Images, das Sie erstellen möchten.
  • path-to-virtual-appliance-file ist der Pfad zu Ihrer OVA- oder OVF-Datei in Cloud Storage.
  • os ist das Betriebssystem der OVA-Datei. Dieses Flag ist standardmäßig optional, kann aber in einigen Fällen erforderlich sein. Wir empfehlen, dieses Flag anzugeben.

Beispiel

Sie können beispielsweise mit dem folgenden gcloud-Befehl ein Maschinen-Image namens my-machine-image aus einer OVA-Quelldatei namens my-ova erstellen, die im Verzeichnis gs://my-bucket gespeichert ist und centos-7 ausführt:

gcloud beta compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

API

  1. Laden Sie die virtuelle Appliance in Cloud Storage hoch.

  2. Erstellen Sie in der API eine POST-Anfrage an die Cloud Build API.

    POST https://cloudbuild.googleapis.com/v1/projects/project-id/builds
    {
     "timeout":"timeout",
     "steps":[
       {
         "args":[
           "-machine-image-name=machine-image-name",
           "-ovf-gcs-path=source-uri",
           "-os=os",
           "-client-id=api",
           "-timeout=timeout"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    Ersetzen Sie Folgendes:

    • project-id ist die ID des Projekts, in das Sie die OVA-Datei importieren möchten.
    • 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.
    • machine-image-name ist der Name des zu erstellenden Maschinen-Images. Beispiel: my-machine-image
    • source-uri ist der URI der OVA-Datei oder eines Verzeichnisses mit OVF-Paketen in Cloud Storage. Beispiel: gs://my-bucket/my-instance.ova
    • os ist das Betriebssystem der OVA-Datei. Beispiel: ubuntu-1604 Dieses Flag ist standardmäßig optional, kann aber in einigen Fällen erforderlich sein. Wir empfehlen, dieses Flag anzugeben.

    Weitere args-Werte, die Sie angeben können, finden Sie im Bereich zu optionalen Flags auf der GitHub-Seite für den Compute Engine-OVF-Import.

Maschinen-Images mit OVF-Überschreibungen erstellen

Benutzerdefinierte Kombinationen aus CPU und Arbeitsspeicher

gcloud

Wenn Sie die in der OVF-Datei angegebene CPU- oder Speicherkonfiguration überschreiben möchten, führen Sie die Schritte des gcloud-Befehlszeilentools aus, um ein Maschinen-Image aus einer virtuellen Appliance zu erstellen, und geben Sie die Flags --custom-cpu und --custom-memory an.

Beispiel

So erstellen Sie beispielsweise ein Maschinen-Image namens my-machine-image, bei dem die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei angewendet sind:

  • Betriebssystem: Ubuntu 1404
  • CPU: 2 CPUs
  • Arbeitsspeicher: 2048 MB

Führen Sie folgenden Befehl aus:

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

API

Wenn Sie die in der OVF-Datei angegebene CPU- oder Speicherkonfiguration überschreiben möchten, führen Sie die Schritte der Compute Engine API aus, um ein Maschinen-Image aus einer virtuellen Appliance zu erstellen und geben Sie das Argument -machine-type an. Dieser -machine-type steht für einen vordefinierten oder benutzerdefinierten Maschinentyp, der verwendet werden soll.

Beispiel

So erstellen Sie beispielsweise ein Maschinen-Image namens my-machine-image, bei dem die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei angewendet sind:

  • Betriebssystem: Ubuntu 1404
  • CPU: 2 CPUs
  • Arbeitsspeicher: 2048 MB

Stellen Sie die folgende Anfrage an die Compute Engine API. Ersetzen Sie project-id durch Ihre Projekt-ID.

{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7056s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Benutzerdefinierte Netzwerke

gcloud

Wenn Sie ein benutzerdefiniertes Netzwerk einrichten möchten, führen Sie die Schritte des gcloud-Befehlszeilentools aus, um ein Maschinen-Image aus einer virtuellen Appliance zu erstellen, und geben Sie ein --network-Flag an. Wenn das Netzwerk mit einem benutzerdefinierten Subnetzmodus konfiguriert ist, müssen Sie auch die Flags --subnet und --zone angeben.

Beispiel

So erstellen Sie beispielsweise ein Maschinen-Image namens my-machine-image, bei dem die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei angewendet sind:

  • Betriebssystem: Ubuntu 1404
  • Netzwerk: custom-vpc-network
  • Subnetz: company-vpc-us-east1-c
  • Zone: us-east1-c

Führen Sie folgenden Befehl aus:

gcloud compute machine-images import my-machine-image \
    --os ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network custom-vpc-network \
    --subnet company-vpc-us-east1-c \
    --zone us-east1-c

API

Wenn Sie ein benutzerdefiniertes Netzwerk verwenden möchten, führen Sie die Schritte der Compute Engine API aus, um ein Maschinen-Image aus einer virtuellen Appliance zu erstellen, und geben Sie ein -network-Argument an. Wenn das Netzwerk mit einem benutzerdefinierten Subnetzmodus konfiguriert ist, müssen Sie auch die Argumente -subnet und -zone angeben.

Beispiel

So erstellen Sie beispielsweise ein Maschinen-Image namens my-machine-image, bei dem die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei angewendet sind:

  • Betriebssystem: Ubuntu 1404
  • Netzwerk: custom-vpc-network
  • Subnetz: company-vpc-us-east1-c
  • Zone: us-central1-c

Stellen Sie die folgende Anfrage an die Compute Engine API. Ersetzen Sie project-id durch Ihre Projekt-ID.

POST https://cloudbuild.googleapis.com/v1/projects/project-id/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7056s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Weitere Informationen