Crear una instancia a partir de una imagen compartida


En este documento se explica cómo crear una instancia de Compute Engine a partir de una imagen personalizada compartida por otro proyecto.

Una instancia contiene un gestor de arranque, un sistema de archivos de arranque y una imagen del SO. Puedes crear imágenes personalizadas a partir de discos, imágenes o snapshots de origen, o bien a partir de imágenes almacenadas en Cloud Storage, y usar estas imágenes para crear instancias. De forma predeterminada, una imagen personalizada solo pertenece al proyecto en el que se ha creado. Si otro usuario ha compartido una imagen contigo, puedes usarla para crear una instancia.

Antes de empezar

  • Cuando se crean instancias a partir de imágenes mediante la CLI de Google Cloud o la API de Compute Engine, hay un límite de 20 instancias por segundo. Si necesitas crear un número mayor de instancias por segundo, solicita un ajuste de cuota para el recurso Imágenes.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Roles obligatorios

Para obtener los permisos que necesitas para crear una instancia a partir de una imagen compartida, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (roles/compute.instanceAdmin.v1) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear una instancia a partir de una imagen compartida. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para crear una instancia a partir de una imagen compartida, se necesitan los siguientes permisos:

  • compute.instances.create del proyecto
  • Para usar una imagen compartida para crear la instancia, sigue estos pasos: compute.images.useReadOnly en la imagen

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Crear una instancia a partir de una imagen compartida

Para crear una instancia a partir de una imagen compartida, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página Crear una instancia.

    Ir a Crear una instancia

    Si se te solicita, selecciona tu proyecto y haz clic en Continuar.

    Aparecerá la página Crear una instancia y se mostrará el panel Configuración de la máquina.

  2. En el panel Configuración de la máquina, haz lo siguiente:

    1. En el campo Nombre, especifica un nombre para la instancia. Para obtener más información, consulta el artículo Convenciones para asignar nombres de recursos.
    2. Opcional: En el campo Zona, selecciona una zona para esta instancia.

      La selección predeterminada es Cualquiera. Si no cambias esta selección predeterminada, Google elegirá automáticamente una zona en función del tipo de máquina y la disponibilidad.

    3. Selecciona la familia de máquinas de tu instancia. La consolaGoogle Cloud muestra las series de máquinas disponibles para la familia de máquinas que hayas seleccionado. Estas son las opciones de familia de máquinas disponibles:

      • Uso general
      • Optimizada para la computación
      • Con memoria optimizada
      • Almacenamiento optimizado
      • GPUs

    4. En la columna Serie, selecciona la serie de máquinas de tu instancia.

      Si has seleccionado GPUs como familia de máquinas en el paso anterior, selecciona el tipo de GPU que quieras. La serie de máquinas se selecciona automáticamente para el tipo de GPU seleccionado.

    5. En la sección Tipo de máquina, selecciona el tipo de máquina de tu instancia.

  3. En el menú de navegación, haz clic en SO y almacenamiento. En el panel Sistema operativo y almacenamiento que aparece, configura el disco de arranque haciendo lo siguiente:

    1. Haz clic en Cambiar. Aparece el panel Disco de arranque y se muestra la pestaña Imágenes públicas.
    2. Haz clic en Imágenes personalizadas. Aparecerá la pestaña Imágenes personalizadas.
    3. Para seleccionar el proyecto de imagen, haz clic en Cambiar y, a continuación, selecciona el proyecto que contiene la imagen.
    4. En la lista Imagen, selecciona la imagen que quieras importar.
    5. En la lista Tipo de disco de arranque, selecciona el tipo de disco de arranque.
    6. En el campo Tamaño (GB), especifica el tamaño del disco de arranque.
    7. Opcional: En el caso de los discos de arranque Hyperdisk Balanced, especifica valores en los campos IOPS aprovisionadas y Rendimiento aprovisionado.
    8. Opcional: Para ver las opciones de configuración avanzada, despliega la sección Mostrar configuraciones avanzadas.
    9. Para confirmar las opciones del disco de arranque y volver al panel Sistema operativo y almacenamiento, haz clic en Seleccionar.
  4. En el menú de navegación, haga clic en Redes. En el panel Redes que aparece, haz lo siguiente:

    1. Ve a la sección Cortafuegos.
    2. Para permitir el tráfico HTTP o HTTPS a la instancia, selecciona Permitir el tráfico HTTP o Permitir el tráfico HTTPS.

      Compute Engine añade una etiqueta de red a tu instancia y crea la regla de cortafuegos de entrada correspondiente que permite todo el tráfico entrante en tcp:80 (HTTP) o tcp:443 (HTTPS). La etiqueta de red asocia la regla de cortafuegos con la instancia. Para obtener más información, consulta la descripción general de las reglas de cortafuegos en la documentación de Cloud Next Generation Firewall.

  5. Opcional: Especifica otras opciones de configuración. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.

  6. Para crear e iniciar la instancia, haz clic en Crear.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Crea una instancia con gcloud compute instances create command y usa las marcas --image y --image-project para especificar el nombre de la imagen y el proyecto en el que se encuentra:

    gcloud compute instances create INSTANCE_NAME \
    --image=IMAGE \
    --image-project=IMAGE_PROJECT
    

    Haz los cambios siguientes:

    • INSTANCE_NAME: el nombre de la nueva instancia
    • IMAGE: el nombre de la imagen
    • IMAGE_PROJECT: el proyecto al que pertenece la imagen

    Si el comando se ejecuta correctamente, gcloud responde con las propiedades de la nueva instancia, como en el siguiente ejemplo:

    Created [https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b/instances/example-instance].
    NAME                 ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    example-instance     us-central1-b  e2-standard-2               10.240.0.4   104.198.53.60  RUNNING
    
  3. Terraform

    El proceso para crear una instancia con una imagen compartida en Terraform es el mismo que si crearas una instancia con una imagen disponible públicamente.

    1. En la consola de Google Cloud , ve a la página Instancias de VM.

      Ir a Instancias de VM

    2. Haz clic en Crear instancia.
    3. Especifica los parámetros que quieras.
    4. En la parte superior o inferior de la página, haz clic en Código equivalente y, a continuación, en la pestaña Terraform para ver el código de Terraform.

    REST

    El proceso para crear una instancia con una imagen compartida en la API es el mismo que si crearas una instancia con una imagen disponible públicamente.

    Para crear la instancia a partir de una imagen compartida, usa el método instances.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
       "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
       "name":"VM_NAME",
       
       "disks":[
          {
             "initializeParams":{
                "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
             },
             "boot":true
          }
       ],
       
       
       "networkInterfaces":[
          {
             "network":"global/networks/NETWORK_NAME"
          }
       ],
       
      
       "shieldedInstanceConfig":{
          "enableSecureBoot":"ENABLE_SECURE_BOOT"
       }
    }
    

    Haz los cambios siguientes:

    • PROJECT_ID: ID del proyecto en el que se creará la VM.
    • ZONE: zona en la que se creará la VM
    • MACHINE_TYPE_ZONE: zona que contiene el tipo de máquina que se va a usar en la nueva VM.
    • MACHINE_TYPE: tipo de máquina, predefinido o personalizado, para la nueva VM
    • VM_NAME: nombre de la nueva VM
    • IMAGE_PROJECT: nombre del proyecto que contiene la imagen compartida
    • IMAGE: especifica una de las siguientes opciones:
      • IMAGE: nombre de la imagen compartida. Por ejemplo, "sourceImage": "projects/finance-project-1234/global/images/finance-debian-image-v2".
      • IMAGE_FAMILY: si la imagen compartida se crea como parte de una familia de imágenes personalizadas, especifica esa familia de imágenes personalizadas.

        De esta forma, se crea la VM a partir de la imagen de SO no obsoleta más reciente de tu familia de imágenes personalizadas. Por ejemplo, si especificas "sourceImage": "projects/finance-project-1234/global/images/family/finance-debian-family", Compute Engine crea una VM a partir de la versión más reciente de la imagen del SO de la familia de imágenes personalizadas finance-debian-family.

    • NETWORK_NAME: la red de VPC que quieres usar en la VM. Puedes especificar default para usar tu red predeterminada.
    • ENABLE_SECURE_BOOT: Opcional: Si has elegido una imagen que admite las funciones de VM blindada, Compute Engine habilita de forma predeterminada el módulo de plataforma segura virtual (vTPM) y la monitorización de la integridad. En Compute Engine, Arranque seguro no está habilitado de forma predeterminada.

      Si especificas true en enableSecureBoot, Compute Engine crea una VM con las tres funciones de VM blindada habilitadas. Una vez que Compute Engine inicie tu VM, para modificar las opciones de VM blindada, debes detenerla.

Siguientes pasos