Créer des instances à partir d'images système

Après avoir créé une image système, vous pouvez l'utiliser pour créer une instance de VM. Pour en savoir plus sur l'utilisation des images système, consultez la section Quand utiliser une image système.

Les images système contiennent la plupart des informations et des données nécessaires à la création d'une instance.

Elles ne sont pas modifiables. Cependant, lors de la création d'une instance basée sur une image système, vous pouvez remplacer presque toutes les propriétés de l'image système.

Vous pouvez créer des instances à partir d'images système à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud ou de l'API Compute Engine.

Avant de commencer

Créer une instance à partir d'une image système (sans remplacement)

Si vous souhaitez créer une instance entièrement basée sur l'image système sans modifier ses propriétés, utilisez cette méthode.

console

  1. Accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Cliquez sur Nouvelle instance de VM à partir d'une image système.
  4. Sélectionnez l'image système, puis cliquez sur Continuer.
  5. Indiquez un nom pour votre instance.
  6. Cliquez sur Créer.

gcloud

Créez une instance à partir d'une image système à l'aide de la commande gcloud beta compute instances create.

gcloud beta compute instances create VM_NAME \
    --zone ZONE \
    --source-machine-image SOURCE_MACHINE_IMAGE_NAME

Remplacez les éléments suivants :

  • VM_NAME : nom de votre nouvelle instance.
  • ZONE : zone que vous souhaitez utiliser pour votre nouvelle instance.
  • SOURCE_MACHINE_IMAGE_NAME : image système que vous souhaitez utiliser pour créer l'instance.

Exemple

Par exemple, vous pouvez utiliser la commande gcloud suivante pour créer une instance appelée my-instance dans la zone us-east1-b, à partir d'une image système appelée my-machine-image.

gcloud beta compute instances create my-instance \
    --zone us-east1-b \
    --source-machine-image my-machine-image

Une fois l'instance créée, le résultat ressemble à ce qui suit :

Created [https://www.googleapis.com/compute/beta/projects/project-12345/zones/us-east1-b/instances/my-instance].
NAME               ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
my-instance        us-east1-b  n1-standard-1               192.0.2.1   203.224.0.113  RUNNING

API

Dans l'API, envoyez une requête POST à la méthode instances.insert. Dans le corps de la requête, incluez les paramètres suivants :

POST https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • ZONE : zone que vous souhaitez utiliser pour votre nouvelle instance.
  • VM_NAME : nom de l'instance que vous souhaitez créer.
  • SOURCE_MACHINE_IMAGE_URL : URL complète ou partielle de l'image système que vous souhaitez utiliser pour créer l'instance. Par exemple, si vous disposez d'une image système appelée my-machine-image dans un projet appelé myProject, les URL suivantes sont valides :

    • https://www.googleapis.com/compute/v1/projects/myProject/global/global/machineImages/my-machine-image
    • projects/myProject/global/global/machineImages/my-machine-image
    • global/machineImages/my-machine-image

Créer une instance à partir d'une image système située dans un autre projet

Si vous souhaitez créer une instance à partir d'une image système située dans un autre projet, vous devez vous assurer que vous avez accès à l'image système et remplacer la propriété du compte de service de la nouvelle instance. Les sections suivantes décrivent comment créer une instance à partir d'une image système située dans un autre projet à l'aide de l'outil de ligne de commande gcloud.

  1. Accordez l'accès aux images système stockées dans un autre projet.

    Les autorisations peuvent être accordées sur le projet source ou sur l'image système. Pour accorder les autorisations sur l'image système à l'aide de l'outil de ligne de commande gcloud, exécutez la commande suivante :

    gcloud beta compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \
        --project=MACHINE_IMAGE_PROJECT \
        --member='email' \
        --role='roles/compute.admin'
    

    Remplacez les éléments suivants :

    • MACHINE_IMAGE_PROJECT : ID du projet contenant l'image système source.
    • MACHINE_IMAGE_NAME : nom de l'image système à laquelle vous souhaitez ajouter une liaison d'autorisation.
    • EMAIL : adresse e-mail du compte de service (serviceAccount) ou de l'utilisateur (user) qui crée la VM. Assurez-vous que le format de l'adresse e-mail inclut le préfixe requis, qui doit être l'un des éléments suivants :

      • user: : choisissez cette option si l'adresse e-mail est associée à un compte utilisateur.
      • serviceAccount: : choisissez cette option si l'adresse e-mail est associée à un compte de service. Exemple : serviceAccount:123456789000-compute@developer.gserviceaccount.com.

    Exemple

    Par exemple, si vous souhaitez ajouter une liaison compute.admin entre l'image système appelée my-machine-image et l'adresse e-mail du compte de service 123456789000-compute@developer.gserviceaccount.com, procédez comme suit :

    gcloud beta compute machine-images add-iam-policy-binding my-machine-image \
        --project=machine-image-project \
        --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \
        --role='roles/compute.admin'
    
  2. Créez une instance à partir d'une image système à l'aide de la commande gcloud beta compute instances create.

    gcloud beta compute instances create VM_NAME \
        --project=VM_PROJECT \
        --zone ZONE \
        --source-machine-image projects/PROJECT_ID/global/machineImages/MACHINE_IMAGE_NAME \
        --service-account service-account-email
    

    Remplacez les éléments suivants :

    • VM_PROJECT : ID du projet pour lequel vous souhaitez créer la VM.
    • VM_NAME : nom de votre nouvelle VM.
    • ZONE : zone que vous souhaitez utiliser pour votre nouvelle VM.
    • PROJECT_ID : ID du projet dans lequel se trouve l'image système.
    • MACHINE_IMAGE_NAME : image système que vous souhaitez utiliser pour créer la VM.
    • SERVICE_ACCOUNT : adresse e-mail du compte de service associé au projet dont dépend la VM.

      Exemple

      Par exemple, vous pouvez créer une instance nommée my-instance dans la zone us-east1-b, à partir d'une image système nommée my-machine-image et située dans le projet appelé vm-project.

      Le tag service-account spécifie le compte de service du projet de la VM. Si vous ne fournissez pas ce tag, le compte de service source ne peut pas être partagé entre les deux projets et l'opération échoue.

      gcloud beta compute instances create my-instance \
       --project=vm-project \
       --zone us-east1-b \
       --source-machine-image projects/project-67890/global/machineImages/my-machine-image \
       --service-account 123456789000-compute@developer.gserviceaccount.com
      

      Une fois l'instance créée, le résultat ressemble à ce qui suit :

      Created [https://www.googleapis.com/compute/beta/projects/project-12345/zones/us-east1-b/instances/my-instance].
      NAME               ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP   STATUS
      my-instance        us-east1-b  n1-standard-1               192.0.2.1   203.224.0.113  RUNNING
      

Créer une instance à partir d'une image système (avec des valeurs de remplacement de propriété)

Si vous souhaitez créer une instance principalement basée sur l'image système, mais lui apporter quelques modifications, vous pouvez utiliser le comportement de remplacement. Le comportement de remplacement consiste à transmettre des attributs afin de remplacer les propriétés d'image système existantes lors de la création de l'instance.

Vous pouvez remplacer la plupart des propriétés d'instance héritées de l'image système. Lorsque vous utilisez la fonctionnalité de remplacement, tenez compte de ce qui suit :

  • Si la VM source utilisée pour générer l'image système et la nouvelle instance de VM appartiennent au même projet et à la même région, les remarques suivantes s'appliquent :

    • La plupart des propriétés de l'instance source et de la nouvelle instance sont identiques. Certaines propriétés diffèrent, comme les adresses IP éphémères attribuées automatiquement.
    • Si l'instance de VM source existe toujours lorsque vous créez une instance, cette nouvelle instance ne peut pas utiliser le même nom et la même zone que l'instance source.
  • Si la VM source utilisée pour générer l'image système et la nouvelle instance de VM appartiennent au même projet, mais à des régions différentes, les remarques suivantes s'appliquent :

    • Vous devez remplacer toutes les ressources zonales et régionales de la nouvelle instance. Par exemple, si vous créez une instance de VM à partir d'une image système dont l'instance source appartenait à une autre région, vous devez remplacer les ressources régionales, telles que le sous-réseau et les règles de pare-feu régionales. Toutefois, le remplacement des ressources globales (telles que les équilibreurs de charge et les comptes de service) n'est pas nécessaire, sauf si vous souhaitez les modifier.

console

  1. Accédez à la page "Instances de VM".

    Accéder à la page Instances de VM

  2. Cliquez sur Créer une instance.
  3. Cliquez sur Nouvelle instance de VM à partir d'une image système.
  4. Sélectionnez l'image système, puis cliquez sur Continuer.
  5. Indiquez un nom pour votre instance.
  6. Mettez à jour les propriétés que vous souhaitez modifier.
  7. Cliquez sur Créer. Lisez Créer une instance pour en savoir plus sur la configuration.

gcloud

À l'aide de la commande gcloud beta compute instances create, créez une instance à partir d'une image système et ajoutez les propriétés que vous souhaitez remplacer.

Par exemple, vous pouvez utiliser la commande gcloud suivante pour créer une instance appelée my-instance dans la zone us-east1-b, à partir d'une image système appelée my-machine-image. Dans cet exemple, des remplacements sont appliqués pour modifier le type de machine et arrêter la stratégie de maintenance.

gcloud beta compute instances create my-instance \
    --zone us-east1-b \
    --source-machine-image my-machine-image \
    --machine-type n1-standard-2 \
    --maintenance-policy TERMINATE

API

Pour remplacer les propriétés de l'image système lors de la création de l'instance, utilisez l'API instances.insert(). Dans le corps de la requête, fournissez tous les champs que vous souhaitez remplacer.

Dans l'API, envoyez une requête POST à la méthode instances.insert. Dans le corps de la requête, incluez le paramètre sourceMachineImage et tous les remplacements nécessaires. Vous pouvez ajouter n'importe quelle propriété que vous auriez normalement définie lors de la création de l'instance. Par exemple, pour modifier le type de machine, votre appel d'API doit inclure le paramètre machineType.

POST https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE",
  "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • ZONE : zone que vous souhaitez utiliser pour votre nouvelle instance.
  • VM_NAME : nom de l'instance que vous souhaitez créer.
  • NEW_MACHINE_TYPE : type de machine que vous souhaitez utiliser pour la nouvelle instance.
  • SOURCE_MACHINE_IMAGE_URL : URL complète ou partielle de l'image système que vous souhaitez utiliser pour créer l'instance. Par exemple, si vous disposez d'une image système appelée my-machine-image dans un projet appelé myProject, les URL suivantes sont valides :

    • https://www.googleapis.com/compute/v1/projects/myProject/global/global/machineImages/my-machine-image
    • projects/myProject/global/global/machineImages/my-machine-image
    • global/machineImages/my-machine-image

Comportement de remplacement

Le comportement de remplacement dans l'API suit les règles des correctifs de fusion JSON, décrites dans le document RFC 7396. En résumé, les règles suivantes s'appliquent :

  • Si vous remplacez un champ primitif, le champ primitif correspondant dans le modèle est remplacé par la valeur du champ primitif dans la requête. Les champs primitifs incluent des paramètres tels que machineType et name.
  • Si vous remplacez un champ répété, toutes les valeurs répétées pour cette propriété sont remplacées par les valeurs correspondantes fournies dans la requête. Les champs répétés sont généralement des propriétés de type list. Par exemple, disks et networkInterfaces sont des champs répétés.
  • Si vous remplacez un objet imbriqué nested object, l'objet du modèle d'instance est fusionné avec la spécification d'objet correspondante de la requête. Notez que si un objet imbriqué se situe dans un champ répété, le champ est traité conformément aux règles s'appliquant aux champs répétés. Les étiquettes font exception à cette règle et sont traitées en tant que champ répété, même si elles sont de type object.

Étapes suivantes