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 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:
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. 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

  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_FLAG \
        --subnet SUBNET
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de la VM
    • IMAGE_PROJECT: ID du projet Google Cloud contenant l'image
    • IMAGE_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é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: 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.