Usa una imagen de máquina para almacenar toda la configuración, los metadatos, los permisos y los datos de varios discos para una instancia de Compute Engine. La instancia que usas para crear una imagen de máquina se denomina instancia de origen.
Para obtener información sobre cuándo y cómo usar las imágenes de máquina, consulta Imágenes de máquina.
En este documento, se describen los pasos para crear una imagen de máquina a partir de una instancia de origen.
Antes de comenzar
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Cloud de Confiance by S3NS . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:
Console
Cuando usas la consola de Cloud de Confiance para acceder a los servicios y las APIs de Cloud de Confiance by S3NS , no necesitas configurar la autenticación.
gcloud
-
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:
gcloud init
-
- Configura una región y una zona predeterminadas.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Cloud de Confiance .
Limitaciones y restricciones
- Puedes crear una imagen de máquina de una instancia específica como máximo 6 veces cada 60 minutos.
- Para proteger una imagen de máquina, puedes usar Cloud Key Management Service (Cloud KMS) o una clave de encriptación proporcionada por el cliente (CSEK). La clave de encriptación protege el contenido de los discos. Sin embargo, los metadatos no están protegidos.
- Si usas una CSEK para proteger tu imagen de máquina, se almacenará una copia completa de todos los datos del disco durante la generación de la imagen de máquina. En todas las demás situaciones, los datos del disco se almacenan en las copias diferenciales.
No puedes crear imágenes de máquina a partir de instancias de Compute Engine de origen que:
- Tener discos conectados con una capacidad combinada superior a 200 TiB
- No tengan ningún disco conectado
- Tengan volúmenes de Hyperdisk conectados
- Usa el tipo de máquina Z3, excepto
z3-highmem-192-highlssd-metal. - Usa un tipo de máquina C3D, H3 o A3.
En el caso de las instancias que no admiten la creación de imágenes de máquina, puedes crear una imagen de SO a partir del disco de arranque de la instancia, como se describe en Crea imágenes personalizadas.
No puedes especificar discos para incluir y discos para excluir al mismo tiempo.
Las propiedades de instancias y discos no son compatibles con la imagen de máquina
Cuando creas imágenes de máquina a partir de instancias o instancias a partir de imágenes de máquina, las siguientes propiedades de instancia y disco no se conservan ni se restablecen:
disks.architecturedisks.descriptiondisks.labelsdisks.lockeddisks.multiWriterdisks.onUpdateActiondisks.provisionedIopsdisks.shieldedInstanceInitialStatedisks.sourceImagedisks.sourceImageEncryptionKeydisks.sourceInstantSnapshotdisks.sourceSnapshotdisks.sourceSnapshotEncryptionKeyprivateIpv6GoogleAccessresourceManagerTagsresourcePoliciessecure_tagshieldedInstanceConfig
Crea una imagen de máquina a partir de una instancia
De forma predeterminada, una imagen de máquina incluye el disco de arranque y todos los demás discos conectados a la instancia de Compute Engine de origen. De manera opcional, puedes especificar qué discos que no son de arranque incluir o excluir, pero no puedes excluir el disco de arranque.
Crea una imagen de máquina a partir de una instancia y, luego, incluye todos los discos conectados
Puedes crear imágenes de máquina con la consola deCloud de Confiance , Google Cloud CLI o REST.
Para crear una imagen de máquina, necesitas la siguiente información:
- Un nombre para la imagen de máquina que deseas crear
- El nombre de la instancia de origen
- La zona en la que se encuentra la instancia de origen
- Una descripción opcional
- Una
storageLocationopcional. Si no especificas una ubicación, la ubicación de almacenamiento predeterminada es la ubicación de Cloud Storage multirregional de la instancia de origen. - Una clave de encriptación opcional. Puedes elegir entre una clave de Google Cloud-powered encryption key, una clave de Cloud Key Management Service (Cloud KMS) o una clave de encriptación proporcionada por el cliente (CSEK). Si no se especifica una clave de encriptación, las imágenes de máquina se encriptarán con una Google Cloud-powered encryption key.
Si deseas usar una imagen de máquina para crear instantáneas de instancias y clonarlas, quita la información del SO y de la app que sea exclusiva antes de generar la imagen de máquina a partir de una instancia. Por ejemplo, en instancias de VM de Windows, usa
GCESysprepa fin de preparar el sistema para la replicación.
Console
En la consola de Cloud de Confiance , ve a la página Imágenes de máquina.
Haz clic en Crear imagen de máquina.
Especifica un Nombre para tu imagen de máquina.
Proporciona una Descripción (opcional).
Selecciona la instancia de VM de origen.
Especifica la ubicación en la que se almacenará la imagen de máquina (opcional). Elige entre almacenamiento multirregional o regional. Para obtener más información sobre la ubicación, consulta Ubicación de almacenamiento de imágenes de máquina.
Selecciona un método de Encriptación (opcional).
Haz clic en Crear.
gcloud
Usa el comando gcloud compute machine-images create para crear una imagen de máquina a partir de una instancia.
gcloud compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME
Reemplaza lo siguiente:
MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear.SOURCE_INSTANCE_NAME: nombre de la instancia de origen desde la que deseas crear la imagen.
Ejemplo
Por ejemplo, puedes usar el siguiente comando de gcloud para crear una imagen de máquina llamada my-machine-image desde una instancia de origen llamada my-instance:
gcloud compute machine-images create my-machine-image \
--source-instance=my-instance
El proceso toma unos minutos. Cuando se crea la imagen de máquina, obtienes un resultado similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image]. NAME STATUS my-machine-image READY
REST
En la API, realiza una solicitud POST al método machineimages.insert. En el cuerpo de la solicitud, incluye la siguiente solicitud POST:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL"
}
Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoMACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear.SOURCE_INSTANCE_URL: Es la URL parcial o completa de la instancia de origen que deseas usar para crear la imagen de máquina. Por ejemplo, si tienes una instancia de origen llamadamy-instanceen un proyecto llamadomyProject, las siguientes URL son válidas:https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instanceprojects/myProject/global/instances/my-instanceglobal/instances/my-instance
Crea una imagen de máquina y, luego, incluye discos específicos (versión preliminar)
Puedes usar la copia de seguridad selectiva del disco para crear una imagen de máquina que incluya o excluya discos específicos que no sean de arranque.
Las copias de seguridad selectivas del disco te permiten realizar las siguientes tareas cuando creas una imagen de máquina:
Incluye discos específicos que no son de arranque: Puedes crear una imagen de máquina que haga una copia de seguridad solo del disco de arranque y de una lista específica de discos que no son de arranque que proporciones.
Excluye discos específicos que no sean de arranque: Puedes crear una imagen de máquina que haga una copia de seguridad del disco de arranque y de todos los discos conectados que no sean de arranque excepto los que especifiques en una lista de exclusión.
Prácticas recomendadas para instancias de Linux
En el caso de las instancias de Linux, recomendamos las siguientes prácticas recomendadas:
Cuando crees una imagen de máquina que excluya discos específicos que no sean de arranque o los omita con una lista de inclusión, asegúrate de que el archivo
/etc/fstaben las instancias de Compute Engine de origen de Linux use la opciónnofailpara esos discos. Esto evita que la instancia de Compute Engine restaurada no pueda arrancar si falta un disco esperado.Durante el proceso de arranque de una instancia de Compute Engine restablecida a partir de una imagen de máquina, el sistema operativo intenta activar todos los discos que se enumeran en
/etc/fstab. Si falta un disco esperado y no se especifica la opciónnofail, el proceso de inicio se detiene y la instancia no se puede iniciar. Para solucionar los errores de arranque, consulta Soluciones alternativas para los errores de arranque causados por la exclusión de discos específicos.
Incluir solo discos específicos
Sigue estas instrucciones para crear una imagen de máquina a partir de discos específicos. Siempre debes incluir el disco de arranque. No puedes crear una imagen de máquina a partir de solo discos específicos con la consola de Cloud de Confiance . Debes usar Google Cloud CLI o REST.
Google Cloud CLI
Usa el comando gcloud beta compute machine-images create para crear una imagen de máquina solo a partir de discos específicos.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--include-disks=BOOT_DISK,DISK_NAME_1,DISK_NAME_2
Reemplaza lo siguiente:
MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear.SOURCE_INSTANCE_NAME: Es el nombre de la instancia de origen desde la que deseas crear la imagen.ZONE: Es la zona en la que se encuentra la instancia de origen.BOOT_DISK, DISK_NAME_1,DISK_NAME_2: Es una lista separada por comas del disco de arranque y los discos que no son de arranque conectados a la instancia de origen que deseas incluir en la imagen de máquina.
Por ejemplo, puedes usar el siguiente comando de gcloud para crear una imagen de máquina llamada my-gmi-include desde una instancia de origen llamada my-instance ubicada en us-central1-a, que incluya solo data-disk-1 y data-disk-2:
gcloud beta compute machine-images create my-gmi-include \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--include-disks=boot-disk,data-disk-1,data-disk-2
REST
En la API, realiza una solicitud POST al método machineimages.insert. En el cuerpo de la solicitud, incluye la siguiente solicitud POST:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"includedDisks": ["BOOT_DISK", "DISK_NAME_1", "DISK_NAME_2"]
}
}
Reemplaza lo siguiente:
PROJECT_ID: ID del proyecto que contiene la imagen de máquina, por ejemplo,my-project.MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear.SOURCE_INSTANCE_URL: Es la URL parcial o completa de la instancia de origen que deseas usar para crear la imagen de máquina.BOOT_DISK, DISK_NAME_1, DISK_NAME_2: Es la lista de los discos de arranque y los discos que no son de arranque conectados a la instancia de origen que deseas incluir en la imagen de máquina.
Crea una imagen de máquina y excluye discos específicos (versión preliminar)
Sigue estas instrucciones para crear una imagen de máquina y excluir discos específicos de la copia de seguridad. No puedes excluir el disco de arranque. No puedes crear una imagen de máquina y excluir discos específicos con la consola de Cloud de Confiance . Puedes usar Google Cloud CLI o REST.
gcloud
Usa el comando gcloud beta compute machine-images create para crear una imagen de máquina y excluir discos específicos.
gcloud beta compute machine-images create MACHINE_IMAGE_NAME \
--source-instance=SOURCE_INSTANCE_NAME \
--source-instance-zone=ZONE \
--exclude-disks=DISK_NAME_1,DISK_NAME_2
Reemplaza lo siguiente:
MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear.SOURCE_INSTANCE_NAME: nombre de la instancia de origen desde la que deseas crear la imagen.ZONE: Es la zona en la que se encuentra la instancia de origen.DISK_NAME_1,DISK_NAME_2: Es una lista separada por comas de los discos que no son de arranque conectados a la instancia de origen que deseas excluir de la imagen de máquina.
Ejemplo
Por ejemplo, puedes usar el siguiente comando de gcloud para crear una imagen de máquina llamada my-gmi-exclude a partir de una instancia de origen llamada my-instance ubicada en us-central1-a, sin incluir temp-disk-1 ni scratch-disk:
gcloud beta compute machine-images create my-gmi-exclude \
--source-instance=my-instance \
--source-instance-zone=us-central1-a \
--exclude-disks=temp-disk-1,scratch-disk
REST
En la API, realiza una solicitud POST al método machineimages.insert. En el cuerpo de la solicitud, incluye la siguiente solicitud POST:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/machineImages
{
"name": "MACHINE_IMAGE_NAME",
"sourceInstance": "SOURCE_INSTANCE_URL",
"params": {
"excludedDisks": ["DISK_NAME_1", "DISK_NAME_2"]
}
}
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto que contiene la imagen de máquina.MACHINE_IMAGE_NAME: Es el nombre de la imagen de máquina que deseas crear.SOURCE_INSTANCE_URL: Es la URL parcial o completa de la instancia de origen que deseas usar para crear la imagen de máquina.DISK_NAME_1, DISK_NAME_2: Es la lista de los discos que no son de arranque conectados a la instancia de origen que deseas excluir de la imagen de máquina.
Soluciones alternativas para las fallas de arranque causadas por la exclusión de discos específicos
Si creas una instancia a partir de una imagen de máquina en la que un disco excluido provoca una falla de arranque, puedes recuperar la instancia con cualquiera de las siguientes soluciones alternativas:
Conéctate a la consola en serie: habilita y conéctate a la consola en serie interactiva de la instancia de Compute Engine que no se puede iniciar. Accede para solucionar el problema y editar el archivo
/etc/fstabdirectamente para quitar la entrada del disco faltante o agregar la opciónnofail.Intercambio de discos: Si una instancia de Compute Engine no puede arrancar porque se excluyó un disco de la imagen de máquina, pero aún aparece en
/etc/fstabsin la opciónnofail, usa las siguientes instrucciones para reparar la configuración con Google Cloud CLI.Detén la instancia de Compute Engine que no se puede iniciar con el comando
gcloud compute instances stop:gcloud compute instances stop UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Reemplaza lo siguiente:
UNBOOTABLE_INSTANCE_NAME: Es el nombre de la instancia de Compute Engine que no se puede iniciar.ZONE: Es la zona en la que se encuentran las instancias de Compute Engine.
Desconecta el disco de arranque con el comando
gcloud compute instances detach-disk:gcloud compute instances detach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Reemplaza lo siguiente:
UNBOOTABLE_INSTANCE_NAME: Es el nombre de la instancia de Compute Engine que no se puede iniciar.BOOT_DISK_NAME: Es el nombre del disco de arranque conectado a la instancia de Compute Engine que no se puede iniciar.ZONE: Es la zona en la que se encuentran las instancias de Compute Engine.
Conecta el disco como disco secundario a otra instancia de Compute Engine en funcionamiento con el comando
gcloud compute instances attach-disk:gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Reemplaza lo siguiente:
SECONDARY_INSTANCE_NAME: Es el nombre de la instancia secundaria de Compute Engine que se usa para reparar el disco.BOOT_DISK_NAME: Es el nombre del disco de arranque conectado a la instancia de Compute Engine que no se puede iniciar.ZONE: Es la zona en la que se encuentran las instancias de Compute Engine.
Monta el disco y edita su archivo
/etc/fstabpara corregir la entrada problemática con la siguiente secuencia de instrucciones:Conéctate a la instancia secundaria de Compute Engine con SSH:
gcloud compute ssh SECONDARY_INSTANCE_NAME \ --zone=ZONE
Reemplaza lo siguiente:
SECONDARY_INSTANCE_NAME: Es el nombre de la instancia secundaria de Compute Engine que se usa para reparar el disco.ZONE: Es la zona en la que se encuentran las instancias de Compute Engine.
Identifica el disco conectado, por lo general
/dev/sdbo similar, conlsblk:lsblk
Crea un punto de activación temporal:
sudo mkdir /mnt/repair
Activa la partición raíz:
sudo mount /dev/DEVICE_PARTITION /mnt/repair
Reemplaza
DEVICE_PARTITIONpor el nombre del dispositivo y el número de partición del disco secundario conectado en la instancia secundaria de Compute Engine (por ejemplo,sdb1).Abre el archivo
fstab:sudo nano /mnt/repair/etc/fstab
Agrega la opción
nofaila la entrada del disco faltante o comenta la línea por completo agregando un#al principio.Guarda y cierra.
Desactiva el disco:
sudo umount /mnt/repair
Desconecta el disco de la instancia secundaria de Compute Engine con el comando
gcloud compute instances detach-disk:gcloud compute instances detach-disk SECONDARY_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --zone=ZONE
Reemplaza lo siguiente:
SECONDARY_INSTANCE_NAME: Es el nombre de la instancia secundaria de Compute Engine en funcionamiento que se usa para reparar el disco.BOOT_DISK_NAME: Es el nombre del disco de arranque conectado a la instancia de Compute Engine que no se puede iniciar.ZONE: Es la zona en la que se encuentran las instancias de Compute Engine.
Vuelve a conectar el disco como disco de arranque a la instancia original de Compute Engine con el comando
gcloud compute instances attach-disk:gcloud compute instances attach-disk UNBOOTABLE_INSTANCE_NAME \ --disk=BOOT_DISK_NAME \ --boot \ --zone=ZONE
Reemplaza lo siguiente:
UNBOOTABLE_INSTANCE_NAME: Es el nombre de la instancia de Compute Engine que no se puede iniciar.BOOT_DISK_NAME: Es el nombre del disco de arranque conectado a la instancia de Compute Engine que no se puede iniciar.ZONE: Es la zona en la que se encuentran las instancias de Compute Engine.
Inicia la instancia reparada de Compute Engine:
gcloud compute instances start UNBOOTABLE_INSTANCE_NAME \ --zone=ZONE
Reemplaza lo siguiente:
UNBOOTABLE_INSTANCE_NAME: Es el nombre de la instancia de Compute Engine que no se puede iniciar.ZONE: Es la zona en la que se encuentran las instancias de Compute Engine.
Próximos pasos
- Obtén más información sobre las imágenes de máquina.
- Crea instancias a partir de imágenes de máquina