Créer, supprimer et abandonner des images personnalisées

Vous pouvez créer des images personnalisées à partir de disques, d'images ou d'instantanés sources stockés dans Cloud Storage. Vous pouvez utiliser ces images pour créer des instances de machines virtuelles (VM). Ceci est idéal pour les situations où vous avez créé et modifié un disque de démarrage persistant ou une image spécifique dans un certain état, et devez enregistrer cet état pour créer des instances.

Vous pouvez également utiliser l'outil d'importation de disque virtuel pour importer des images de disque de démarrage dans Compute Engine à partir de vos systèmes existants et les ajouter à votre liste d'images personnalisée.

.

Avant de commencer

Créer une image personnalisée

Ces instructions expliquent comment créer une image personnalisée sur une instance Linux. Pour plus d'informations sur la création d'une image Windows, consultez la page Créer une image Windows.

Vous devez utiliser les autorisations Cloud Identity and Access Management (Cloud IAM) pour partager des images avec d'autres projets.

Sélectionner l'emplacement de stockage d'une image

Lors de la création d'une image personnalisée, vous pouvez spécifier son emplacement dans Cloud Storage, en excluant les emplacements birégionaux. En spécifiant l'emplacement de stockage de l'image, vous répondez aux exigences réglementaires et de conformité relatives à la localisation des données ainsi qu'à vos exigences de haute disponibilité, en assurant la redondance entre régions.

La fonctionnalité d'emplacement de stockage est facultative. Si vous ne sélectionnez pas d'emplacement, Compute Engine stocke votre image dans l'emplacement multirégional le plus proche de l'image source.

Pour connaître l'emplacement de stockage actuel d'une image, exécutez la commande images describe de gcloud compute :

gcloud compute images describe [IMAGE_NAME] --project [PROJECT]

⋮
storageLocations:
- us-central1

Toutes les images existant avant le lancement de cette fonctionnalité restent à leur emplacement. La seule différence, c'est que vous pouvez consulter l'emplacement de toutes vos images. Si vous souhaitez déplacer une image existante, vous devez la recréer à l'emplacement souhaité.

Préparer votre instance pour une image

Vous pouvez créer une image à partir d'un disque même si celui-ci est associé à une instance de machine virtuelle en cours d'exécution. Cependant, votre image sera plus fiable si vous placez l'instance dans un état rendant l'image plus facile à capturer. Utilisez l'un des processus suivants pour préparer votre disque de démarrage pour l'image :

  • Arrêtez l'instance afin qu'elle puisse s'interrompre et arrêtez toute écriture de données sur le disque persistant.

  • Si vous ne parvenez pas à interrompre votre instance avant de créer l'image, réduisez la quantité d'écritures sur le disque et effectuez une synchronisation vers votre système de fichiers.

    1. Mettez en veille les applications ou les processus du système d'exploitation qui écrivent des données sur ce disque persistant.
    2. Si nécessaire, exécutez une application pour vider le disque. Par exemple, MySQL possède une instruction FLUSH. D'autres applications peuvent avoir des processus similaires.
    3. Empêchez vos applications d'écrire sur votre disque persistant.
    4. Exécutez sudo sync.

Après avoir préparé l'instance, créez l'image.

Créer l'image

Vous pouvez créer des images de disques à partir des sources suivantes :

  • Un disque persistant, même lorsque ce disque est attaché à une instance
  • Un instantané d'un disque persistant
  • Une autre image dans votre projet
  • Une image partagée par un autre projet
  • Une image RAW compressée dans Google Cloud Storage

Console

  1. Dans Google Cloud Console, accédez à la page Créer une image.
    Accéder à la page Créer une image
  2. Indiquez le Nom de votre image.
  3. Spécifiez la Source à partir de laquelle vous souhaitez créer une image. Il peut s'agir d'un disque persistant, d'un instantané, d'une autre image ou d'un fichier au format disk.raw dans Google Cloud Storage.
  4. Spécifiez l'emplacement où stocker votre image. Choisissez l'emplacement de stockage de votre image dans le menu déroulant Basé sur l'emplacement du disque source (par défaut). 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.
  5. Spécifiez les propriétés de votre image. Par exemple, vous pouvez spécifier un nom de famille d'images afin d'organiser cette image dans le cadre d'une famille d'images.
  6. Cliquez sur Créer pour créer l'image.

gcloud

À l'aide de l'outil de ligne de commande gcloud, utilisez la commande gcloud compute images create pour créer une image personnalisée.

Créer une image à partir d'un disque source :

gcloud compute images create [IMAGE_NAME] \
  --source-disk [SOURCE_DISK] \
  --source-disk-zone [ZONE] \
  --family [IMAGE_FAMILY] \
  --storage-location [LOCATION] \
  --force

où :

  • [IMAGE_NAME] est le nom de la nouvelle image ;
  • [SOURCE_DISK] est le disque à partir duquel vous souhaitez créer l'image ;
  • [ZONE] est la zone où se trouve le disque ;
  • [IMAGE_FAMILY] est une option facultative qui spécifie la famille d'images à laquelle cette image appartient ;
  • [LOCATION] est une option facultative qui permet 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 ;
  • [--force] est une option facultative qui vous permet de créer l'image à partir d'une instance en cours d'exécution. Par défaut, vous ne pouvez pas créer d'images à partir d'instances en cours d'exécution. Ne spécifiez cette option que si vous êtes certain de vouloir créer l'image pendant que l'instance est en cours d'exécution.

Créer une image à partir d'une image source :

gcloud compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --family [IMAGE_FAMILY] \
  --storage-location [LOCATION]

où :

  • [IMAGE_NAME] est le nom de la nouvelle image ;
  • [SOURCE_IMAGE] est l'image à partir de laquelle vous voulez créer la nouvelle image ;
  • [IMAGE_PROJECT] est un paramètre facultatif qui spécifie le projet dans lequel se trouve l'image source (utilisez ce paramètre si vous souhaitez copier une image d'un autre projet) ;
  • [IMAGE_FAMILY] est une option facultative qui spécifie la famille d'images à laquelle cette nouvelle image appartient ;
  • [LOCATION] est une option facultative qui permet 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 la source de l'image.

Créer une image à partir d'un instantané :

gcloud compute images create [IMAGE_NAME] \
  --source-snapshot [SOURCE_SNAPSHOT] \
  --storage-location [LOCATION]

où :

  • [IMAGE_NAME] est le nom de la nouvelle image ;
  • [SOURCE_SNAPSHOT] est l'instantané à partir duquel vous souhaitez créer l'image ;
  • [LOCATION] est une option facultative qui permet 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 la source de l'image.

Afficher l'emplacement d'une image :

Exécutez la commande gcloud compute images describe pour afficher l'emplacement de l'image.

gcloud compute images describe [IMAGE_NAME]

[IMAGE_NAME] est le nom de l'image pour laquelle vous souhaitez obtenir des informations.

API

Envoyez une requête POST à la méthode images().insert, une URL dans le corps de la requête pointant vers l'objet source à partir duquel vous souhaitez créer l'image. Spécifiez les URL de vos ressources en utilisant vos propres ID de projet et noms de ressources.

Créer une image à partir d'un disque persistant :

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceDisk": "/zones/[ZONE]/disks/[SOURCE_DISK]",
  "storageLocations": "[LOCATION]",
  "forceCreate": "[FORCE_CREATE]"
}

où :

  • [PROJECT_ID] est le projet auquel appartient l'image ;
  • [IMAGE_NAME] est le nom de la nouvelle image que vous souhaitez créer ;
  • [ZONE] est la zone où se trouve le disque source ;
  • [SOURCE_DISK] est le disque à partir duquel vous souhaitez créer l'image ;
  • [LOCATION] est un paramètre facultatif qui permet de sélectionner l'emplacement de stockage de votre image. 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 ;
  • [FORCE_CREATE] est un paramètre facultatif qui vous permet de créer l'image à partir d'une instance en cours d'exécution. Spécifiez TRUE uniquement si vous êtes certain de vouloir créer l'image à partir d'une instance en cours d'exécution. La valeur par défaut est FALSE si vous ne spécifiez pas ce paramètre.

Créer une image à partir d'une autre image :

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceImage": "/global/images/[SOURCE_IMAGE]",
  "storageLocations": "[LOCATION]"
}

où :

  • [PROJECT_ID] est le projet auquel appartient l'image ;
  • [IMAGE_NAME] est le nom de la nouvelle image que vous souhaitez créer ;
  • [SOURCE_IMAGE] est l'image à partir de laquelle vous voulez créer l'image.
  • [LOCATION] est un paramètre facultatif qui permet de sélectionner l'emplacement de stockage de l'image. 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 la source de l'image.

Créer une image à partir d'un instantané :

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images
{
  "name": "[IMAGE_NAME]",
  "sourceSnapshot": "/[SOURCE_PROJECT_ID]/global/snapshots/[SOURCE_SNAPSHOT]",
  "storageLocations": "[LOCATION]"
}

où :

  • [PROJECT_ID] est le projet auquel appartient l'image ;
  • [IMAGE_NAME] est le nom de la nouvelle image que vous souhaitez créer ;
  • [SOURCE_SNAPSHOT] est l'instantané à partir duquel vous souhaitez créer l'image ;
  • [SOURCE_PROJECT_ID] est une variable facultative qui spécifie le projet dans lequel se trouve l'instantané. Vous devez avoir l'autorisation d'accéder à la ressource d'instantané dans ce projet ;
  • [LOCATION] est un paramètre facultatif qui permet de sélectionner l'emplacement de stockage de l'image. 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 la source de l'image.

Pour plus d'informations sur l'ajout d'images, consultez la documentation de référence sur les images.

Abandonner une image

Compute Engine vous permet d'abandonner une image personnalisée dont vous êtes propriétaire en définissant l'état d'obsolescence sur l'image. Chaque état d'obsolescence entraîne une réponse différente du serveur, ce qui vous aide à transférer les utilisateurs des images non prises en charge de manière gérable. Utilisez la console, la commande gcloud ou la méthode API Compute Engine pour abandonner une image.

Console

  1. Dans Google Cloud Console, accédez à la page Créer une image.
    Accéder à la page Créer une image
  2. Cochez la case à gauche de l'image que vous souhaitez abandonner.
  3. Cliquez sur Abandonner en haut de la page. L'image est obsolète.

gcloud

Exécutez la commande gcloud compute images deprecate pour définir l'état d'obsolescence d'une image.

gcloud compute images deprecate [IMAGE_NAME] \
    --state [STATE] \
    --replacement [REPLACEMENT]

[IMAGE_NAME] est le nom de l'image à abandonner.

L'état d'obsolescence peut être l'un des suivants :

  • DEPRECATED - Cette image est considérée comme obsolète. Lorsque les utilisateurs tentent d'utiliser cette image, la requête aboutit, mais Compute Engine renvoie également un avertissement. Les nouveaux liens vers cette image sont toujours autorisés. Les familles d'images ne pointent plus vers cette image, même s'il s'agit de l'image la plus récente d'une famille.
  • OBSOLETE - Cette image est obsolète et les nouveaux utilisateurs ne peuvent pas l'utiliser. Compute Engine renvoie une erreur si les utilisateurs tentent d'utiliser l'image dans leurs requêtes. Les liens existants vers cette image sont toujours autorisés.
  • DELETED - Cette image est supprimée et les utilisateurs ne peuvent pas l'utiliser. Compute Engine renvoie une erreur si les utilisateurs tentent d'utiliser l'image.

API

Envoyez une requête POST à la méthode images().deprecate. Spécifiez le nom de l'image que vous souhaitez abandonner.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[RESOURCE_ID]/deprecate

{
  "deprecated": "[IMAGE_NAME]",
  "replacement": "[REPLACEMENT]"
}

où :

  • [PROJECT_ID] est le projet auquel appartient l'image ;
  • [IMAGE_NAME] est l'image que vous abandonnez ;
  • [REPLACEMENT] est l'image remplaçant celle qui est abandonnée.

Supprimer une image

Vous ne pouvez supprimer que des images personnalisées ajoutées par vous-mêmes ou une autre personne ayant accès au projet. Utilisez la console, la commande gcloud ou la méthode API Compute Engine pour supprimer l'image.

Console

  1. Dans Google Cloud Console, accédez à la page Créer une image.
    Accéder à la page Créer une image
  2. Cochez la case à gauche de l'image que vous souhaitez supprimer.
  3. Cliquez sur Supprimer en haut de la page. L'image est supprimée.

gcloud

Exécutez la commande gcloud compute images delete pour supprimer une image.

gcloud compute images delete [IMAGE_NAME]

[IMAGE_NAME] est le nom de l'image à supprimer.

API

Transmettez une requête POST à la méthode images().delete. Spécifiez le nom de l'image que vous souhaitez supprimer.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[RESOURCE_ID]

où :

  • [PROJECT_ID] est le projet auquel appartient l'image ;
  • [RESOURCE_ID] est le nom de l'image que vous souhaitez supprimer.

Définir des versions d'images dans une famille d'images

Utilisez des familles d'images pour simplifier la gestion des versions d'images. Ajoutez une image à une famille d'images pour la définir comme la version d'image la plus récente. Si vous pensez que vous devez restaurer une version précédente de la famille d'images, abandonnez l'image la plus récente de la famille.

Sinon, vous pouvez spécifier l'emplacement de stockage de l'image, à l'aide de la console, de la commande gcloud compute images create avec l'indicateur --storageLocation, ou de la méthode API images().insert.

Par exemple, créez une image nommée image-v1 dans le cadre d'une famille d'images.

Console

  1. Dans Google Cloud Console, accédez à la page Créer une image.
    Accéder à la page Créer une image
  2. Indiquez le Nom de votre image.
  3. Spécifiez la Source à partir de laquelle vous souhaitez créer une image. Il peut s'agir d'un disque persistant, d'un instantané, d'une autre image ou d'un fichier au format disk.raw dans Google Cloud Storage.
  4. Indiquez l'Emplacement dans lequel vous allez stocker l'image. Choisissez l'emplacement de stockage de votre image dans le menu déroulant Basé sur l'emplacement du disque source (par défaut). 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 la source de l'image.

  5. Spécifiez les propriétés de votre image. Par exemple, vous pouvez spécifier le nom de la famille d'images my-image-family pour votre image afin de l'organiser dans une famille d'images.

  6. Si vous créez une image à partir d'un disque associé à une image en cours d'exécution, cochez l'option "Force creation from running instance" (Forcer la création à partir de l'instance en cours d'exécution) pour confirmer que vous souhaitez créer l'image pendant l'exécution de l'instance.

  7. Cliquez sur Créer pour créer l'image.

gcloud

gcloud compute images create image-v1 \
    --source-disk disk-1 \
    --source-disk-zone us-central1-f \
    --family my-image-family \

La famille d'images pointe vers image-v1. Ajoutez une deuxième image à la famille :

gcloud compute images create image-v2 \
    --source-disk disk-2 \
    --source-disk-zone us-central1-f \
    --family my-image-family \

API

Envoyez une requête POST à la méthode images().insert. Spécifiez la famille d'images dans le corps de la requête.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "image-v2",
  "sourceDisk": "/zones/us-central1-f/disks/disk-2",
  "family":"my-image-family",

}

La famille d'images pointe vers image-v2, car il s'agit de l'image la plus récente que vous lui avez ajoutée.

gcloud

Vous pouvez voir vers quelle image pointe une famille en exécutant la commande gcloud compute images describe-from-family.

Exemple :

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v2
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

API

Envoyez une requête GET à la méthode images().getFromFamily. Spécifiez la famille d'images dans le corps de la requête.

GET https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/family

{
  "resourceId":"my-image-family",

}

Si vous souhaitez effectuer un rollback de la famille d'images pour qu'elle ne pointe plus vers image-v2, abandonnez pour que la famille pointe de nouveau vers image-v1.

gcloud compute images deprecate image-v2 \
    --state DEPRECATED \
    --replacement image-v1

Assurez-vous que la famille d'images pointe bien vers image-v1.

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v1
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

Activer des fonctionnalités d'un système d'exploitation invité sur des images personnalisées

Vous pouvez définir le paramètre guestOsFeatures lorsque vous créez une image personnalisée. Ce paramètre active une ou plusieurs fonctionnalités des instances de machine virtuelle qui utilisent l'image pour leurs disques de démarrage. Les fonctionnalités suivantes sont disponibles :

  • MULTI_IP_SUBNET. Pour configurer des interfaces avec un masque de réseau autre que /32.
  • SECURE_BOOT. Active l'option démarrage sécurisé UEFI, qui empêche les logiciels non signés de démarrer et les pilotes non signés de se charger sur l'instance de VM. Après avoir défini ce paramètre, vous pouvez activer la fonctionnalité de démarrage sécurisé lors de la création de l'instance de VM.
  • UEFI_COMPATIBLE. Active le démarrage à l'aide du micrologiciel UEFI.
  • VIRTIO_SCSI_MULTIQUEUE. Active les capacités SCSI à files d'attente multiples pour les périphériques SSD locaux. Cette option est une alternative à NVMe.
    • Pour les images Linux, vous pouvez activer VIRTIO_SCSI_MULTIQUEUE sur les images avec les versions de noyau 3.17 et les versions ultérieures.
    • Pour les images Windows, vous pouvez activer VIRTIO_SCSI_MULTIQUEUE sur les images dotées de la version 1.2.0.1621 du pilote ou une version ultérieure.
  • WINDOWS. Requis pour les images Windows Server. Les nouvelles images publiques de Windows Server incluent le paramètre WINDOWS pour indiquer qu'il s'agit d'une image Windows.

Utilisez l'outil de ligne de commande gcloud ou l'API pour activer les fonctionnalités du système d'exploitation invité sur vos images personnalisées.

gcloud

Exécutez la commande gcloud compute images create pour créer une image personnalisée à partir de l'une de vos images personnalisées existantes, tout en incluant l'option --guest-os-features.

gcloud compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --guest-os-features="[FEATURE_ID],..." \
  --storage-location [LOCATION]

où :

  • [IMAGE_NAME] est le nom de la nouvelle image que vous souhaitez créer ;
  • [SOURCE_IMAGE] est l'image à partir de laquelle vous voulez créer l'image ;
  • [IMAGE_PROJECT] est un paramètre facultatif qui spécifie le projet dans lequel se trouve l'image source (utilisez ce paramètre si vous souhaitez copier une image d'un autre projet) ;
  • [FEATURE_ID] est l'identifiant de l'une des fonctionnalités disponibles de l'OS invité. Vous pouvez spécifier plusieurs entités sous forme de liste séparée par des virgules ;
  • [LOCATION] est une option facultative qui permet 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.

API

Envoyez une requête POST à la méthode images().insert, une URL dans le corps de la requête pointant vers l'objet source à partir duquel vous souhaitez créer l'image. Remplacez le projet et la zone par votre propre ID de projet et la zone du disque persistant.

Créer une image à partir d'un disque persistant :

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
 "name": "[IMAGE_NAME]",
 "sourceImage": "projects/[IMAGE_PROJECT]/global/images/[SOURCE_IMAGE]",
 "storageLocations": "[LOCATION]",
 "guestOsFeatures": [
  {
   "type": "[FEATURE_ID]"
  }
 ]
}

où :

  • [IMAGE_NAME] est le nom de la nouvelle image que vous souhaitez créer ;
  • [SOURCE_IMAGE] est l'image à partir de laquelle vous voulez créer l'image ;
  • [IMAGE_PROJECT] est un paramètre qui spécifie le projet dans lequel se trouve l'image source ;
  • [LOCATION] est un paramètre facultatif qui permet de sélectionner l'emplacement de stockage de votre image. 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 ;
  • [FEATURE_ID] est l'identifiant de l'une des fonctionnalités disponibles de l'OS invité. Vous pouvez spécifier plusieurs entités sous forme de liste d'éléments séparés par une virgule.

Pour plus d'informations sur l'ajout d'images, consultez la documentation de référence sur les images.

Étapes suivantes

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

Envoyer des commentaires concernant…

Documentation Compute Engine