Copier des VM entre des projets


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 services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Définissez une région et une zone par défaut.

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 section Gérer les accès.

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

  1. 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éé.

  2. 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écifiez us pour stocker l'image dans l'emplacement multirégional us, ou us-central1 pour la stocker dans la région us-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.
  3. 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.

  4. 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 IMAGE | --image-family IMAGE_FAMILY]
        --subnet SUBNET
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de la VM
    • IMAGE_PROJECT : nom du projet contenant l'image.
    • IMAGE ou IMAGE_FAMILY : spécifiez l'un des éléments suivants :
      • IMAGE : nom de votre image personnalisée.

        Par exemple, --image=my-debian-image-v2.

      • IMAGE_FAMILY : si vous avez créé vos images personnalisées dans le cadre d'une famille d'images personnalisées, spécifiez cette famille.

        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ée my-debian-family.

    • SUBNET : si le sous-réseau et l'instance se trouvent dans le même projet, remplacez SUBNET 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 correspond à l'ID du projet hôte de VPC partagé.
      • REGION correspond à la région du sous-réseau.
      • SUBNET_NAME correspond au 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.

Étapes suivantes

  • Personnalisez le réseau VPC du projet de destination.