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 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, sin incluir 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, como se indica a continuación:

gcloud compute images describe image-name --project project-id

⋮
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. Usa 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 apps o procesos del sistema operativo que realizan operaciones de escritura de 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 diez minutos. Si deseas generar una ráfaga 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 instantáneas.

Console

  1. En Google Cloud Console, ve a la página Crear una imagen.
    Ir a la página Crear 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 los siguientes elementos:

  • 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 opcional que especifica a qué familia de imágenes pertenece esta imagen.
  • location: Es una marca opcional que te permite designar la región o multirregión en la que se almacenará tu imagen. 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.
  • [--force]: Es una marca 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 compute images create image-name \
  --source-image source-image \
  --source-image-project image-project \
  --family image-family \
  --storage-location location

Reemplaza los siguientes elementos:

  • 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 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 una marca opcional que especifica a qué familia de imágenes pertenece esta imagen nueva.
  • location: Es una marca opcional que te permite designar la región o multirregión en la que se almacenará la imagen. 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 tu imagen.

Crea una imagen a partir de una instantánea:

gcloud compute images create image-name \
  --source-snapshot source-snapshot \
  --storage-location location

Reemplaza los siguientes elementos:

  • image-name: Es un nombre para la imagen nueva.
  • source-snapshot: Es la instantánea desde la que deseas crear la imagen.
  • location: Es una marca opcional que te permite designar la región o multirregión en la que se almacenará la imagen. 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 tu imagen.

Visualiza la ubicación de una imagen:

Usa el comando gcloud compute images describe para ver la ubicación de una imagen. Reemplaza image-name por el nombre de la imagen que deseas revisar.

gcloud compute images describe image-name

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 los siguientes elementos:

  • 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 un parámetro opcional que te permite seleccionar la ubicación de almacenamiento de la imagen. 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.
  • [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://compute.googleapis.com/compute/v1/projects/project-id/global/images

{
  "name": "image-name",
  "sourceImage": "/global/images/source-image",
  "storageLocations": "location"
}

Reemplaza los siguientes elementos:

  • 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 un parámetro opcional que te permite seleccionar la ubicación de almacenamiento de la imagen. 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 tu 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 los siguientes elementos:

  • project-id: Es el proyecto al que pertenece la imagen.
  • image-name: Es un nombre para la imagen nueva que deseas crear.
  • source-snapshot: Es la instantánea desde 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 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 tu 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 la consola, el comando de gcloud o el método de la API de Compute Engine para dar de baja 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 se puede seguir usando. 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, incluso si es 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 la página 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 los siguientes elementos:

  • image-name: Es el nombre de la imagen que se dará de baja.
  • state: Es el estado de baja.
  • replacement: Es la imagen que se usará para reemplazar 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 los siguientes elementos:

  • 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 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 la consola, el comando 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 la página 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. Reemplaza image-name por el nombre de la imagen que deseas borrar.

gcloud compute images delete image-name

API

Realiza una solicitud POST para el 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 los siguientes elementos:

  • 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 manera opcional, puedes especificar la ubicación de almacenamiento de la imagen con la consola, el comando gcloud compute images create con la marca --storageLocation, o el método de la API de 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 Crear una imagen.
    Ir a la página Crear 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 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 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 tu 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 los siguientes elementos:

  • IMAGE_NAME: Es el nombre de la imagen nueva.
  • SOURCE_IMAGE: Es la 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 en uno o más de: MULTI_IP_SUBNET, UEFI_COMPATIBLE, VIRTIO_SCSI_MULTIQUEUE, WINDOWS.
  • LOCATION: Es la 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.

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 los siguientes elementos:

  • PROJECT_ID: Es el ID del proyecto en el que se creará la imagen nueva.
  • IMAGE_NAME: Es el nombre de la imagen nueva.
  • SOURCE_IMAGE: Es la 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.
  • LOCATION: Es la 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 en uno o más de: MULTI_IP_SUBNET, UEFI_COMPATIBLE, VIRTIO_SCSI_MULTIQUEUE, WINDOWS.

Próximos pasos