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 bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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 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-
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
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.
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 ImageSOURCE_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 beispielsweiseus
an, um das Image in der Multiregionus
zu speichern, oderus-central1
, um es in der Regionus-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.
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.
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 VMIMAGE_PROJECT
: die ID des Google Cloud-Projekts, das das Image enthältIMAGE_FLAG
: Wählen Sie eine der folgenden Optionen aus:- 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 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-Familiemy-debian-family
.
- Verwenden Sie das Flag
SUBNET
: Wenn sich das Subnetz und die Instanz im selben Projekt befinden, ersetzen SieSUBNET
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
Ersetzen Sie Folgendes:
HOST_PROJECT_ID
: Projekt-ID des freigegebenen VPC-HostprojektsREGION
: Die Region des Subnetzes.SUBNET_NAME
: 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
- Passen Sie das VPC-Netzwerk des Zielprojekts an.