VMs zwischen Projekten kopieren

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

Hinweise

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 auf Projekte, Ordner und Organisationen 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
  • Zum Erstellen der VM mit einem benutzerdefinierten Image: compute.images.useReadOnly für das Image
  • Zum Erstellen der VM mit einem Snapshot: compute.snapshots.useReadOnly für den Snapshot
  • Zum Erstellen der VM mit einer Instanzvorlage: compute.instanceTemplates.useReadOnly für die Instanzvorlage
  • Zum Angeben eines Subnetzes für Ihre VM: compute.subnetworks.use für das Projekt oder für das ausgewählte Subnetz
  • Zum Festlegen einer statischen IP-Adresse für die VM: compute.addresses.use für das Projekt
  • Zum Zuweisen einer externen IP-Adresse zur VM, wenn Sie ein VPC-Netzwerk verwenden: compute.subnetworks.useExternalIp für das Projekt oder für das ausgewählte Subnetz
  • Zum Zuweisen eines Legacy-Netzwerks zur VM: compute.networks.use für das Projekt
  • Zum Zuweisen einer externen IP-Adresse zur VM, wenn Sie ein Legacy-Netzwerk verwenden: compute.networks.useExternalIp für das Projekt
  • Zum Festlegen von Metadaten der VM-Instanz für die VM: compute.instances.setMetadata für das Projekt
  • Zum Festlegen von Tags für die VM: compute.instances.setTags für die VM
  • Zum Festlegen von Labels für die VM: compute.instances.setLabels für die VM
  • Zum Festlegen eines Dienstkontos für die VM: compute.instances.setServiceAccount für die VM
  • Zum Erstellen eines neuen Laufwerks für die VM: compute.disks.create für das Projekt
  • Zum Anhängen eines vorhandenen Laufwerks im Lese- oder Lese-/Schreibmodus: compute.disks.use für das Laufwerk
  • Zum Anhängen eines vorhandenen Laufwerks im Lesemodus: 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_FLAG \
        --subnet SUBNET
    

    Ersetzen Sie Folgendes:

    • VM_NAME: Der Name der VM.
    • IMAGE_PROJECT: Die ID des Cloud de Confiance -Projekts, das das Image enthält.
    • IMAGE_FLAG: Geben Sie eine der folgenden Optionen an:
      • Verwenden Sie das Flag --image IMAGE_NAME, um ein benutzerdefiniertes Image anzugeben.

        Beispiel: --image my-debian-image-v2.

      • Wenn Sie Ihre benutzerdefinierten Images als Teil einer benutzerdefinierten Image-Familie erstellt haben, verwenden Sie das Flag --image-family IMAGE_FAMILY_NAME, um diese benutzerdefinierte Image-Familie anzugeben.

        Dadurch wird die VM aus der neuesten nicht verworfenen Version des Betriebssystem-Images und der Betriebssystemversion 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 freigegebene VPC-Netzwerk angeben möchten, ersetzen Sie SUBNET durch einen String im folgenden Format:

              projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
             

      Ersetzen Sie Folgendes:

      • HOST_PROJECT_ID: die Projekt-ID des freigegebene VPC-Hostprojekts
      • REGION: Die Region des Subnetzes.
      • SUBNET_NAME: Name des Subnetzes

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

Nächste Schritte