Crea plantillas de instancias

En esta página, se describe cómo crear y administrar plantillas de instancias. Las plantillas de instancias permiten definir el tipo de máquina, la imagen de disco de arranque o la imagen del contenedor, la red y otras propiedades de instancia que se pueden usar cuando creas instancias de máquina virtual (VM). Puedes usar plantillas de instancias para crear instancias en un grupo de instancias administrado o crear instancias individuales.

Antes de comenzar

Crea una plantilla de instancias nueva

La mayoría de las propiedades de instancia que puedes definir en una solicitud a la API normal para crear una instancia de VM individual, se pueden definir en la plantilla de instancias, incluidos los metadatos de instancia, las secuencias de comandos de inicio, los discos persistentes, las cuentas de servicio, etcétera.

Como mínimo, las mismas propiedades obligatorias que se requieren para crear una instancia también se requieren al momento de crear una plantilla de instancias. Para obtener una lista de los campos obligatorios, consulta la referencia instanceTemplates().insert.

Crea una plantilla de instancias a través de Google Cloud Platform Console, la herramienta de línea de comandos de gcloud o la API.

Console

  1. En GCP Console, ve a la página Plantillas de instancias.

    Ir a la página Plantillas de instancias

  2. Haga clic en Crear plantillas de instancias.
  3. Completa los campos que quieras-para tu plantilla de instancias o acepta los valores predeterminados. Los valores siguientes se proporcionan de forma predeterminada:

    • Tipo de máquina: n1-standard-1
    • Imagen: la última imagen de Debian
    • Disco de arranque: un nuevo disco de arranque estándar con el nombre de la instancia
    • Red de VPC: la red de VPC default
    • Dirección IP: una dirección IP externa efímera
  4. De manera opcional, puedes cambiar la configuración de VM protegida de la instancia si eliges una imagen compatible con una VM protegida. Para ello, sigue estos pasos:

    1. Haz clic en la pestaña Seguridad en la sección Administración, seguridad, discos, Herramientas de redes, instancia única.
    2. Si quieres inhabilitar el inicio seguro, desmarca la casilla de verificación Activar inicio seguro. El inicio seguro ayuda a proteger tus instancias de VM de software malicioso y los rootkits de nivel de inicio y kernel. Para obtener más información, consulta la documentación sobre el inicio seguro.
    3. Si quieres inhabilitar el módulo de plataforma segura virtual (vTPM), desmarca la casilla de verificación Activar vTPM. El vTPM habilita el inicio medido, que valida la integridad previa al inicio y la integridad de inicio de la VM. Para obtener más información, consulta la documentación sobre el Módulo de plataforma segura virtual (vTPM).

    4. Si quieres inhabilitar la supervisión de integridad, desmarca la casilla de verificación Activar supervisión de integridad. La supervisión de integridad te permite supervisar la integridad del inicio de tus instancias de VM protegidas mediante Stackdriver. Para obtener más información, consulta la documentación sobre la supervisión de integridad.

  5. Si lo deseas, haz clic en las pestañas de la sección administración, seguridad, discos, Herramientas de redes, instancia única para personalizar aún más tu plantilla. Por ejemplo, puedes agregar hasta 15 discos secundarios que no sean de arranque.

  6. Otra opción es hacer clic en REST equivalente en la parte inferior de la página para ver el cuerpo de la solicitud REST, que incluye la representación JSON de tu plantillas de instancias.

  7. Haz clic en Crear para crear la plantilla.

gcloud

En gcloud compute, crea una plantilla de instancias con el comando instance-templates create:

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME]

en este, se reemplaza [INSTANCE_TEMPLATE_NAME] por el nombre deseado de la plantilla de instancias.

Si no proporcionas una configuración de plantilla explícita, gcloud compute crea una plantilla con los valores predeterminados siguientes:

  • Tipo de máquina: n1-standard-1
  • Imagen: la última imagen de Debian
  • Disco de arranque: un nuevo disco de arranque estándar con el nombre de la instancia
  • Red: la red de VPC default
  • Dirección IP: una dirección IP externa efímera

También puedes proporcionar de manera explícita estos ajustes de configuración. Por ejemplo:

gcloud compute instance-templates create example-template-custom \
    --machine-type n1-standard-4 \
    --image-family debian-9 \
    --image-project debian-cloud \
    --boot-disk-size 250GB

Puedes agregar hasta 15 discos secundarios que no sean de arranque. Especifica la marca --create-disk para cada disco secundario que crees. Para crear discos secundarios a partir de una imagen pública o de stock, especifica las propiedades image y image-project en la marca --create-disk. Para crear un disco en blanco, no incluyas estas propiedades. De manera opcional, puedes incluir propiedades para el disco size y type.

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \
    --create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB]

en el que:

  • [INSTANCE_TEMPLATE_NAME] es el nombre de la plantilla nueva.
  • [DISK_IMAGE] es la imagen de origen para el disco secundario. Si quieres obtener una lista de las imágenes disponibles, ejecuta gcloud compute images list. Para los discos en blanco, no especifiques una imagen de disco ni un proyecto de imagen.
  • [DISK_IMAGE_PROJECT] es el proyecto de imagen al que pertenece la imagen de disco. Para los discos en blanco, no especifiques una imagen de disco ni un proyecto de imagen.
  • [SIZE_GB] es el tamaño del disco secundario.

Si eliges una imagen que admite una VM protegida, puedes cambiar de manera opcional la configuración de VM protegida de la instancia con una de las marcas siguientes:

  • --no-shielded-secure-boot: inhabilita el inicio seguro. El inicio seguro ayuda a proteger tus instancias de VM de software malicioso y los rootkits de nivel de inicio y kernel. Para obtener más información, consulta la documentación sobre el inicio seguro.
  • --no-shielded-vtpm: inhabilita el módulo de plataforma segura virtual (vTPM). El vTPM habilita el inicio medido, que valida la integridad previa al inicio y la integridad de inicio de la VM. Para obtener más información, consulta la documentación sobre el Módulo de plataforma segura virtual (vTPM).

  • --no-shielded-integrity-monitoring: inhabilita la supervisión de integridad. Esta función te permite supervisar la integridad de inicio de tus instancias de VM protegida mediante Stackdriver. Para obtener más información, consulta la documentación sobre la supervisión de integridad.

Puedes ver una lista de marcas disponibles en la referencia de gcloud compute.

Una plantilla con la configuración predeterminada podría tener el aspecto siguiente:

gcloud compute instance-templates describe example-template
creationTimestamp: '2014-09-10T16:18:32.042-07:00'
description: ''
id: '6057583701980539406'
kind: compute#instanceTemplate
name: example-template
properties:
  canIpForward: false
  disks:
  - autoDelete: true
    boot: true
    initializeParams:
      sourceImage: https://compute.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9
    kind: compute#attachedDisk
    mode: READ_WRITE
    type: PERSISTENT
  machineType: n1-standard-1
  networkInterfaces:
  - accessConfigs:
    - kind: compute#accessConfig
      name: external-nat
      type: ONE_TO_ONE_NAT
    network: https://compute.googleapis.com/compute/v1/projects/myproject/global/networks/default
  scheduling:
    automaticRestart: true
    onHostMaintenance: MIGRATE
  serviceAccounts:
  - email: default
    scopes:
    - https://www.googleapis.com/auth/devstorage.read_only
selfLink: https://compute.googleapis.com/compute/v1/projects/myproject/global/instanceTemplates/example-template

API

En la API de la plantilla de instancias, debes definir de forma explícita todos los campos de configuración obligatorios, como se describe en la documentación de instanceTemplates().insert. Por ejemplo, una plantilla de instancias con los campos mínimos obligatorios tiene el aspecto siguiente:

{
"name": "example-template",
"properties": {
  "machineType": "n1-standard-4",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

En la propiedad disks, debes proporcionar la propiedad initializeParams a fin de crear discos de arranque persistentes nuevos para cada instancia o puedes proporcionar la propiedad source y, así, conectar un disco de arranque persistente existente. Si conectas un disco de arranque existente, solo se puede crear una instancia a partir de tu plantilla.

Puedes agregar hasta 15 discos secundarios que no sean de arranque con la propiedad initializeParams para cada disco adicional. Crea discos adicionales con una imagen pública o privada. Para agregar discos en blanco, no especifiques una sourceImage. De manera opcional, puedes incluir las propiedades diskSizeGb, diskType y labels.

Si eliges una imagen compatible con una VM protegida, puedes cambiar de manera opcional la configuración de VM protegida de la instancia con los elementos siguientes del cuerpo de solicitud booleana:

  • enableSecureBoot: habilita o inhabilita el inicio seguro. El inicio seguro ayuda a proteger tus instancias de VM de software malicioso y los rootkits de nivel de inicio y kernel. Para obtener más información, consulta la documentación sobre el inicio seguro.
  • enableVtpm: habilita o inhabilita el módulo de plataforma segura virtual (vTPM). El vTPM habilita el inicio medido, que valida la integridad previa al inicio y la integridad de inicio de la VM. Para obtener más información, consulta la documentación sobre el Módulo de plataforma segura virtual (vTPM).
  • enableIntegrityMonitoring: habilita o inhabilita la supervisión de integridad. La supervisión de integridad te permite supervisar y verificar la integridad de inicio del entorno de ejecución de las instancias de VM protegida mediante informes de Stackdriver. Para obtener más información, consulta la documentación sobre la supervisión de integridad.

Para obtener más información sobre todos los campos posibles, consulta la documentación de referencia.

Crea una plantilla de instancias basada en una instancia existente

Puedes usar las marcas --source-instance y --source-instance-zone para guardar la configuración de una instancia de VM existente como una plantilla de instancias. De forma opcional, puedes anular cómo se definen los discos fuente para la instancia en la plantilla.

En la tabla siguiente, se muestran las opciones para anular cómo se definen los discos en la plantilla.

Tipo de disco Opciones
Disco de arranque
  • [Predeterminado] Usa la misma imagen fuente o familia de imágenes que se usó para crear el disco de arranque en la instancia de origen.
  • Usa la URL de cualquier imagen (personalizada o pública).
Otros discos persistentes de lectura y escritura
  • [Predeterminado] Usa la misma imagen de origen o familia de imágenes de origen que se usó para crear el disco en la instancia de origen. Nota: Si el disco de la instancia de origen no tiene una propiedad de imagen de origen o familia de imágenes de origen, se incluye en la plantilla como un disco en blanco.
  • Usa la URL de cualquier imagen (personalizada o pública).
  • De lo contrario, usa un disco en blanco en la plantilla. Cuando la plantilla se usa para crear una instancia nueva, este disco se crea sin formato. Debes formatear y activar el disco en una secuencia de comandos de inicio antes de poder usarlo en una configuración escalable.
  • No incluyas el disco.
Discos de solo lectura
  • [Predeterminado] Incluye el disco en modo de solo lectura.
  • No incluyas el disco.
SSD locales
  • [Predeterminado] Incluye un SSD local en blanco. Cuando la plantilla se usa para crear una instancia nueva, este disco se crea sin formato. Debes formatear y activar el disco en una secuencia de comandos de inicio antes de usarlo en una configuración escalable.

Para cada disco, también puedes anular el atributo auto-delete a fin de especificar si el disco se debe borrar cuando se borra su instancia asociada.

Según la configuración predeterminada, si no se especifican opciones de anulación, la configuración del disco en la plantilla coincide con la instancia de origen.

gcloud

Para obtener una lista de todas las marcas, consulta el comando gcloud instance-templates create.

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \
    --source-instance=[SOURCE_INSTANCE] \
    --source-instance-zone=[SOURCE_INSTANCE_ZONE] \
    [--configure-disk= \
        device-name=[SOURCE_DISK], \
        instantiate-from=[INSTANTIATE_FROM], \
        auto-delete=[AUTO_DELETE]]

en el que:

  • [INSTANCE_TEMPLATE_NAME] es el nombre de la plantilla que se creará.
  • [SOURCE_INSTANCE] es el nombre de la instancia que se usará como modelo para la plantilla nueva.
  • [SOURCE_INSTANCE_ZONE] es la zona que contiene la instancia de origen.
  • [SOURCE_DISK] es el nombre de un disco de instancia de origen que quieres anular dentro de la plantilla.
  • [INSTANTIATE_FROM] especifica si se debe incluir el disco y qué imagen usar. Los valores válidos dependen del tipo de disco:
    • source-image o source-image-family (válidos solo para el inicio y otros discos persistentes de lectura y escritura).
    • custom-image (válido solo para inicio y otros discos persistentes de lectura y escritura). Si se especifica, también se debe especificar la ruta o URL de la imagen personalizada, como se muestra en el ejemplo siguiente.
    • attach-read-only (válido solo para discos de solo lectura).
    • blank (válido solo para los discos persistentes que no son de arranque y los SSD locales). Si se especifica, entonces, cuando se usa la plantilla para crear una instancia nueva, el disco se crea sin formato. Debes formatear y activar el disco en una secuencia de comandos de inicio antes de poder usarlo en una configuración escalable.
    • do-not-include (válido solo para los discos persistentes que no son de arranque y los discos de solo lectura).
    • blank (válido solo para los discos persistentes que no son de arranque y los discos de solo lectura).
  • [AUTO_DELETE] especifica si el disco se borra de forma automática cuando se borra la instancia. Los valores válidos son false, no, true y yes.

Por ejemplo, con el comando siguiente, se crea una plantilla de instancias basada en my-source-instance, con la opción de usar la imagen original de data-disk-a, pero se establece el borrado automático para true y se reemplaza data-disk-b por una imagen personalizada.

gcloud compute instance-templates create my-instance-template  \
    --source-instance my-source-instance \
    --configure-disk=device-name=data-disk-a,instantiate-from=source-image, \
      auto-delete=true
    --configure-disk=device-name=data-disk-b,instantiate-from=custom-image, \
      custom-image=projects/coreos-cloud/global/images/coreos-alpha-1492-3-0-v20170810

API

Para obtener una lista de todas las marcas, consulta los documentos de la API de InstanceTemplates.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/instanceTemplates
{
  "name": "[INSTANCE_TEMPLATE_NAME]",
  "sourceInstance": "zones/[SOURCE_INSTANCE_ZONE]/instances/[SOURCE_INSTANCE]",
  "sourceInstanceParams": {
    "diskConfigs": [
      {
        "deviceName": "[SOURCE_DISK]",
        "instantiateFrom": "[INSTANTIATE_FROM]"
      }
    ]
  }
}

en el que:

  • [PROJECT_ID] es el ID del proyecto para la solicitud.
  • [INSTANCE_TEMPLATE_NAME] es el nombre de la plantilla nueva.
  • [SOURCE_INSTANCE_ZONE] es la zona de la instancia de origen.
  • [SOURCE_INSTANCE] es el nombre de la instancia de origen que se usará como modelo para esta plantilla de instancias.
  • [SOURCE_DISK] es el nombre de un disco de instancia de origen que quieres anular dentro de la plantilla.
  • [INSTANTIATE_FROM] especifica si se debe incluir el disco y qué imagen usar. Los valores válidos dependen del tipo de disco:
    • source-image o source-image-family (válidos solo para el inicio y otros discos persistentes de lectura y escritura).
    • custom-image (válido solo para inicio y otros discos persistentes de lectura y escritura). Si se especifica, también se debe especificar la ruta o URL de la imagen personalizada, como se muestra en el ejemplo siguiente.
    • attach-read-only (válido solo para discos de solo lectura).
    • blank (válido solo para los discos persistentes que no son de arranque y los SSD locales). Si se especifica, entonces, cuando se usa la plantilla para crear una instancia nueva, el disco se crea sin formato. Debes formatear y activar el disco en una secuencia de comandos de inicio antes de poder usarlo en una configuración escalable.
    • do-not-include (válido solo para los discos persistentes que no son de arranque y los discos de solo lectura).

En el ejemplo siguiente, se crea una plantilla de instancias nueva basada en my-source-instance. En la plantilla de instancias, la imagen de data-disk-a se reemplaza por projects/coreos-cloud/global/images/coreos-alpha-1492-3-0-v20170810.

POST https://compute.googleapis.com/compute/v1/projects/my_project/global/instanceTemplates
{
  "name": "my-instance-template",
  "sourceInstance": "zones/us-central1-a/instances/my-source-instance",
  "sourceInstanceParams":
  {
    "diskConfigs":
    [
      {
        "deviceName": "data-disk-a",
        "instantiateFrom": "custom-image",
        "customImage": "projects/coreos-cloud/global/images/coreos-alpha-1492-3-0-v20170810"
      }
    ]
  }
}

Crea una plantilla de instancias con una imagen de contenedor

Puedes especificar una imagen de contenedor en una plantilla de instancias. De manera predeterminada, Compute Engine también incluye en la plantilla una imagen de Container-Optimized OS con Docker instalado. Cuando usas la plantilla para crear una instancia nueva, el contenedor se inicia de manera automática cuando se inicializa la instancia.

Console

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

    Ir a la página Plantillas de instancias

  2. Haga clic en Crear plantillas de instancias.
  3. En la sección Contenedor, selecciona la casilla de verificación Implementar una imagen de contenedor para esta instancia de VM.
  4. Especifica la Imagen de contenedor que se usará.
    • Por ejemplo, puedes especificar gcr.io/cloud-marketplace/google/nginx1:1.12 para seleccionar una imagen de contenedor NGINX 1.12 desde GCP Marketplace.
    • Si usas una imagen de contenedor de Docker Hub, siempre debes especificar el nombre completo de la imagen de Docker. Por ejemplo, especifica el nombre de imagen siguiente para implementar una imagen de contenedor de Apache: docker.io/httpd:2.4.
  5. De manera opcional, haz clic en Opciones avanzadas de contenedor. Si quieres obtener más información, consulta Configura opciones para ejecutar tu contenedor.
  6. Haz clic en Crear.

gcloud

Usa el comando de gcloud compute instance-templates create-with-container:

gcloud compute instance-templates create-with-container [INSTANCE_TEMPLATE_NAME] \
     --container-image [CONTAINER_IMAGE]

en el que:

  • [INSTANCE_TEMPLATE_NAME] es el nombre de la plantilla que se creará.
  • [CONTAINER_IMAGE] es el nombre completo de la imagen del contenedor que se usará.

Por ejemplo, con el comando siguiente, se crea una plantilla de instancias nueva llamada nginx-vm. Una instancia de VM creada a partir de esta plantilla inicia y ejecuta la imagen de contenedor, gcr.io/cloud-marketplace/google/nginx1:1.12, cuando se inicia la VM.

 gcloud compute instance-templates create-with-container nginx-vm \
     --container-image gcr.io/cloud-marketplace/google/nginx1:1.12

También puedes configurar las opciones para ejecutar tu contenedor.

Crea una plantilla de instancias que especifique una subred

Los comandos de la plantilla de instancias tienen marcas --subnet y --region que colocan instancias nuevas en la subred que elijas. La marca --subnet requiere la marca --region.

gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \
    --region [REGION] \
    --subnet [SUBNET_NAME_OR_URL]

en el que:

  • [INSTANCE_TEMPLATE_NAME] es el nombre que quieres asignar a la plantilla de instancias.
  • [REGION] es la región de la subred.
  • [SUBNET_NAME_OR_URL] es el nombre de la subred o su URL. Nota: Si usas el nombre de la subred, Google la encontrará en la región de destino (siempre que esté allí); sin embargo, si usas la URL de la subred, la plantilla de instancias solo se puede usar para crear instancias en la región específica que está asociada a la URL de subred.

En el ejemplo siguiente, se crea una plantilla llamada template-qa que solo crea instancias en la subred subnet-us-qa.

gcloud compute instance-templates create template-qa \
    --region us-central1 \
    --subnet subnet-us-qa

Created [https://compute.googleapis.com/compute/latest/projects/PROJECT_ID/global/instanceTemplates/template-qa].
NAME        MACHINE_TYPE  PREEMPTIBLE CREATION_TIMESTAMP
template-qa n1-standard-1             2015-12-23T20:34:00.791-07:00

Usar esta plantilla en la creación de instancias para un grupo de instancias administrado (con o sin ajuste de escala automático) crea de forma automática la instancia en la región y subred especificadas. Esto te permite controlar la subred de las instancias nuevas creadas para el balanceo de cargas.

Usa imágenes personalizadas o públicas en tus plantillas de instancias

Debido a que los grupos de instancias administrados están diseñados para agregar y quitar instancias con frecuencia, es útil crear una imagen personalizada y especificarla en la plantilla de instancias. Prepara tu imagen con las apps y la configuración que tus instancias necesitan para que no tengas que configurar de forma manual aquellos elementos de las instancias individuales en el grupo de instancias administrado.

De modo alternativo, puedes crear una plantilla de instancias que use una imagen pública y una secuencia de comandos de inicio para preparar la instancia después de que comience a ejecutarse. Las imágenes personalizadas son más deterministas y se inician con más velocidad que las instancias con secuencias de comandos de inicio. Sin embargo, las secuencias de comandos de inicio son más flexibles y te permiten actualizar las apps y la configuración de tus instancias con más facilidad.

Actualización de una plantilla de instancias

No es posible actualizar una plantilla de instancias existente o modificar una plantilla de instancias después de crearla. Si una plantilla de instancias se vence o si necesitas aplicar cambios en la configuración, debes crear una plantilla de instancias nueva.

Próximos pasos

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

Enviar comentarios sobre...

Documentación de Compute Engine