VMs zwischen Projekten kopieren


In diesem Dokument wird beschrieben, wie Sie eine VM in ein anderes Projekt kopieren.

Hinweise

  • Lesen Sie die Best Practices für Snapshots nichtflüchtiger Speicher und bereiten Sie das Bootlaufwerk für Snapshots vor.
  • 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.
    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Set a default region and zone.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) für das Projekt zu erteilen, um die Berechtigungen zu erhalten, die Sie zum Kopieren von VMs zwischen Projekten benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Kopieren von VMs zwischen Projekten erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um eine VM zwischen Projekten zu kopieren:

  • compute.instances.create für das Projekt
  • So erstellen Sie die VM mit einem benutzerdefinierten Image: compute.images.useReadOnly für das Image
  • Um die VM mit einem Snapshot zu erstellen: compute.snapshots.useReadOnly für den Snapshot
  • So verwenden Sie eine Instanzvorlage zum Erstellen der VM: compute.instanceTemplates.useReadOnly für die Instanzvorlage
  • So weisen Sie der VM ein Legacy-Netzwerk zu: compute.networks.use für das Projekt
  • Um eine statische IP-Adresse für die VM festzulegen: compute.addresses.use für das Projekt
  • So weisen Sie der VM eine externe IP-Adresse zu, wenn Sie ein Legacy-Netzwerk verwenden: compute.networks.useExternalIp für das Projekt
  • So geben Sie ein Subnetz für Ihre VM an: compute.subnetworks.use für das Projekt oder für das ausgewählte Subnetz
  • So weisen Sie der VM eine externe IP-Adresse zu, wenn Sie ein VPC-Netzwerk verwenden: compute.subnetworks.useExternalIp für das Projekt oder für das ausgewählte Subnetz
  • Um Metadaten der VM-Instanz für die VM festzulegen: compute.instances.setMetadata für das Projekt
  • Zum Festlegen von Tags für die VM: compute.instances.setTags auf der VM
  • So legen Sie Labels für die VM fest: compute.instances.setLabels auf der VM
  • So legen Sie ein Dienstkonto für die VM fest: compute.instances.setServiceAccount auf der VM
  • Um ein neues Laufwerk für die VM zu erstellen: compute.disks.create für das Projekt
  • So hängen Sie ein vorhandenes Laufwerk im Lese- oder Lese-/Schreibmodus an: compute.disks.use für das Laufwerk
  • So hängen Sie ein vorhandenes Laufwerk im Lesemodus an: compute.disks.useReadOnly für das Laufwerk

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

VM in ein anderes Projekt kopieren

  1. Erstellen Sie in Ihrem Quellprojekt mit einem der folgenden Befehle einen Snapshot des Bootlaufwerks der VM:

    Zonales Bootlaufwerk

    Wenn die VM ein zonales Bootlaufwerk hat, erstellen Sie mit folgendem Befehl einen Snapshot:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk SOURCE_DISK \
        --snapshot-type SNAPSHOT_TYPE \
        --source-disk-zone SOURCE_DISK_ZONE
    

    Dabei gilt:

    • SNAPSHOT_NAME: Ein Name für den Snapshot.
    • SOURCE_DISK: Der Name des zonalen Persistent Disk-Volumes, von dem Sie einen Snapshot erstellen möchten.
    • SNAPSHOT_TYPE: Der Snapshot-Typ, entweder STANDARD oder ARCHIVE. Wenn kein Snapshot-Typ angegeben ist, wird ein STANDARD-Snapshot erstellt. Wählen Sie „Archive“ aus, um eine kostengünstigere Datenaufbewahrung zu ermöglichen.
    • SOURCE_DISK_ZONE: Die Zone des zonalen Persistent Disk-Volumes, von dem Sie einen Snapshot erstellen möchten.

    Regionales Bootlaufwerk

    Wenn Ihre VM ein regionales Bootlaufwerk hat, erstellen Sie mit folgendem Befehl einen Snapshot:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk SOURCE_DISK \
        --source-disk-region=SOURCE_DISK_REGION \
        --snapshot-type=SNAPSHOT_TYPE
    

    Dabei gilt:

    • SNAPSHOT_NAME: Ein Name für den Snapshot.
    • SOURCE_DISK: Der Name des regionalen Persistent Disk-Volumes, von dem Sie einen Snapshot erstellen möchten.
    • SOURCE_DISK_REGION: Der Name des regionalen Persistent Disk-Volumes, von dem Sie einen Snapshot erstellen möchten
    • SNAPSHOT_TYPE: Der Snapshot-Typ, entweder STANDARD oder ARCHIVE. Wenn kein Snapshot-Typ angegeben ist, wird ein STANDARD-Snapshot erstellt.

  2. Erstellen Sie mit folgendem Befehl ein benutzerdefiniertes Image aus dem Snapshot:

    gcloud compute images create IMAGE_NAME \
        --source-snapshot=SOURCE_SNAPSHOT \
        [--storage-location=LOCATION]
    

    Dabei gilt:

    • IMAGE_NAME ist ein Name für das neue Image
    • SOURCE_SNAPSHOT ist der Snapshot, von dem Sie das Image erstellen möchten.
    • LOCATION (Optional): Ein Flag, mit dem Sie die Region oder Multiregion festlegen können, in der Ihr Image gespeichert wird. Geben Sie beispielsweise us an, um das Image in der Multiregion us zu speichern, oder us-central1, um es in der Region us-central1 zu speichern. Wenn Sie keine Auswahl treffen, speichert Compute Engine das Image in der Multiregion, die dem Speicherort Ihrer Image-Quelle am nächsten ist.
  3. Optional: Geben Sie das benutzerdefinierte Image für Nutzer frei, die VMs im Zielprojekt erstellen. Weitere Informationen zum Freigeben benutzerdefinierter Images finden Sie unter Benutzerdefiniertes Image innerhalb einer Organisation freigeben.

  4. Erstellen Sie in Ihrem Zielprojekt mit folgendem Befehl eine VM aus dem benutzerdefinierten Image:

    gcloud compute instances create VM_NAME \
        --image-project IMAGE_PROJECT \
        [--image IMAGE | --image-family IMAGE_FAMILY]
        --subnet SUBNET
    

    Dabei gilt:

    • VM_NAME: Der Name der VM
    • IMAGE_PROJECT: Name des Projekts, das das Image enthält
    • Für IMAGE oder IMAGE_FAMILY muss eine der folgenden Optionen angegeben werden:
      • IMAGE: Name Ihres benutzerdefinierten Images

        z. B. --image=my-debian-image-v2.

      • IMAGE_FAMILY legt die benutzerdefinierte Image-Familie fest, wenn Sie Ihre benutzerdefinierten Images als Teil einer benutzerdefinierten Image-Familie erstellt haben.

        Dadurch wird die VM aus der neuesten nicht verworfenen Version des Betriebssystem des Betriebssystem-Images in Ihrer benutzerdefinierten Image-Familie erstellt. Wenn Sie beispielsweise --image-family=my-debian-family angeben, erstellt Compute Engine eine VM aus dem neuesten Betriebssystem-Image in Ihrer benutzerdefinierten Image-Familie my-debian-family.

    • SUBNET: Wenn sich das Subnetz und die Instanz im selben Projekt befinden, ersetzen Sie SUBNET durch den Namen eines Subnetzes, das sich in derselben Region wie die Instanz befindet.

      Wenn Sie ein Subnetz in einem freigegebenen VPC-Netzwerk angeben möchten, ersetzen Sie SUBNET durch einen String im folgenden Format:

              projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
             

      Dabei gilt:

      • HOST_PROJECT_ID ist die Projekt-ID des freigegebenen VPC-Hostprojekts
      • REGION ist die Region des Subnetzes
      • SUBNET_NAME ist der Name des Subnetzes

      Die Region des Subnetzes für ein freigegebenes VPC-Netzwerk muss auch mit der Region übereinstimmen, die die Instanz enthält.

Nächste Schritte