Maschinen-Images aus virtuellen Appliances importieren


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. Informationen dazu, wann und wie Maschinen-Images verwendet werden, finden Sie unter Maschinen-Images.

In diesem Dokument werden die Schritte zum Importieren eines Maschinen-Images von einer virtuellen Appliance beschrieben.

Hinweise

  • Wenn für das Projekt, in das Sie das Maschinen-Image importieren möchten, 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.
  • Wenn Sie eine virtuelle Appliance aus einem anderen Projekt importieren, finden Sie weitere Informationen unter Projektübergreifend importieren.
  • Prüfen Sie die Anforderungen an Quell-VM und OVF-Dateien im Leitfaden der Compute Engine-Importanleitung für virtuelle Appliances.
  • Informationen zu den Anforderungen für das Importieren von Machine-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:

    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

Limits und Einschränkungen

  • Sie können ein Maschinen-Image projektübergreifend freigeben. Freigegebene VPC-Netzwerke werden jedoch nicht unterstützt.
  • Dieses Feature wird nicht für Projekte unterstützt, die durch VPC Service Controls geschützt werden.
  • Maschinen-Images können nicht aus Quell-VMs erstellt werden, an die mehr als 200 TB Laufwerke angehängt sind.

Unterstützte Betriebssysteme

Weitere Informationen zur Betriebssystemunterstützung finden Sie unter Details zu Betriebssystemen.

Maschinen-Images importieren

Sie können Maschinen-Images aus virtuellen Appliances mithilfe der Google Cloud CLI oder REST importieren.

gcloud

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

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

Dabei gilt:

  • MACHINE_IMAGE_NAME ist der Name des Maschinen-Images, das Sie importieren möchten.
  • SOURCE_URI 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

Verwenden Sie beispielsweise den folgenden gcloud-Befehl, um ein Maschinen-Image namens my-machine-image aus einer OVA-Quelldatei namens my-ova zu importieren, die im Verzeichnis gs://my-bucket gespeichert ist, und centos-7 ausführt:

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

REST

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

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

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

    Dabei gilt:

    • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie die OVA-Datei importieren möchten.
    • MACHINE_IMAGE_NAME ist der Name des zu importierenden 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 importieren

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 der Google Cloud CLI zum Importieren eines Maschinen-Image aus und geben Sie die Flags --custom-cpu und --custom-memory an.

Beispiel

Bei einem Maschinen-Image namens my-machine-image gelten die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei:

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

Führen Sie den folgenden Befehl aus, um my-machine-image mit diesen Überschreibungen zu importieren:

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

REST

Damit Sie die in der OVF-Datei angegebene CPU- oder Arbeitsspeicherkonfiguration überschreiben können, führen Sie die Schritte der Compute Engine API aus, um ein Maschinen-Image zu importieren und geben Sie das Argument -machine-type an. Dieser -machine-type steht für einen vordefinierten oder benutzerdefinierten Maschinentyp, der verwendet werden soll.

Beispiel

Bei einem Maschinen-Image namens my-machine-image gelten die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei:

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

Stellen Sie die folgende Anfrage an die Compute Engine API, um my-machine-image mit diesen Überschreibungen zu importieren.

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",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

Benutzerdefinierte Netzwerke

gcloud

Wenn Sie ein benutzerdefiniertes Netzwerk einrichten möchten, führen Sie die Schritte der Google Cloud CLI zum Importieren eines Maschinen-Image aus 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

Bei einem Maschinen-Image namens my-machine-image gelten die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei:

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

Führen Sie den folgenden Beispielbefehl aus, um my-machine-image mit diesen Überschreibungen zu importieren:

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

REST

Damit Sie ein benutzerdefiniertes Netzwerk verwenden können, führen Sie die Schritte der Compute Engine API aus, um ein Maschinen-Image zu importieren 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

Bei einem Maschinen-Image namens my-machine-image gelten die folgenden Überschreibungen auf die Einstellungen in der OVF-Datei:

  • 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, um my-machine-image mit diesen Überschreibungen zu importieren.

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=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

Maschinen-Image innerhalb eines Netzwerks importieren, das keine externe IP-Adresse zulässt

Führen Sie die folgenden Schritte aus, um ein Maschinen-Image über ein Netzwerk zu importieren, in dem keine externen IP-Adressen zulässig sind:

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

  2. Für den Import müssen Paketmanager auf dem Betriebssystem des Maschinen-Images 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 Maschinen-Image entweder mit der Google Cloud CLI oder der Cloud Build API.

    Wenn Sie ein Maschinen-Image von einer virtuellen Appliance 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.

    Klicken Sie auf die folgenden Tabs, um weitere Informationen zum erforderlichen Flag oder Argument zu erhalten:

gcloud

Führen Sie den Befehl gcloud compute machine-images import mit dem Flag --no-address aus.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

Dabei gilt:

  • MACHINE_IMAGE_NAME ist der Name des Maschinen-Images, das Sie importieren möchten.
  • SOURCE_URI ist der URI für Ihre OVA- oder OVF-Datei in Cloud Storage. Beispiel: gs://my-bucket/Ubuntu.ova
  • 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. Eine Liste der unterstützten Werte finden Sie unter --os-Flag-Optionen für den Befehl gcloud compute machine-images import.
  • ZONE ist die Zone, in die das Maschinen-Image importiert werden soll. Wenn Sie dieses Feld leer lassen, wird die Standardzone für das Projekt verwendet.

REST

Verwenden Sie die Cloud Build API und geben Sie das Argument -no-external-ip an.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Dabei gilt:

  • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie das Maschinen-Image importieren möchten.
  • MACHINE_IMAGE_NAME ist der Name des zu erstellenden Maschinen-Images. Beispiel: my-machine-image
  • SOURCE_URI: URI für die OVA-Datei, die in Cloud Storage gespeichert ist. Beispiel: gs://my-bucket/my-machine.ova
  • OS: 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. Eine Liste der unterstützten Werte finden Sie unter --os-Flag-Optionen für den Befehl gcloud compute instances import.
  • ZONE ist die Zone, in die das Maschinen-Image importiert werden soll.

Maschinen-Image mit benutzerdefinierten Dienstkonten importieren

Während eines Imports von Maschinen-Images werden in Ihrem Projekt temporäre VM-Instanzen 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 VM-Metadatenserver zugegriffen und zur Authentifizierung des Import-Tools auf der VM verwendet werden.

Beim Import wird standardmäßig das Compute Engine-Standarddienstkonto 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 die virtuelle Appliance zu 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

    Diese Mindestrollen werden für das Dienstkonto benötigt, das für das Flag --compute-service-account angegeben ist. Weitere Informationen finden Sie unter Compute Engine-Dienstkonto die erforderlichen Rollen zuweisen.

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

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    Dabei gilt:

    • MACHINE_IMAGE_NAME ist der Name des Maschinen-Images, das Sie importieren möchten.
    • SOURCE_URI 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.
    • TEMP_SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des benutzerdefinierten Dienstkontos, das im vorherigen Schritt erstellt wurde. Dieses Dienstkonto wird von den temporären VMs verwendet. Wenn nicht angegeben, verwendet die VM das Compute Engine-Standarddienstkonto.
    • SERVICE_ACCOUNT_EMAIL: Die mit dem benutzerdefinierten Dienstkonto verknüpfte E-Mail-Adresse, die einer beliebigen VM zugeordnet werden soll, die aus diesem Maschinen-Image erstellt wurde. Es gibt keine Berechtigungsbeschränkungen für dieses Dienstkonto. Sie können dieses Dienstkonto nach Bedarf anpassen. Wenn keine Angabe erfolgt, wird das Compute Engine-Standarddienstkonto mit der VM verbunden.
    • SCOPES: Legen Sie die Zugriffsebene für die Option --service-account fest. Wenn keine Angabe gemacht wird, werden die Standardbereiche verwendet. Weitere Informationen finden Sie unter dem Flag --scopes.

REST

  1. Fügen Sie die virtuelle Appliance zu 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

    Diese Mindestrollen sind für das Dienstkonto erforderlich, das für das Argument -compute-service-account angegeben wurde. Weitere Informationen finden Sie unter Compute Engine-Dienstkonto die erforderlichen Rollen zuweisen.

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

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "timeout":"7200s",
    "steps":[
      {
        "args":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    Dabei gilt:

    • PROJECT_ID ist die Projekt-ID des Projekts, in das Sie das Maschinen-Image importieren möchten.
    • MACHINE_IMAGE_NAME ist der Name des zu erstellenden Maschinen-Images. Beispiel: my-machine-image
    • SOURCE_URI: URI für die OVA-Datei, die in Cloud Storage gespeichert ist. Beispiel: gs://my-bucket/my-machine.ova
    • OS: 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. Eine Liste der unterstützten Werte finden Sie unter --os-Flag-Optionen für den Befehl gcloud compute instances import.
    • ZONE ist die Zone, in die das Maschinen-Image importiert werden soll.
    • TEMP_SERVICE_ACCOUNT_EMAIL: Die E-Mail-Adresse des benutzerdefinierten Dienstkontos, das im vorherigen Schritt erstellt wurde. Dieses Dienstkonto wird von den temporären VMs verwendet. Wenn nicht angegeben, verwendet die VM das Compute Engine-Standarddienstkonto.
    • SERVICE_ACCOUNT_EMAIL: Die mit dem benutzerdefinierten Dienstkonto verknüpfte E-Mail-Adresse, die einer beliebigen VM zugeordnet werden soll, die aus diesem Maschinen-Image erstellt wurde. Es gibt keine Berechtigungsbeschränkungen für dieses Dienstkonto. Sie können dieses Dienstkonto nach Bedarf anpassen. Wenn keine Angabe erfolgt, wird das Compute Engine-Standarddienstkonto mit der VM verbunden.
    • SCOPES: Legen Sie die Zugriffsebene für die Option --service-account fest. Wenn keine Angabe gemacht wird, werden die Standardbereiche verwendet. Weitere Informationen finden Sie unter dem Flag --scopes.

Nächste Schritte