Crea una instancia de VM a partir de una plantilla de instancias

En esta página, se explica cómo usar una plantilla de instancias para crear una instancia de VM. Una plantilla de instancias es un recurso de API que define las propiedades de las instancias de VM. Define propiedades como tipo de máquina, imagen de SO, configuración del disco persistente, metadatos, secuencias de comandos de inicio y mucho más en una plantilla de instancias, y luego puedes usar la plantilla de instancias para crear instancias de VM individuales o grupos de instancias administrados.

Cuando creas una instancia de VM a partir de una plantilla de instancias, el comportamiento predeterminado es crear una instancia de VM idéntica a las propiedades especificadas en la plantilla, excepto el nombre de la instancia de VM y la zona donde se alojará la instancia. Otra opción es anular algunos campos de forma opcional durante la creación de la instancia si deseas cambiar algunas propiedades de la plantilla de instancias para usos específicos.

En este documento, se supone que tienes una plantilla de instancias lista para usar. Si no tienes una plantilla de instancias, sigue las instrucciones para crear una plantilla de instancias nueva.

Antes de comenzar

Crea una instancia de VM a partir de una plantilla de instancias

Para crear una instancia tal y como se describe en la plantilla de instancias, sigue estas instrucciones.

Console

  1. Ve a la página de instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. Haz clic en Instancia de VM nueva a partir de una plantilla.
  4. Selecciona la plantilla y haz clic en Continuar.
  5. Especifica un nombre para tu instancia y realiza más personalizaciones según sea necesario.
  6. Haz clic en Crear. Lee la sección Crea una instancia para obtener más detalles sobre la configuración.

gcloud

Con gcloud compute, usa el mismo comando instances create que usarías para crear una instancia normal, pero agrega la marca --source-instance-template:

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

donde:

  • [INSTANCE_NAME] es el nombre de la instancia.
  • [INSTANCE_TEMPLATE_NAME] es el nombre de la plantilla de instancias que se utilizará.

    Por ejemplo:

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

API

En la API, realiza una solicitud normal para crear una instancia, pero incluye el parámetro de búsqueda sourceInstanceTemplate seguido de una ruta de acceso calificada a una plantilla de instancias.

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

En el cuerpo de la solicitud, proporciona un name para la instancia de VM:

{ "name": "example-instance" }

Por ejemplo, el siguiente fragmento incluye una ruta de acceso completamente calificada en la plantilla: https://compute.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-instance-template.

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

{ "name": "example-instance" }

Crea una instancia de VM a partir de una plantilla de instancias con anulaciones

Cuando utilizas una plantilla de instancias para iniciar una instancia de VM, el comportamiento predeterminado es crear una instancia de VM tal y como se describe en la plantilla de instancias, excepto el nombre y la zona.

Si deseas crear una instancia basada en principio en una plantilla de instancias, pero con algunos cambios, puedes usar el comportamiento de anulación. Si deseas usar el comportamiento de anulación, pasa los atributos a la anulación de la plantilla de instancias existente cuando crees la instancia.

gcloud

Con la herramienta de gcloud, realiza una solicitud para crear una instancia con la marca --source-instance-template y anula cualquier propiedad que desees con la marca de adecuada. Para ver una lista de marcas aplicables, revisa la referencia de gcloud.

Por ejemplo, para anular el tipo de máquina, los metadatos, el sistema operativo, un disco de arranque persistente y un disco secundario de una plantilla de instancias, proporciona las siguientes marcas:

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

En la API, usa el parámetros de búsqueda sourceInstanceTemplate y proporciona los campos que deseas anular en el cuerpo de la solicitud cuando realices una solicitud normal para crear una instancia.

El comportamiento de anulación en la API sigue las reglas de parche de combinación JSON, como se describe en RFC 7396.

Específicamente, ocurren las siguientes acciones:

  • Si anulas un campo primitivo, el campo primitivo correspondiente en la plantilla de instancias se reemplazará por el valor del campo primitivo en la solicitud. Los campos primitivos incluyen machineType, sourceImage, name y demás parámetros.
  • Si anulas un campo repetido, todos los valores repetidos de esa propiedad se reemplazarán por los valores correspondientes proporcionados en la solicitud. Por lo general, los campos repetidos son propiedades del tipo list. Por ejemplo, disks y networkInterfaces son campos repetidos.
  • Si anulas un nested object, el objeto de la plantilla de instancias se combinará con la especificación del objeto correspondiente en la solicitud. Ten en cuenta que, si un objeto anidado se aloja dentro de un campo repetido, el campo se trata de acuerdo con las reglas para campos repetidos. Las etiquetas son una excepción a esta regla y se tratan como un campo repetido, aunque sean del tipo object.

Por ejemplo, supongamos que tienes una plantilla de instancias con dos discos que no son de arranque, pero deseas anular uno de los discos. Debes proporcionar la especificación disks completa en tu solicitud, incluidos los discos que desees conservar.

URL de esta solicitud:

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

Cuerpo de la solicitud:

{
  "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"
}

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine