Crear una imagen de máquina virtual

En esta página se explica cómo crear una imagen de máquina pública para que tu producto se ejecute en Compute Engine.

Una imagen contiene un gestor de arranque, un sistema operativo y un sistema de archivos raíz que son necesarios para iniciar una instancia. Puedes configurar la imagen con un conjunto de aplicaciones y servicios para tu producto. Los clientes usan la imagen para iniciar una instancia de máquina virtual en la nube.

Te recomendamos que empieces creando una imagen en tu proyecto de desarrollo y, después, la muevas a tu proyecto público una vez que tu ingeniero de partners de Google haya verificado la imagen.

Antes de empezar

  1. Descarga el SDK de Google Cloud.

Crear la VM del producto base

Para crear una imagen de máquina personalizada para Cloud Marketplace, debes completar estos pasos (descritos en las secciones siguientes):

  • Usa una de las imágenes públicas base admitidas de Google para crear una VM e instala los paquetes y las configuraciones específicos de tu aplicación.

    Puedes elegir una imagen que use procesadores Arm o una que use procesadores x86. También puede incluir varias imágenes, orientadas a diferentes tipos de máquinas, en un producto de VM. Para obtener más información sobre las plataformas de CPU y los tipos de máquina que las admiten, consulta Plataformas de CPU.

  • Si tienes previsto ofrecer asistencia a tus clientes, instala secuencias de comandos para obtener las credenciales de usuario de la aplicación.

Crear una imagen de VM con licencia

  1. Usa gcloud para definir los valores predeterminados de Google Cloud CLI:

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. Crea una instancia principal que se utilice para instalar tu software y, más adelante, conviértela en una imagen para usarla en Cloud Marketplace. Para obtener más información sobre cómo crear una instancia, consulta Crear e iniciar una instancia.

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. Instala y personaliza el software. Incluye las secuencias de comandos de inicio necesarias, como las que se usan para crear credenciales de autorización.

    Para crear credenciales de autorización con contraseñas aleatorias seguras, sigue los pasos que se indican en la sección Crear credenciales de autorización.

    Cuando hayas creado y personalizado la instancia principal, prepara el disco que se necesita para crear una imagen de VM.

  4. Limpia el disco. Si creas una imagen de VM directamente a partir de tu VM, también se transferirán tus directorios de usuario y claves SSH a las VMs de tus clientes, por lo que debes limpiar el disco de entrada al crear la imagen de VM.

    Para limpiar el disco, sigue estos pasos:

    1. En el menú Instancias de VM de Compute Engine, haga clic en el nombre de la instancia que quiera limpiar y, a continuación, en Editar.

    2. Desplázate hacia abajo, desmarca la casilla Eliminar el disco de arranque cuando se elimine la instancia y haz clic en Guardar. Usas el disco para crear la imagen.

    3. Elimina la VM y conserva el disco. Se te pedirá que confirmes la eliminación. No selecciones Eliminar también el disco de arranque.

    4. A continuación, debes crear una instancia de VM. Despliega las opciones Gestión, Disco, Redes y Claves SSH.

    5. En Disco, conecta el disco de tu instancia anterior como disco de datos adicional. Asegúrate de que la opción Conservar disco esté seleccionada en Al eliminar la instancia.

      Ahora puedes conectarte a la instancia mediante SSH y eliminar los directorios principales u otros archivos temporales que se hayan creado durante el proceso de instalación del software. Debes montar el disco de datos para poder acceder a él. Para obtener más información sobre cómo montar discos, consulta Añadir o cambiar el tamaño de discos persistentes.

    6. Cuando hayas terminado, apaga y elimina la instancia, pero conserva el disco de datos actualizado. Ahora puedes crear una imagen de VM siguiendo estos pasos.

  5. Para obtener el nombre de la licencia de tu producto de máquina virtual en Producer Portal, sigue estos pasos:

    1. Abre el Portal para productores en la Google Cloud consola:

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      Sustituye YOUR_PROJECT_ID por el ID de tu proyecto de desarrollo o público. Te recomendamos que empieces creando una imagen en tu proyecto de desarrollo y, después, la muevas a tu proyecto público cuando tu ingeniero de Google Partner la haya verificado.

    2. Haga clic en el nombre de su producto.

    3. Ve a la sección Paquete de implementación. En Licencia de VM, anota el nombre. Usarás este nombre de licencia en el siguiente paso, cuando crees tu imagen.

  6. Para crear una imagen con licencia, ejecuta el siguiente comando gcloud:

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses LICENSE_NAME \
     --description ADD_DESCRIPTION

    Haz los cambios siguientes:

    • CREATE_IMAGE_NAME: El nombre de la imagen y las arquitecturas de CPU que admite, en el formato who-vmOS-image-architecture-date. Sustituye architecture por Arm o x86_64, en función de la arquitectura de CPU que admita la imagen. Debe usar un nombre nuevo y único cada vez que actualice la imagen de su producto.

    • PUBLIC_PROJECT_NAME: el ID del proyecto público de Cloud Marketplace. Debes tener asignado el rol Administrador de almacenamiento de Compute (roles/compute.storageAdmin) en este proyecto.

    • LICENSE_NAME: El nombre de la licencia del producto de máquina virtual que has indicado en el paso anterior.

    • DEV_PROJECT_NAME: el ID del proyecto que has creado para el desarrollo y las pruebas de Cloud Marketplace. Debes tener el rol Usuario de imagen de Compute (roles/compute.imageUser) en este proyecto.

    • SOURCE_DISK_ZONE: la zona del disco de origen.

    • SOURCE_DISK_NAME: nombre del disco de origen.

    • ADD_DESCRIPTION: descripción textual opcional de la imagen que se va a crear.

Hacer pública la imagen

En el caso de los productos que no son de Terraform y que no usan imágenes propiedad de Marketplace, debe hacer que su imagen esté disponible públicamente para que sus clientes puedan implementarla en sus instancias de Compute Engine. Para hacer pública la imagen, usa laGoogle Cloud consola o la CLI de Google Cloud:

Consola

  1. En tu proyecto público, ve a la página Imágenes, en Compute Engine.

    Ir a la página Imágenes

  2. Selecciona la imagen, como se muestra a continuación:

  3. Si no ves ningún panel informativo en la parte superior derecha, haz clic en Mostrar panel de información.

  4. En el panel de información, en el campo Añadir miembros, introduce allAuthenticatedUsers y, en el menú Seleccionar un rol, elige Usuario de imagen de Compute.

  5. Haz clic en Añadir para que tu imagen sea pública.

Línea de comandos

Usa el siguiente comando gcloud en Cloud Shell o en tu máquina local:

gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser

Crear credenciales de autorización

Si tu producto es un despliegue sencillo de una sola instancia de VM con reglas de cortafuegos básicas, puedes incluir automáticamente una contraseña aleatoria segura al configurar tu paquete de despliegue directamente.

Si tienes previsto crear tu paquete de implementación con la herramienta de código abierto mpdev, que recomendamos para la mayoría de los casos prácticos, puedes usar mpdev para incluir automáticamente varias contraseñas aleatorias seguras.

Para ver los pasos para crear credenciales de autorización, consulta la sección Crear un paquete de despliegue.

Una vez que se haya implementado el producto, para obtener los valores de las contraseñas que hayas creado, usa el siguiente comando desde tu instancia de VM:

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

Probar la imagen de VM

Crea una instancia de VM con la imagen que acabas de crear y verifica que funciona correctamente.

Además, para verificar el ID de licencia, conéctate a la instancia mediante SSH y comprueba que haya licencias válidas adjuntas:

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

Comprueba que Python 2.6 o una versión posterior esté instalado:

python -V

Verifica que los siguientes paquetes estén instalados:

gcloud --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

Comprueba que no haya otros directorios de usuario instalados en la instancia, excepto el tuyo, y que no queden directorios de usuario ni credenciales que no sean tuyos.