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 cuya función es definir las propiedades de las instancias de VM. Debes definir las propiedades como tipo de máquina, imagen de SO, ajustes de configuración del disco persistente, metadatos, secuencias de comandos de inicio y mucho más en una plantilla de instancias. Luego, podrás 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 proceso predeterminado es crear una instancia de VM idéntica a las propiedades especificadas de la plantilla, excepto el nombre de la instancia de VM y la zona en la que 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. En caso contrario, 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 como se describe en la plantilla de instancias, sigue estas instrucciones.

Console

  1. Ve a la página 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 aplica más personalizaciones según sea necesario.
  6. Haz clic en Crear. Lee 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]
    

En el ejemplo anterior, se ilustra lo siguiente:

  • [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 a 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 usas una plantilla de instancias para iniciar una instancia de VM, el proceso predeterminado es crear una instancia de VM tal como se describe en la plantilla de instancias, excepto por el nombre y la zona.

Si deseas crear una instancia basada principalmente en una plantilla de instancias, pero con algunos cambios, puedes usar el proceso de anulación. Para usar el proceso de anulación, debes transmitir los atributos que quieres anular 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 toda propiedad que desees con la marca de gcloud correspondiente. 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 persistente de arranque 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.

En el proceso de anulación en la API, se siguen las reglas de parche de combinación JSON, como se describe en RFC 7396.

En particular, ocurre lo siguiente:

  • Si anulas un campo primitivo, el campo primitivo correspondiente de la plantilla de instancias se reemplazará por el valor del campo primitivo de 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"
    }
    

Próximos pasos