Exporter une image personnalisée vers Google Cloud Storage

Si vous devez transférer les données du disque de démarrage Compute Engine en dehors de votre projet Compute Engine, vous pouvez exporter une image de disque de démarrage vers Cloud Storage sous la forme d'un fichier tar.gz. Si vous avez besoin de créer une image de disque persistant à utiliser lorsque vous créez des disques persistants sur Compute Engine, consultez la section Créer une image personnalisée.

Vous pouvez exporter une image personnalisée vers Cloud Storage à des fins de sauvegarde ou de partage. Cette méthode est idéale pour partager des images individuelles avec d'autres projets qui n'ont pas accès à vos images. Vous pouvez également autoriser le partage d'une image en attribuant à une ou plusieurs personnes le rôle d'utilisateur d'images Compute Engine sur une image spécifique ou sur le projet contenant l'image.

Le diagramme ci-dessous présente certains workflows types pour la création et la réutilisation d'une image personnalisée.

Créer et réutiliser des images personnalisées
Figure 1. Exemples de création et de réutilisation d'images personnalisées

Avant de commencer

Exporter une image à l'aide d'une seule commande

Le moyen le plus simple pour exporter une image vers Cloud Storage consiste à utiliser la commande gcloud compute images export. Cette commande exploite l'outil Daisy, qui permet d'exécuter à la suite les différentes étapes nécessaires à l'exportation d'une image. Nous partons ici du principe que vous avez déjà créé une image, par le biais de la commande gcloud compute images create, par exemple.

Exécutez la commande suivante à l'aide de l'outil de ligne de commande gcloud :

gcloud compute images export --destination-uri [DESTINATION_URI] \
    --image [IMAGE]

où :

  • [DESTINATION_URI] est la destination de l'URI Cloud Storage du fichier de disque virtuel exporté.
  • [IMAGE] est le nom de l'image disque à exporter.

Par exemple, la commande suivante permet d'exporter une image appelée my-image depuis le projet my-project vers un bucket Cloud Storage appelé my-bucket. Par défaut, l'image est exportée sous la forme d'un fichier disk.raw compressé au format tar.gz.

gcloud compute images export --destination-uri gs://my-bucket/my-image.tar.gz \
    --image my-image --project my-project

Pour obtenir la liste de toutes les options disponibles, consultez la documentation de référence sur gcloud compute images export.

Créer et exporter une image manuellement

Si les commandes gcloud compute images create et gcloud compute images export ne répondent pas à vos exigences, vous pouvez créer et exporter une image manuellement à partir d'une instance Compute Engine. Ce processus comporte des étapes distinctes permettant de créer, puis d'exporter une image.

Dans l'exemple suivant, notez que le disque créé est appelé image-disk.

Pour créer et exporter une image, effectuez les étapes suivantes :

  1. Arrêtez l'instance associée au disque avant de créer l'instantané. Cette opération facultative permet d'assurer l'intégrité du contenu du disque au sein de l'instantané.

  2. Créez un instantané du disque. Nommez-le image-snapshot.

    gcloud compute disks snapshot [DISK_NAME] --snapshot-names image-snapshot
    

    [DISK_NAME] est le nom du disque à partir duquel vous créez l'instantané.

  3. Exécutez la commande suivante pour créer un disque appelé image-disk à partir de l'instantané image-snapshot :

    gcloud compute disks create image-disk --source-snapshot image-snapshot
    
  4. Créez un disque temporaire appelé temporary-disk pour stocker votre fichier tar. Spécifiez le paramètre [SIZE] et assurez-vous que le disque temporaire soit au moins 50 % plus volumineux que le disque "image-disk".

    Vous pourrez dissocier et supprimer ce disque temporaire plus tard.

    gcloud compute disks create temporary-disk --size [SIZE]
    

    [SIZE] est la taille du disque temporaire en gigaoctets ou téraoctets. Par exemple, spécifiez 100GB pour créer un disque de 100 Go.

  5. Créez une instance et activez le champ d'application storage-rw sur celle-ci. Associez également image-disk et temporary-disk à l'instance en tant que disques secondaires avec des attributs device-name spécifiques.

    gcloud compute instances create [INSTANCE_NAME] --scopes storage-rw \
        --disk name=image-disk,device-name=image-disk \
        --disk name=temporary-disk,device-name=temporary-disk
    

    [INSTANCE_NAME] est le nom de l'instance créée.

    Notez que l'envoi de champs d'application de compte de service vous permettra d'importer votre fichier dans Cloud Storage par la suite.

    Étudiez plus en détail comment démarrer une nouvelle instance si nécessaire.

  6. Connectez-vous à votre instance :

    gcloud compute ssh [INSTANCE_NAME]
    

    [INSTANCE_NAME] est l'instance à laquelle vous souhaitez vous connecter.

  7. Formatez et installez le disque temporaire. Le formatage permet de supprimer le contenu du disque temporaire.

    sudo mkdir /mnt/tmp
    
    sudo mkfs.ext4 -F /dev/disk/by-id/google-temporary-disk
    
    sudo mount -o discard,defaults /dev/disk/by-id/google-temporary-disk /mnt/tmp
    
  8. Vous pouvez également installer le disque "image-disk" et apporter des modifications supplémentaires avant de créer le fichier tar. Par exemple, vous pouvez supprimer tous les fichiers du répertoire /home si vous ne souhaitez pas qu'ils soient présents dans votre image. Installez les partitions de disque dont vous avez besoin, modifiez les fichiers concernés sur le disque en question, puis désinstallez le disque une fois l'opération terminée.

    1. Créez un répertoire dans lequel vous pourrez installer votre disque ou votre partition.

      sudo mkdir /mnt/image-disk
      
    2. Identifiez le disque ou la partition à installer à l'aide de la commande ls.

      ls /dev/disk/by-id/
      

      La commande affiche une liste d'ID et de partitions de disque. Par exemple, le disque suivant possède une table de partition ne contenant qu'une partition. L'ID google-image-disk pointe vers le disque complet à partir duquel vous souhaitez créer une image. L'ID google-image-disk-part1 pointe vers la première partition de ce disque. Installez la partition si vous avez besoin d'apporter des modifications au disque, puis créez l'image à partir du disque complet.

      google-image-disk
      google-image-disk-part1
      
    3. Installez le disque ou la partition. Si votre disque possède une table de partition, installez les partitions individuelles de votre disque. Par exemple, installez google-image-disk-part1.

      sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk
      

      Si votre disque est au format RAW et ne possède pas de table de partition, installez le disque google-image-disk complet.

      sudo mount /dev/disk/by-id/google-image-disk /mnt/image-disk
      
    4. Modifiez les fichiers du répertoire /mnt/image-disk pour configurer les fichiers sur le disque. Vous pouvez par exemple supprimer le fichier /mnt/image-disk/home/[USER]/.ssh/authorized_keys afin d'empêcher le partage de vos clés SSH.

    5. Une fois les fichiers modifiés, désinstallez le disque.

      sudo umount /mnt/image-disk/
      
  9. Créez un fichier tar de votre image.

    Lorsque vous avez fini de personnaliser les fichiers du disque "image-disk", créez un fichier de disque RAW sur votre disque temporaire. Le nom de l'image du disque RAW doit être "disk.raw" :

    sudo dd if=/dev/disk/by-id/google-image-disk of=/mnt/tmp/disk.raw bs=4096
    

    Ensuite, créez et compressez une archive tar à partir de ce fichier :

    cd /mnt/tmp
    
    sudo tar czvf myimage.tar.gz disk.raw
    

    Cette commande permet de créer une image de l'instance à l'emplacement suivant :

    /mnt/tmp/myimage.tar.gz
    
  10. Importez l'image dans Cloud Storage.

    Pour importer le fichier tar dans Cloud Storage, utilisez l'outil de ligne de commande gsutil préinstallé sur votre instance.

    1. Créez un bucket à l'aide de gsutil.

      Avant de créer votre bucket, veillez à consulter les consignes relatives aux noms des buckets. Créez ensuite votre bucket à l'aide de la commande suivante :

      me@example-instance:~$ gsutil mb gs://[BUCKET_NAME]

      [BUCKET_NAME] est le nom du bucket à créer.

    2. Copiez votre fichier dans votre nouveau bucket via

      me@example-instance:~$ gsutil cp /mnt/tmp/myimage.tar.gz gs://[BUCKET_NAME]

      [BUCKET_NAME] est le bucket de destination.

Voilà, vous avez exporté votre fichier vers Cloud Storage. Vous pouvez maintenant partager l'image avec d'autres personnes ou utiliser le fichier tar pour ajouter une nouvelle image à un projet de la console Google Cloud Platform.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine