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.
-
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 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 IMAGE | --image-family IMAGE_FAMILY] --subnet SUBNET
Dabei gilt:
VM_NAME
: Der Name der VMIMAGE_PROJECT
: Name des Projekts, das das Image enthält- Für
IMAGE
oderIMAGE_FAMILY
muss eine der folgenden Optionen angegeben werden:IMAGE
: Name Ihres benutzerdefinierten Imagesz. 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-Familiemy-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-HostprojektsREGION
ist die Region des SubnetzesSUBNET_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
- Passen Sie das VPC-Netzwerk des Zielprojekts an.