Compila una imagen de máquina virtual (VM)

En esta página, se te ayuda a crear una imagen de máquina pública para que tu producto se ejecute en Compute Engine.

Una imagen contiene un cargador de arranque, un sistema operativo y un sistema de archivo raíz necesario para iniciar una instancia. Puedes configurar la imagen con un conjunto de apps y servicios para tu producto. Los clientes utilizan la imagen para iniciar una instancia de máquina virtual (VM) en la nube.

Recomendamos que comiences a crear una imagen en tu proyecto de desarrollo y, luego, la muevas a tu proyecto público después de que la verifique tu Ingeniero socio de Google.

Antes de comenzar

  1. Descarga el SDK de Google Cloud.

Crea la VM de producto base

A fin de crear una imagen de máquina personalizada para Cloud Marketplace, debes completar estos pasos (que se describen en las siguientes secciones):

  • Usa una de las imágenes públicas base compatibles de Google para crear una VM y, luego instala tus paquetes y configuraciones específicas de la app.

    Puedes elegir una imagen que use procesadores ARM o una que use procesadores x86. También puedes 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áquinas que las admiten, consulta Plataformas de CPU.

  • Si quieres brindar asistencia a tus clientes, instala secuencias de comandos para recuperar las credenciales de usuario de la app.

Crea una imagen de VM con licencia

  1. Usa gcloud a fin de establecer valores predeterminados para Google Cloud CLI:

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

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. Instala y personaliza tu software. Incluye todas las secuencias de comandos de inicio requeridas, como aquellas 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 sobre cómo crear credenciales de autorización en la siguiente sección.

    Una vez que hayas creado y personalizado la instancia principal, prepara el disco necesario para crear una imagen de VM.

  4. Limpia tu disco. La creación de una imagen de VM directamente desde tu VM también transfiere tus directorios de usuarios y claves SSH a las VM de tus clientes, por lo que debes limpiar el disco de entrada cuando creas tu imagen de VM.

    Haz lo siguiente para limpiar el disco:

    1. En el menú Instancias de VMde Compute Engine, haz clic en el nombre de la instancia que deseas limpiar y luego haz clic en Editar.

    2. Desplázate hacia abajo y borra la casilla de verificación Borrar el disco de arranque cuando se borre la instancia y haz clic en Guardar. Debes usar el disco para crear la imagen.

    3. Borra la VM, pero conserva el disco. Se te solicitará que confirmes la eliminación. No selecciones Borrar también disco de arranque.

    4. A continuación, debes crear una instancia de VM nueva. Expande las opciones Administración, disco, herramientas de redes, Llaves SSH.

    5. En disco, adjunta el disco de tu instancia anterior como disco de datos adicional. Asegúrate de que Conservar disco esté seleccionado para Cuando se borre la instancia.

      Ahora puedes establecer una conexión SSH a la instancia y quitar los directorios principales o cualquier otro archivo temporal creado durante el proceso de instalación del software. Debes activar el disco de datos antes de acceder a él. Para obtener más información sobre cómo activar discos, consulta Agrega o cambia el tamaño de los discos persistentes.

    6. Cuando termines, cierra y borra la instancia, pero conserva tu disco de datos actualizado. Ahora puedes crear una imagen de VM si completas los siguientes pasos.

  5. Obtén el nombre de la licencia de tu producto de VM en Producer Portal y sigue estos pasos:

    1. Abre Producer Portal en la consola de Google Cloud:

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

      Reemplaza YOUR_PROJECT_ID por el ID de tu proyecto público o de desarrollo. Recomendamos que comiences a crear una imagen en tu proyecto de desarrollo y luego la muevas a tu proyecto público después de que la haya verificado tu Ingeniero socio de Google.

    2. Haz clic en el nombre de tu 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 la 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
    

    Reemplaza lo siguiente:

    • CREATE_IMAGE_NAME: Es el nombre de tu imagen y las arquitecturas de CPU que admite, en el formato who-vmOS-image-architecture-date, y reemplaza architecture por Arm o x86_64, según la arquitectura de CPU que admita la imagen. Debes usar un nombre nuevo y único cada vez que actualices la imagen para el producto.

    • PUBLIC_PROJECT_NAME: Es el ID del proyecto público de Cloud Marketplace. Debes tener la función de administrador de almacenamiento de Compute (roles/compute.storageAdmin) para este proyecto.

    • LICENSE_NAME: Es el nombre de licencia para tu producto de VM que anotaste en el paso anterior.

    • DEV_PROJECT_NAME: Es el ID del proyecto que creaste para el desarrollo y las pruebas de Cloud Marketplace. Debes tener la función Usuario de imagen de Compute (roles/compute.imageUser) para este proyecto.

    • SOURCE_DISK_ZONE: Es la zona del disco de origen.

    • SOURCE_DISK_NAME: Es el nombre del disco de origen.

    • ADD_DESCRIPTION: Es una descripción textual opcional para la imagen que se crea.

Haz pública la imagen

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

Consola

  1. En tu proyecto público, en Compute Engine, dirígete a la página Images (Imágenes).

    Ir a la página Imágenes

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

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

  4. En el panel de información, en el campo Agregar miembros, ingresa allAuthenticatedUsers, y desde el menú Seleccionar una función, selecciona Calcular usuario de imagen.

  5. Haz clic en Add (Agregar) para hacer pública tu imagen.

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

Crea credenciales de autorización

Si tu producto es una implementación simple de una sola instancia de VM con reglas de firewall básicas, puedes incluir automáticamente una contraseña aleatoria segura cuando configuras tu paquete de implementación de forma directa.

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

Si quieres conocer los pasos para crear credenciales de autorización, consulta Crea tu paquete de implementación.

Después de implementar tu producto, usa el siguiente comando desde tu instancia de VM para obtener los valores de las contraseñas que creaste:

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

Prueba la imagen de VM

Crea una instancia de VM con tu imagen recién creada y verifica la funcionalidad.

Además, para verificar el ID de la licencia, establece una conexión SSH a la instancia y verifica que las licencias válidas estén adjuntas:

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

Verifica que esté instalado Python 2.6 o superior.

python -V

Verifica que estén instalados los siguientes paquetes.

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

Verifica para asegurarte de que no haya otros directorios de usuarios instalados en la instancia, excepto el tuyo, y que no haya ningún directorio de usuario y credenciales que no sean tuyas.