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 y usarlas para crear instancias de máquinas virtuales (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 deseas obtener información para crear una imagen de Windows, consulta Crea una imagen de Windows.

Debes usar los permisos de administración de identidades y accesos (IAM) a fin de 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, cumplirás con las necesidades de alta disponibilidad y los requisitos de cumplimiento y regulatorios para la localidad de datos mediante la garantía de 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.

Para ver la ubicación en la que se almacena una imagen en este momento, usa el comando images describe de gcloud compute:

gcloud compute images describe IMAGE_NAME \
    --project=PROJECT_ID

Todas las imágenes existentes antes del lanzamiento de esta función permanecen donde están, el único cambio es que puedes ver la ubicación de todas las 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 app en el disco. Por ejemplo, MySQL tiene una declaración FLUSH. Otras aplicaciones pueden tener procesos similares.
    3. Evita que tus apps 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

Puedes crear una imagen de disco una vez cada 10 minutos. Si deseas generar una gran cantidad de solicitudes para crear una imagen de disco, puedes emitir como máximo 6 solicitudes en 60 minutos. Para obtener más información, consulta Límites de frecuencia de las instantáneas.

Console

  1. En Google Cloud Console, ve a la página Crea una imagen.

    Ir a Crea una imagen

  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 Se basa en la ubicación del disco de origen (predeterminado). Por ejemplo, especifica us para almacenar 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, usa el comando gcloud compute images create para crear una imagen personalizada.

Crea una imagen a partir de un disco de origen:

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

Reemplaza lo siguiente:

  • IMAGE_NAME: Es un nombre para la imagen nueva.
  • SOURCE_DISK: Es el disco desde el que deseas crear la imagen.
  • ZONE: Es la zona en la que se encuentra el disco.
  • IMAGE_FAMILY: Es una marca que especifica a qué familia de imágenes pertenece esta imagen (opcional).
  • LOCATION: Es una marca que te permite designar la región o multirregión en la que se almacena la imagen (opcional). Por ejemplo, especifica us para almacenar 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.

La marca --force es opcional y 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 esta marca 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 compute images create IMAGE_NAME \
  --source-image=SOURCE_IMAGE \
  [--source-image-project=IMAGE_PROJECT] \
  [--family=IMAGE_FAMILY] \
  [--storage-location=LOCATION]

Reemplaza lo siguiente:

  • IMAGE_NAME: Es un nombre para la imagen nueva.
  • SOURCE_IMAGE: Es la imagen desde la que deseas crear la imagen nueva.
  • IMAGE_PROJECT: Es el proyecto en el que se encuentra la imagen de origen (opcional). Usa este parámetro si deseas copiar una imagen desde otro proyecto.
  • IMAGE_FAMILY: Es la familia de imágenes a la que pertenece esta imagen nueva (opcional).
  • LOCATION: Te permite designar la región o multirregión en la que se almacena la imagen (opcional). Por ejemplo, especifica us para almacenar 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.

Crea una imagen a partir de una instantánea:

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

Reemplaza lo siguiente:

  • IMAGE_NAME: Es un nombre para la imagen nueva.
  • SOURCE_SNAPSHOT: Es la instantánea desde la que deseas crear la imagen.
  • LOCATION: Es la marca que te permite designar la región o multirregión en la que se almacena la imagen (opcional). Por ejemplo, especifica us para almacenar 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.

Observa la ubicación de una imagen:

Usa el comando gcloud compute images describe para ver la ubicación de una imagen.

gcloud compute images describe IMAGE_NAME

Reemplaza IMAGE_NAME por el nombre de la imagen que deseas revisar.

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. Usa tu propio ID del proyecto y nombres de recursos para especificar las URL de los recursos.

Crea una imagen a partir de un disco persistente:

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

{
  "name": "IMAGE_NAME",
  "sourceDisk": "/zones/ZONE/disks/SOURCE_DISK",
  ("storageLocations": "LOCATION",)
  ("forceCreate": "TRUE")
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto al que pertenece la imagen.
  • IMAGE_NAME: Es un nombre para 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 la ubicación de almacenamiento de la imagen (opcional). Por ejemplo, especifica us para almacenar 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.

El parámetro opcional forceCreate te permite crear la imagen a partir de una instancia en ejecución. Especifica TRUE solo si estás seguro de que quieres crear la imagen desde una instancia en ejecución. La configuración predeterminada forceCreate es FALSE.

Crea una imagen a partir de otra imagen:

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

{
  "name": "IMAGE_NAME",
  "sourceImage": "/global/images/SOURCE_IMAGE",
  ("storageLocations": "LOCATION")
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto al que pertenece la imagen.
  • IMAGE_NAME: Es un nombre para la imagen nueva que deseas crear.
  • SOURCE_IMAGE: Es la imagen desde la que deseas crear la imagen.
  • LOCATION: Es la ubicación de almacenamiento de la imagen (opcional). Por ejemplo, especifica us para almacenar 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.

Crea una imagen a partir de una instantánea:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
{
  "name": "IMAGE_NAME",
  "sourceSnapshot": "(/SOURCE_PROJECT_ID)/global/snapshots/SOURCE_SNAPSHOT",
  ("storageLocations": "LOCATION")
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto al que pertenece la imagen.
  • IMAGE_NAME: Es un nombre para la imagen nueva que deseas crear.
  • SOURCE_PROJECT_ID: Es el proyecto en el que se encuentra la instantánea (opcional). Debes tener permiso para acceder al recurso de instantánea en ese proyecto.
  • SOURCE_SNAPSHOT: Es la instantánea desde la que deseas crear la imagen.
  • LOCATION: Es la ubicación de almacenamiento de la imagen (opcional). Por ejemplo, especifica us para almacenar 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.

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 dar de baja una imagen personalizada que te pertenece si configuras el estado de baja en la imagen. Cada estado 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 Google Cloud Console, la herramienta de línea de comandos de gcloud o el método de la API de Compute Engine para dar de baja a una imagen.

Estados de baja

Se admiten los siguientes estados de baja:

  • ACTIVE: La imagen está activa y se puede usar con normalidad. Las familias de imágenes apuntan a la imagen más reciente y activa de una familia.
  • DEPRECATED: La imagen está marcada como obsoleta, pero aún se puede usar. Si usas una imagen obsoleta, la solicitud se realiza de forma correcta con una advertencia. Se permiten vínculos nuevos a esta imagen. Las familias de imágenes ya no apuntan a esta imagen, aunque sea la imagen más reciente de la familia.
  • OBSOLETE: La imagen está marcada como obsoleta, y su uso ya no está disponible. Se muestra un mensaje de error si intentas usar esta imagen en una solicitud. Los vínculos existentes a esta imagen todavía están permitidos.
  • DELETED: Esta imagen se borró. Se muestra un mensaje de error si intentas usar una imagen que se borró.

Para revertir una baja (volver a activar una imagen), cambia el estado de baja a ACTIVE.

Console

  1. En Google Cloud Console, ve a la página Imágenes.

    Ir a Imágenes

  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 baja de una imagen.

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

Reemplaza lo siguiente:

  • IMAGE_NAME: Es el nombre de la imagen que dejará de estar disponible.
  • STATE: Es el estado de baja.
  • REPLACEMENT: Es la imagen que se usará para reemplazar a la que se dio de baja.

API

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

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

{
  "state": "STATE",
  "replacement": "REPLACEMENT"
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto al que pertenece la imagen.
  • RESOURCE_ID: Es el nombre de la imagen que darás de baja.
  • STATE: Es el estado de baja de este recurso.
  • REPLACEMENT: Es la imagen que se usará para reemplazar a la que se dio de baja.

Borra una imagen

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

Console

  1. En Google Cloud Console, ve a la página Imágenes.

    Ir a Imágenes

  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

Reemplaza IMAGE_NAME por el nombre de la imagen que deseas borrar.

API

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

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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto al que pertenece la imagen.
  • RESOURCE_ID: Es el 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.

Para conocer las prácticas recomendadas sobre cómo trabajar con familias de imágenes, consulta Prácticas recomendadas para las familias de imágenes.

De forma opcional, puedes especificar la ubicación de almacenamiento de la imagen mediante Google Cloud Console, el comando gcloud compute images create con la marca --storage-location o el método images().insert.

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

Console

  1. En Google Cloud Console, ve a la página Crea una imagen.

    Ir a Crea una imagen

  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 almacenarás la imagen. Elige la ubicación de almacenamiento de imágenes en el menú desplegable Se basa en la ubicación del disco de origen (predeterminado). Por ejemplo, especifica us para almacenar 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 el nombre de la familia de la imagen my-image-family para que 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://compute.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 agregaste a la familia de imágenes.

gcloud

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

Por ejemplo:

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

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://compute.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://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/family

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

}

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

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

Asegúrate de que la familia de imágenes apunte a image-v1.

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

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://compute.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://compute.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

Las características del sistema operativo invitado te permiten configurar las siguientes opciones de Herramientas de redes, seguridad, almacenamiento y sistema operativo en imágenes personalizadas que también se usarán como discos de arranque:

  • Subredes de varias IP: Configura interfaces con una máscara de red distinta de /32.
  • Compatibilidad con UEFI: Para el inicio con firmware UEFI y las siguientes características de VM protegidas:
  • SCSI de varias colas en dispositivos SSD locales como alternativa a NVMe:
    • Para imágenes de Linux, puedes habilitar SCSI de varias colas en dispositivos SSD locales en imágenes con versiones de kernel 3.17 y posteriores.
    • Para imágenes de Windows, puedes habilitar SCSI de varias colas en dispositivos SSD locales en imágenes con la versión del controlador 1.2.0.1621 o posterior.
  • Compatibilidad con Windows: Debes etiquetar las imágenes de arranque personalizadas de Windows Server como imágenes de Windows.

gcloud

Usa el comando gcloud compute images create con la marca --guest-os-features para crear una imagen personalizada nueva a partir de una imagen personalizada existente.

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

Reemplaza lo siguiente:

  • IMAGE_NAME: Es el nombre de la imagen nueva.
  • SOURCE_IMAGE: Es una imagen en la que se basará la imagen nueva.
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen de origen (opcional). Usa este parámetro para copiar una imagen de otro proyecto.
  • FEATURES: Son ID, separados por comas, de las funciones del SO invitado para habilitar en la imagen. Establece este parámetro en uno o más de los siguientes valores:
    • MULTI_IP_SUBNET
    • UEFI_COMPATIBLE
    • VIRTIO_SCSI_MULTIQUEUE
    • WINDOWS
  • LOCATION: Es la región o multirregión en la que se almacena la imagen (opcional). Por ejemplo, especifica us para almacenar 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

Usa el método images().insert con la marca guestOsFeatures para crear una imagen personalizada nueva a partir de una imagen personalizada existente.


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

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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que se creará la imagen nueva.
  • IMAGE_NAME: Es un nombre para la imagen nueva.
  • IMAGE_PROJECT: Es el proyecto que contiene la imagen de origen (opcional). Usa este parámetro para copiar una imagen de otro proyecto.
  • SOURCE_IMAGE: Es la imagen en la que se basará la imagen nueva.
  • LOCATION: Es una región o multirregión para almacenar la imagen (opcional). Por ejemplo, especifica us para almacenar 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.
  • FEATURES: Son ID, separados por comas, de las funciones del SO invitado para habilitar en la imagen. Establece este parámetro en uno o más de los siguientes valores:
    • MULTI_IP_SUBNET
    • UEFI_COMPATIBLE
    • VIRTIO_SCSI_MULTIQUEUE
    • WINDOWS

¿Qué sigue?