Crea, borra y da de baja imágenes personalizadas

Puedes crear imágenes personalizadas a partir de discos de origen, imágenes, instantáneas o imágenes almacenadas en Cloud Storage. Puedes usar estas imágenes para crear instancias de máquina virtual (VM). Esto es ideal en situaciones en las que se creó y modificó un disco de arranque persistente o una imagen específica a un cierto estado, y se necesita guardar ese estado para crear instancias.

De forma alternativa, puedes usar la herramienta de importación de disco virtual para importar imágenes de disco de arranque a Compute Engine desde los sistemas existentes y agregarlas a tu lista de imágenes personalizadas.

Antes de comenzar

Crea una imagen personalizada

En estas instrucciones, se describe cómo crear una imagen personalizada en una instancia de Linux. Si quieres obtener instrucciones para crear una imagen de Windows, consulta cómo crear una imagen de Windows.

Debes usar los permisos de Cloud Identity and Access Management (Cloud IAM) para compartir imágenes con otros proyectos.

Selecciona una ubicación de almacenamiento de imágenes

Cuando creas una imagen personalizada, puedes especificar la ubicación de almacenamiento de la imagen en Cloud Storage, y excluir las ubicaciones birregionales. Si especificas la ubicación de almacenamiento de imágenes, puedes cumplir con los requisitos de cumplimiento y regulatorios para la localidad de datos, y las necesidades de alta disponibilidad si garantizas la redundancia en todas las regiones.

La función de ubicación de almacenamiento es opcional. Si no seleccionas una ubicación, Compute Engine almacena la imagen en la multirregión más cercana a la fuente de la imagen.

Usa el comando images describe de gcloud beta compute para ver la ubicación en la que se almacena actualmente una imagen:

gcloud beta compute images describe [IMAGE_NAME] --project [PROJECT]

⋮
storageLocations:
- us-central1

Todas las imágenes existentes antes del lanzamiento de esta característica permanecen donde están. El único cambio es que puedes ver la ubicación de imagen de todas tus imágenes. Si tienes una imagen existente que deseas mover, debes volver a crearla en la ubicación deseada.

Prepara la instancia para una imagen

Puedes crear una imagen desde un disco aunque esté conectada a una instancia de VM en ejecución. Sin embargo, la imagen será más confiable si colocas la instancia en un estado que sea más fácil de capturar para la imagen. Utiliza uno de los siguientes procesos a fin de preparar el disco de arranque para la imagen:

  • Detén la instancia para que pueda cerrarse y dejar de escribir datos en el disco persistente.

  • Si no puedes detener la instancia antes de crear la imagen, minimiza la cantidad de escrituras en el disco y sincroniza el sistema de archivos.

    1. Pausa las aplicaciones o procesos del sistema operativo que escriben datos en ese disco persistente.
    2. Si es necesario, ejecuta una limpieza de la aplicación en el disco. Por ejemplo, MySQL tiene una instrucción FLUSH. Otras aplicaciones pueden tener procesos similares.
    3. Evita que tus aplicaciones escriban en el disco persistente.
    4. Ejecuta sudo sync.

Después de preparar la instancia, crea la imagen.

Crea la imagen

Puedes crear imágenes de disco desde las siguientes fuentes:

  • Un disco persistente, incluso mientras ese disco está conectado a una instancia
  • Una instantánea de un disco persistente
  • Otra imagen en el proyecto
  • Una imagen que se comparte desde otro proyecto
  • Una imagen RAW comprimida en Cloud Storage

Console

  1. Ve a la página Crear una imagen en Google Cloud Platform Console.
    Ir a la página Crear una instancia
  2. Especifica el Nombre de la imagen.
  3. Especifica el Origen desde el que deseas crear una imagen. Puede ser un disco persistente, una instantánea, otra imagen o un archivo disk.raw en Cloud Storage.
  4. Especifica la Ubicación en la que deseas almacenar la imagen. Elige la ubicación de almacenamiento de imágenes en la lista desplegable Basado en la ubicación del disco de origen (predeterminado). Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no realizas una selección, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.
  5. Especifica las propiedades de la imagen. Por ejemplo, puedes especificar un nombre de familia de imagen para organizar esta imagen como parte de una familia de imágenes.
  6. Haz clic en Crear para crear la imagen.

gcloud

En la herramienta de línea de comandos de gcloud, utiliza el comando gcloud compute beta images create para crear una imagen personalizada. La etiqueta beta es obligatoria para el marcador opcional --storage-location.

Crea una imagen a partir de un disco de origen:

gcloud beta compute images create [IMAGE_NAME] \
  --source-disk [SOURCE_DISK] \
  --source-disk-zone [ZONE] \
  --family [IMAGE_FAMILY] \
  --storage-location [LOCATION] \
  --force

donde:

  • [IMAGE_NAME] es un nombre de la imagen nueva.
  • [SOURCE_DISK] es el disco desde el que deseas crear la imagen.
  • [ZONE] es la zona donde se encuentra el disco.
  • [IMAGE_FAMILY] es un marcador opcional que especifica a qué familia de imágenes pertenece esta imagen.
  • [LOCATION] es un marcador opcional que te permite designar la región o multirregión en la que se almacenará la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no realizas una selección, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.
  • [--force] es un marcador opcional que te permite crear la imagen desde una instancia en ejecución. De forma predeterminada, no puedes crear imágenes a partir de instancias en ejecución. Especifica este marcador solo si estás seguro de que deseas crear la imagen mientras se ejecuta la instancia.

Crea una imagen a partir de una imagen de origen:

gcloud beta compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --family [IMAGE_FAMILY] \
  --storage-location [LOCATION]

donde:

  • [IMAGE_NAME] es un nombre de la imagen nueva.
  • [SOURCE_IMAGE] es la imagen a partir de la que deseas crear la imagen nueva.
  • [IMAGE_PROJECT] es un parámetro opcional que especifica en qué proyecto se ubica la imagen de origen. Usa este parámetro si deseas copiar una imagen de otro proyecto.
  • [IMAGE_FAMILY] es un marcador opcional que especifica a qué familia de imágenes pertenece esta nueva imagen.
  • [LOCATION] es un indicador opcional que te permite designar la región o multirregión en la que se almacenará la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no seleccionas una opción, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.

Crea una imagen a partir de una instantánea:

gcloud beta compute images create [IMAGE_NAME] \
  --source-snapshot [SOURCE_SNAPSHOT] \
  --storage-location [LOCATION]

donde:

  • [IMAGE_NAME] es un nombre de la imagen nueva.
  • [SOURCE_SNAPSHOT] es la instantánea a partir de la que deseas crear la imagen.
  • [LOCATION] es un indicador opcional que te permite designar la región o multirregión en la que se almacenará la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no seleccionas una opción, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.

Observa la ubicación de una imagen:

Usa el comando gcloud beta compute images describe para ver la ubicación de una imagen. La etiqueta beta es necesaria para ver la ubicación de almacenamiento de la imagen.

gcloud beta compute images describe [IMAGE_NAME]

donde [IMAGE_NAME] es el nombre de la imagen que deseas describir.

API

Realiza una solicitud POST al método images().insert, una URL en el cuerpo de la solicitud que apunta al objeto de origen desde el que deseas crear la imagen. Utiliza tu propio ID del proyecto y nombres de recursos para especificar las URL de los recursos. Usa la versión beta de este método para especificar el parámetro storageLocations.

Crea una imagen a partir de un disco persistente:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceDisk": "/zones/[ZONE]/disks/[SOURCE_DISK]",
  "storageLocations": "[LOCATION]",
  "forceCreate": "[FORCE_CREATE]"
}

donde:

  • [PROJECT_ID] es el proyecto al que pertenece la imagen.
  • [IMAGE_NAME] es un nombre de la imagen nueva que deseas crear.
  • [ZONE] es la zona en la que se encuentra el disco de origen.
  • [SOURCE_DISK] es el disco desde el que deseas crear la imagen.
  • [LOCATION] es un parámetro opcional que te permite seleccionar la ubicación de almacenamiento de la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no realizas una selección, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.
  • [FORCE_CREATE] es un parámetro opcional que te permite crear la imagen desde una instancia en ejecución. Especifica TRUE solo si estás seguro de que quieres crear la imagen desde una instancia en ejecución. Si no especificas este parámetro, el valor predeterminado será FALSE.

Crea una imagen a partir de otra imagen:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceImage": "/global/images/[SOURCE_IMAGE]",
  "storageLocations": "[LOCATION]"
}

donde:

  • [PROJECT_ID] es el proyecto al que pertenece la imagen.
  • [IMAGE_NAME] es un nombre de la imagen nueva que deseas crear.
  • [SOURCE_IMAGE] es la imagen a partir de la que deseas crear la imagen.
  • [LOCATION] es un parámetro opcional que te permite seleccionar la ubicación de almacenamiento de la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no seleccionas una opción, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.

Crea una imagen a partir de una instantánea:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceSnapshot": "/[SOURCE_PROJECT_ID]/global/snapshots/[SOURCE_SNAPSHOT]",
  "storageLocations": "[LOCATION]"
}

donde:

  • [PROJECT_ID] es el proyecto al que pertenece la imagen.
  • [IMAGE_NAME] es un nombre de la imagen nueva que deseas crear.
  • [SOURCE_SNAPSHOT] es la instantánea a partir de la que deseas crear la imagen.
  • [SOURCE_PROJECT_ID] es una variable opcional que especifica en qué proyecto se encuentra la instantánea. Debes tener permiso para acceder al recurso de instantánea en ese proyecto.
  • [LOCATION] es un parámetro opcional que te permite seleccionar la ubicación de almacenamiento de la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no seleccionas una opción, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.

Para obtener más información sobre cómo agregar imágenes, consulta la referencia de imágenes.

Da de baja una imagen

Compute Engine te permite establecer el estado de una imagen como dado de baja con el fin de dar de baja una imagen personalizada que posees. Cada estado de dado de baja provoca una respuesta diferente del servidor, lo que te ayuda a cambiar a los usuarios de las imágenes no compatibles de una manera administrable. Usa Console, el comando de gcloud o el método API de Compute Engine para dar de baja una imagen.

Console

  1. En Google Cloud Platform Console, ve a la página Crea una imagen.
    Ir a la página Crear una instancia
  2. Marca la casilla a la izquierda de la imagen que deseas dar de baja.
  3. Haz clic en Dar de baja en la parte superior de la página. La imagen se dará de baja.

gcloud

Usa el comando gcloud compute images deprecate para establecer el estado de una imagen en dado de baja.

gcloud compute images deprecate [IMAGE_NAME] \
    --state [STATE] \
    --replacement [REPLACEMENT]

donde [IMAGE_NAME] es el nombre de la imagen que se debe dar de baja.

A continuación, se detallan los estados de dado de baja:

  • DEPRECATED: esta imagen se considera obsoleta. Cuando los usuarios intenten usar esta imagen, la solicitud se realizará correctamente, pero Compute Engine también mostrará una advertencia. Todavía se permiten vínculos nuevos a esta imagen. Las familias de imágenes ya no apuntan a esta imagen, incluso si es la imagen más reciente de la familia.
  • OBSOLETE: esta imagen está obsoleta y los usuarios nuevos no pueden usarla. Compute Engine muestra un error si los usuarios intentan usar la imagen en sus solicitudes. Los vínculos existentes a esta imagen todavía están permitidos.
  • DELETED: esta imagen se borra y los usuarios no pueden usarla. Compute Engine muestra un error si los usuarios intentan usar la imagen.

API

Realiza una solicitud POST al método images().deprecate. Especifica el nombre de la imagen que quieres dar de baja.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[RESOURCE_ID]/deprecate

{
  "deprecated": "[IMAGE_NAME]",
  "replacement": "[REPLACEMENT]"
}

donde:

  • [PROJECT_ID] es el proyecto al que pertenece la imagen.
  • [IMAGE_NAME] es la imagen que estás dando de baja.
  • [REPLACEMENT] es la imagen para reemplazar a la que se da de baja.

Borra una imagen

Solo puedes borrar imágenes personalizadas que tú o alguien que tenga acceso al proyecto hayan agregado. Usa Console, el comando de gcloud o el método API de Compute Engine para borrar la imagen.

Console

  1. En Google Cloud Platform Console, ve a la página Crea una imagen.
    Ir a la página Crear una instancia
  2. Marca la casilla a la izquierda de la imagen que deseas borrar.
  3. Haz clic en Borrar en la parte superior de la página. La imagen se borrará.

gcloud

Usa el comando gcloud compute images delete para borrar una imagen.

gcloud compute images delete [IMAGE_NAME]

donde [IMAGE_NAME] es el nombre de la imagen que se borrará.

API

Realiza una solicitud POST al método images().delete. Especifica el nombre de la imagen que deseas borrar.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/[RESOURCE_ID]

donde:

  • [PROJECT_ID] es el proyecto al que pertenece la imagen.
  • [RESOURCE_ID] es un nombre de la imagen que deseas borrar.

Configura las versiones de imágenes en una familia de imágenes

Utiliza familias de imágenes para simplificar el control de versiones de imágenes. Agrega una imagen a una familia de imágenes para establecerla como la versión más reciente de la imagen. Si determinas que debes revertir la familia de imágenes a una versión anterior, da de baja la imagen más reciente de la familia.

De manera opcional, puedes especificar la ubicación de almacenamiento de la imagen con Console, el comando gcloud beta compute images create con el marcador --storageLocation o el método betaimages().insert de la API.

Por ejemplo, crea una imagen llamada image-v1 como parte de una familia de imágenes.

Console

  1. En Google Cloud Platform Console, ve a la página Crea una imagen.
    Ir a la página Crear una instancia
  2. Especifica el Nombre de la imagen.
  3. Especifica el Origen desde el que deseas crear una imagen. Puede ser un disco persistente, una instantánea, otra imagen o un archivo disk.raw en Google Cloud Storage.
  4. Especifica la Ubicación donde almacenarás la imagen. Elige la ubicación de almacenamiento de las imágenes en el menú desplegable Basado en la ubicación del disco de origen (predeterminado). Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no realizas una selección, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de su imagen.

  5. Especifica las propiedades de la imagen. Por ejemplo, puedes especificar el nombre de familia de imagen my-image-family para que tu imagen organice esta imagen como parte de una familia de imágenes.

  6. Si creas una imagen desde un disco conectado a una imagen en ejecución, marca “Forzar creación desde instancia en ejecución” para confirmar que deseas crear la imagen mientras se ejecuta la instancia.

  7. Haz clic en Crear para crear la imagen.

gcloud

gcloud compute images create image-v1 \
    --source-disk disk-1 \
    --source-disk-zone us-central1-f \
    --family my-image-family \

La familia de imágenes apunta a image-v1. Agrega una segunda imagen a la familia:

gcloud compute images create image-v2 \
    --source-disk disk-2 \
    --source-disk-zone us-central1-f \
    --family my-image-family \

API

Realiza una solicitud POST al método images().insert. Especifica la familia de imágenes en el cuerpo de la solicitud.

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "image-v2",
  "sourceDisk": "/zones/us-central1-f/disks/disk-2",
  "family":"my-image-family",

}

La familia de imágenes apunta a image-v2 porque es la imagen más reciente que se agregó a la familia.

gcloud

Puedes ejecutar el comando gcloud compute images describe-from-family para ver a qué imagen apunta una familia.

Por ejemplo:

gcloud beta compute images describe-from-family my-image-family

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v2
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

API

Realiza una solicitud GET al método images().getFromFamily. Especifica la familia de imágenes en el cuerpo de la solicitud.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/family

{
  "resourceId":"my-image-family",

}

Si decides que debes revertir la familia de imágenes para que ya no apunte a image-v2, desactiva image-v2 y la familia volverá a apuntar a image-v1.

gcloud compute images deprecate image-v2 \
    --state DEPRECATED \
    --replacement image-v1

Realiza una comprobación para asegurarte de que la familia de imágenes apunta a image-v1.

gcloud beta compute images describe-from-family my-image-family

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v1
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

Habilita las funciones del sistema operativo invitado en imágenes personalizadas

Puedes establecer el parámetro guestOsFeatures cuando creas una imagen personalizada. Este parámetro habilita una o más funciones en las instancias de VM que usan la imagen para sus discos de arranque. Están disponibles las siguientes funciones:

  • MULTI_IP_SUBNET: configura interfaces con una máscara de red distinta de /32.
  • SECURE_BOOT: habilita el inicio seguro UEFI, que restringe el arranque del software sin firmar o la carga de controladores sin firmar en la instancia de VM. Después de establecer este parámetro, puedes habilitar la función de inicio seguro durante la creación de la instancia de VM.
  • UEFI_COMPATIBLE: permite el inicio UEFI, que es un método de arranque alternativo del sistema. La mayoría de las imágenes públicas usan el bootloader de GRUB como su método de inicio principal.
  • VIRTIO_SCSI_MULTIQUEUE: habilita las capacidades SCSI de varias colas para dispositivos SSD locales. Esta opción es una alternativa a NVMe.
    • Para imágenes de Linux, puedes habilitar VIRTIO_SCSI_MULTIQUEUE en imágenes con versiones de kernel 3.17 y superiores.
    • Para las imágenes de Windows, puedes habilitar VIRTIO_SCSI_MULTIQUEUE en las imágenes con la versión del controlador 1.2.0.1621 o superior.
  • WINDOWS: es obligatorio para las imágenes de Windows Server. Las imágenes públicas más nuevas de Windows Server incluyen el parámetro WINDOWS para indicar que es una imagen de Windows.

Usa la herramienta de línea de comandos de gcloud o la API para habilitar las funciones del sistema operativo invitado en sus imágenes personalizadas.

gcloud

Usa el comando gcloud compute images create para crear una imagen personalizada a partir de una de las imágenes personalizadas existentes, pero también incluye el marcador --guest-os-features. Utiliza el comando gcloud compute beta images create para incluir el marcador opcional --storage-location.

gcloud beta compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --guest-os-features="[FEATURE_ID],..." \
  --storage-location [LOCATION]

donde:

  • [IMAGE_NAME] es un nombre de la imagen nueva que deseas crear.
  • [SOURCE_IMAGE] es la imagen a partir de la que deseas crear la imagen.
  • [IMAGE_PROJECT] es un parámetro opcional que especifica en qué proyecto se ubica la imagen de origen. Usa este parámetro si deseas copiar una imagen de otro proyecto.
  • [FEATURE_ID] es un ID de una de las funciones de SO invitado disponibles. Puedes especificar varias funciones en forma de lista separada por comas.
  • [LOCATION] es un marcador opcional que te permite designar la región o multirregión en la que se almacenará la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no realizas una selección, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.

API

Realiza una solicitud POST al método images().insert, una URL en el cuerpo de la solicitud que apunta al objeto de origen desde el que deseas crear la imagen. Reemplaza el proyecto y la zona con tu propio ID del proyecto y la zona del disco persistente. Usa el método beta de la API para que esta solicitud vea el parámetro storageLocations.

Crea una imagen a partir de un disco persistente:

POST https://www.googleapis.com/compute/beta/projects/[PROJECT_ID]/global/images

{
 "name": "[IMAGE_NAME]",
 "sourceImage": "projects/[IMAGE_PROJECT]/global/images/[SOURCE_IMAGE]",
 "storageLocations": "[LOCATION]",
 "guestOsFeatures": [
  {
   "type": "[FEATURE_ID]"
  }
 ]
}

donde:

  • [IMAGE_NAME] es un nombre de la imagen nueva que deseas crear.
  • [SOURCE_IMAGE] es la imagen a partir de la que deseas crear la imagen.
  • [IMAGE_PROJECT] es un parámetro que especifica en qué proyecto se ubica la imagen de origen.
  • [LOCATION] es un parámetro opcional que te permite seleccionar la ubicación de almacenamiento de la imagen. Por ejemplo, especifica us para guardar la imagen en la multirregión us, o us-central1 a fin de almacenarla en la región us-central1. Si no realizas una selección, Compute Engine almacenará la imagen en la multirregión más cercana a la ubicación de origen de la imagen.
  • [FEATURE_ID] es un ID de una de las funciones de SO invitado disponibles. Puedes especificar varias funciones en forma de lista separada por comas.

Para obtener más información sobre cómo agregar imágenes, consulta la referencia de imágenes.

Pasos siguientes

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

Enviar comentarios sobre...

Documentación de Compute Engine