Ce document explique comment copier votre VM dans un autre projet.
Avant de commencer
- Passez en revue les bonnes pratiques relatives aux instantanés de disques persistants et préparez votre disque de démarrage pour les instantanés.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux Google Cloud services et aux API.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Rôles requis
Pour obtenir les autorisations nécessaires à la copie d'une VM entre plusieurs projets, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1
) sur le projet.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour copier des VM entre plusieurs projets. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour copier une VM entre plusieurs projets :
compute.instances.create
sur le projet-
Pour créer la VM à l'aide d'une image personnalisée :
compute.images.useReadOnly
sur l'image -
Pour créer la VM à l'aide d'un instantané :
compute.snapshots.useReadOnly
sur l'instantané -
Pour créer la VM à l'aide d'un modèle d'instance :
compute.instanceTemplates.useReadOnly
sur le modèle d'instance -
Pour attribuer un ancien réseau à la VM :
compute.networks.use
sur le projet -
Pour spécifier une adresse IP statique pour la VM :
compute.addresses.use
sur le projet -
Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un ancien réseau :
compute.networks.useExternalIp
sur le projet -
Pour spécifier un sous-réseau pour la VM :
compute.subnetworks.use
sur le projet ou sur le sous-réseau choisi -
Pour attribuer une adresse IP externe à la VM, en cas d'utilisation d'un réseau VPC :
compute.subnetworks.useExternalIp
sur le projet ou sur le sous-réseau choisi -
Pour définir les métadonnées d'instance de VM pour la VM :
compute.instances.setMetadata
sur le projet -
Pour définir des tags pour la VM :
compute.instances.setTags
sur la VM -
Pour définir des libellés pour la VM :
compute.instances.setLabels
sur la VM -
Pour définir un compte de service à utiliser avec la VM :
compute.instances.setServiceAccount
sur la VM -
Pour créer un disque pour la VM :
compute.disks.create
sur le projet -
Pour associer un disque existant en mode lecture seule ou en mode lecture-écriture :
compute.disks.use
sur le disque -
Pour associer un disque existant en mode lecture seule :
compute.disks.useReadOnly
sur le disque
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Copier une VM dans un autre projet
Dans votre projet source, créez un instantané du disque de démarrage de la VM à l'aide de l'une des commandes suivantes :
Disque de démarrage zonal
Si votre VM possède un disque de démarrage zonal, créez un instantané à l'aide de la commande suivante :
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --snapshot-type SNAPSHOT_TYPE \ --source-disk-zone SOURCE_DISK_ZONE
Remplacez les éléments suivants :
- SNAPSHOT_NAME : nom de l'instantané.
- SOURCE_DISK : nom du volume de disque persistant zonal à partir duquel vous souhaitez créer un instantané.
- SNAPSHOT_TYPE: type d'instantané, STANDARD ou ARCHIVE. Si aucun type d'instantané n'est spécifié, un instantané STANDARD est créé. Choisissez Instantané d'archive pour une conservation des données plus économique.
- SOURCE_DISK_ZONE : zone du volume de disque persistant zonal à partir duquel vous souhaitez créer un instantané.
Disque de démarrage régional
Si votre VM possède un disque de démarrage régional, créez un instantané à l'aide de la commande suivante :
gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk SOURCE_DISK \ --source-disk-region=SOURCE_DISK_REGION \ --snapshot-type=SNAPSHOT_TYPE
Remplacez les éléments suivants :
- SNAPSHOT_NAME : nom de l'instantané.
- SOURCE_DISK : nom du volume de disque persistant régional à partir duquel vous souhaitez créer un instantané.
- SOURCE_DISK_REGION : région du volume de disque persistant régional à partir duquel vous souhaitez créer un instantané.
- SNAPSHOT_TYPE : type d'instantané, STANDARD ou ARCHIVE. Si aucun type d'instantané n'est spécifié, un instantané STANDARD est créé.
Créez une image personnalisée à partir de l'instantané à l'aide de la commande suivante :
gcloud compute images create IMAGE_NAME \ --source-snapshot=SOURCE_SNAPSHOT \ [--storage-location=LOCATION]
Remplacez l'élément suivant :
IMAGE_NAME
: nom de la nouvelle image.SOURCE_SNAPSHOT
: instantané à partir duquel vous souhaitez créer l'image.LOCATION
: option facultative permettant de spécifier la région ou l'emplacement multirégional dans lequel l'image est stockée. Par exemple, spécifiezus
pour stocker l'image dans l'emplacement multirégionalus
, ouus-central1
pour la stocker dans la régionus-central1
. Si vous ne sélectionnez pas d'emplacement, Compute Engine stocke l'image dans l'emplacement multirégional le plus proche de l'emplacement source de votre image.
Facultatif : Partagez l'image personnalisée avec les utilisateurs qui créent des VM dans le projet de destination. Pour en savoir plus sur le partage d'images personnalisées, consultez la page Partager une image personnalisée au sein d'une organisation.
Dans votre projet de destination, créez une VM à partir de l'image personnalisée à l'aide de la commande suivante :
gcloud compute instances create VM_NAME \ --image-project IMAGE_PROJECT \ IMAGE_FLAG \ --subnet SUBNET
Remplacez les éléments suivants :
VM_NAME
: nom de la VMIMAGE_PROJECT
: ID du projet Google Cloud contenant l'imageIMAGE_FLAG
: spécifiez l'une des options suivantes :- Utilisez l'option
--image IMAGE_NAME
pour spécifier une image personnalisée.Par exemple,
--image my-debian-image-v2
. - Si vous avez créé vos images personnalisées au sein d'une famille d'images personnalisées, utilisez l'indicateur
--image-family IMAGE_FAMILY_NAME
pour spécifier cette famille d'images personnalisées.Cette action crée la VM à partir de la version de l'image de l'OS la plus récente et non obsolète de votre famille d'images personnalisée. Par exemple, si vous spécifiez
--image-family my-debian-family
, Compute Engine crée une VM à partir de la dernière image de l'OS dans votre famille d'images personnaliséemy-debian-family
.
- Utilisez l'option
SUBNET
: si le sous-réseau et l'instance se trouvent dans le même projet, remplacezSUBNET
par le nom d'un sous-réseau situé dans la même région que l'instance.Pour spécifier un sous-réseau dans un réseau VPC partagé, remplacez
SUBNET
par une chaîne au format suivant:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Remplacez les éléments suivants :
HOST_PROJECT_ID
: ID de projet du projet hôte de VPC partagéREGION
: la région du sous-réseau.SUBNET_NAME
: nom du sous-réseau
La région du sous-réseau d'un réseau VPC partagé doit également correspondre à celle qui contient l'instance.
Étape suivante
- Personnalisez le réseau VPC du projet de destination.