Créer une instance de VM à partir d'un modèle d'instance

Cette page explique comment utiliser un modèle d'instance pour créer une instance de VM. Un modèle d'instance est une ressource API qui définit les propriétés des instances de VM. Vous définissez des propriétés telles que le type de machine, l'image de l'OS, les configurations du disque persistant, les métadonnées, les scripts de démarrage, etc., dans un modèle d'instance puis vous pouvez utiliser ce modèle d'instance pour créer des instances de VM individuelles ou des groupes d'instances gérés.

Lorsque vous créez une instance de VM à partir d'un modèle d'instance, le comportement par défaut consiste à créer une instance de VM identique aux propriétés spécifiées dans le modèle, à l'exception du nom de l'instance de VM et de la zone dans laquelle l'instance se situera. Vous pouvez également remplacer certains champs lors de la création de l'instance si vous souhaitez modifier certaines propriétés du modèle d'instance pour des utilisations spécifiques.

Dans le présent document, nous partons du principe que vous disposez d'un modèle d'instance prêt à être utilisé. Si vous n'avez pas de modèle d'instance, suivez les instructions afin de créer un modèle d'instance.

Avant de commencer

Créer une instance de VM à partir d'un modèle d'instance

Pour créer une instance respectant scrupuleusement le modèle d'instance, suivez les instructions suivantes.

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'un modèle.
  4. Sélectionnez votre modèle, puis cliquez sur Continuer.
  5. Spécifiez le nom de l'instance et effectuez des personnalisations si nécessaire.
  6. Cliquez sur Créer. Lisez Créer une instance pour en savoir plus sur la configuration.

gcloud

Avec gcloud compute, utilisez la commande instances create que vous utiliseriez pour créer une instance normale, mais ajoutez le paramètre --source-instance-template :

gcloud compute instances create [INSTANCE_NAME] --source-instance-template [INSTANCE_TEMPLATE_NAME]

Où :

  • [INSTANCE_NAME] est le nom de l'instance.
  • [INSTANCE_TEMPLATE_NAME] est le nom du modèle d'instance à utiliser.

    Exemple :

    gcloud compute instances create example-instance --source-instance-template my-instance-template

API

Dans l'API, composez une requête normale pour créer une instance, mais incluez le paramètre de requête sourceInstanceTemplate suivi d'un chemin d'accès complet vers un modèle d'instance.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances?sourceInstanceTemplate=[INSTANCE_TEMPLATE_NAME]

Dans le corps de la requête, indiquez un name pour l'instance de VM :

{ "name": "example-instance" }

Par exemple, l'extrait suivant inclut un chemin d'accès complet au modèle : https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?sourceInstanceTemplate=https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template

{ "name": "example-instance" }

Créer une instance de VM à partir d'un modèle d'instance avec remplacements

Lorsque vous utilisez un modèle d'instance pour démarrer une instance de VM, le comportement par défaut consiste à créer une instance de VM exactement telle que décrite dans le modèle d'instance, à l'exception du nom et de la zone de l'instance.

Si vous souhaitez créer une instance principalement basée sur un modèle d'instance, mais avec quelques modifications, vous pouvez utiliser le comportement de remplacement. Pour ce faire, vous transmettez des attributs à remplacer dans le modèle d'instance existant lors de la création de l'instance.

gcloud

À l'aide de l'outil gcloud, exécutez une requête pour créer une instance avec le paramètre --source-instance-template et remplacez toute propriété souhaitée par le paramètre gcloud approprié. Pour afficher la liste des paramètres applicables, consultez la documentation de référence gcloud.

Par exemple, pour remplacer le type de machine, les métadonnées, le système d'exploitation, un disque persistant de démarrage et un disque secondaire d'un modèle d'instance, précisez les indicateurs suivants :

gcloud compute instances create example-instance --source-instance-template example-instance \
    --machine-type n1-standard-2 --image-family debian-8 --image-project debian-cloud \
    --metadata bread=butter --disk=boot=no,name=my-override-disk

API

Dans l'API, utilisez le paramètre de requête sourceInstanceTemplate et fournissez les champs que vous souhaitez remplacer dans le corps de la requête lors de l'élaboration d'une requête normale pour créer une instance.

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

Notamment :

  • Si vous remplacez un champ primitif, le champ primitif correspondant du modèle d'instance sera remplacé par la valeur du champ primitif de la requête. Les champs primitifs comprennent machineType, sourceImage, name, etc.
  • Si vous remplacez un champ répété, toutes les valeurs répétées de cette propriété seront 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 sera 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.

Par exemple, supposons que vous disposiez d'un modèle d'instance doté de deux disques non amorçables, mais que vous souhaitiez remplacer l'un d'entre eux. Vous devez fournir la spécification complète des disks dans votre requête, y compris les disques que vous souhaitez conserver.

L'URL de cette requête :

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances?sourceInstanceTemplate=https://www.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template

Le corps de la requête :

{
  "disks": [
    {
      # Since you are overriding the repeated disk property, you must
      # specify a boot disk in the request, even if it is already
      # specified in the instance template
      "autoDelete": true,
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-8"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    },
    {
      # New disk you want to use
      "autoDelete": false,
      "boot": false,
      "mode": "READ_WRITE",
      "source": "zones/us-central1-f/disks/my-override-disk",
      "type": "PERSISTENT"
    },
    {
       # Assume this disk is already specified in instance template, but
       # you must specify it again since you are overriding the disks
       # property
      "autoDelete": false,
      "boot": false,
      "mode": "READ_WRITE",

      "source": "zones/us-central1-f/disks/my-other-disk-to-keep",
      "type": "PERSISTENT"
    }
  ],
  "machineType": "zones/us-central1-f/machineTypes/n1-standard-2",
  "name": "example-instance"
}

Étapes suivantes

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

Envoyer des commentaires concernant…

Documentation Compute Engine