Configurar la imagen de VM para la implementación de Terraform

En este artículo se describe cómo terminar de configurar y enviar su imagen de VM para la implementación con Terraform.

Determinar cómo crear un paquete de despliegue

Te recomendamos que uses la opción de configuración guiada del Portal para productores para crear tu paquete de implementación directamente en la Google Cloud consola.

La opción de configuración guiada admite productos de máquinas virtuales sencillos, como implementaciones de una sola máquina virtual con reglas de firewall básicas, pero no admite algunas funciones complejas, como las implementaciones con varias máquinas virtuales y recursos que no son de computación. Si necesitas funciones que no admite la configuración guiada, puedes usar la opción de configuración manual para crear tu paquete de implementación o para personalizar un paquete ya creado añadiéndole funciones adicionales.

Cambiar entre la configuración guiada y la manual

Si usas la opción de configuración guiada del portal para productores y, más adelante, quieres cambiar a la configuración manual de tu paquete de implementación, haz clic en Ir a configuración manual.

Completar la configuración guiada

Para terminar de configurar y enviar un paquete de implementación sencillo mediante la consolaGoogle Cloud , sigue estos pasos:

  1. En el portal Producer, ve a la sección Paquete de implementación.

  2. En Configuración de Terraform, junto al campo de entrada Segmento de Cloud Storage, haz clic en Buscar.

    Si ya has creado un segmento de Cloud Storage, selecciónalo aquí.

    Si no tienes ningún segmento de Cloud Storage, haz clic en el icono Crear segmento. Cuando creas un nuevo segmento, puedes hacer lo siguiente:

    • Selecciona un nombre para el segmento.

    • Especifica en qué región o regiones se almacenan los datos del segmento.

    • Especifica la clase de almacenamiento de tus datos.

    • Determina el nivel de granularidad que se aplicará a los permisos de gestión de identidades y accesos (IAM) de los datos del segmento.

    • Configura los ajustes avanzados opcionales, como el cifrado o las políticas de conservación de datos.

  3. Habilita la gestión de versiones de objetos en tu segmento de Cloud Storage.

  4. Para guardar los ajustes del segmento y seguir configurando el paquete de implementación, haga clic en Configurar.

  5. En Elige el tipo de máquina, debes especificar una zona predeterminada, un tipo de máquina mínimo y un tipo de máquina predeterminado para tu producto de máquina virtual, así como el tamaño y el tipo de su disco de arranque.

  6. En Especificar sistema operativo, debe indicar el nombre y la versión del SO que usa la imagen de VM, así como el número de versión de la imagen de VM.

  7. En Configurar acceso a la VM, puedes especificar las URLs del sitio y del administrador, así como un nombre de usuario y una contraseña que los usuarios podrán usar para acceder a la VM después de la implementación.

  8. Opcionalmente, en Configurar red, puede especificar los ajustes de Reenvío de IP y configurar las reglas del Cortafuegos.

  9. Opcionalmente, en Define next steps (Define los pasos siguientes), puedes proporcionar instrucciones a los usuarios de tu producto para guiarlos en los primeros pasos. Estas instrucciones se mostrarán a los clientes después de que implementen tu producto.

  10. Después de completar los pasos anteriores, haga clic en Generar para crear el paquete de implementación.

    Si necesitas hacer más cambios en el paquete de implementación más adelante, puedes hacer clic en Editar para modificarlo y, a continuación, en Generar para volver a generar el paquete de implementación con los cambios aplicados.

  11. Valida el paquete de implementación en Producer Portal.

  12. Una vez que Cloud Marketplace haya validado correctamente tu paquete de implementación, haz clic en Publicar para empezar a probarlo.

Completa la configuración manual

En esta sección se explica cómo usar la opción de configuración manual para crear un paquete de implementación y enviarlo a revisión.

Especificar si se debe usar el módulo de Terraform predeterminado o uno personalizado

Puede elegir si quiere que sus clientes usen el módulo de Terraform predeterminado o uno personalizado al implementar su producto.

Si decides usar el módulo de Terraform predeterminado, Google Cloud proporciona a tus clientes código de Terraform generado automáticamente que pueden usar para implementar tu producto.

Si decides usar un módulo de Terraform personalizado, debes proporcionar tus propias plantillas de Terraform a tu cliente. Puedes proporcionar estas plantillas en un formato que los clientes puedan desplegar mediante la interfaz de línea de comandos (CLI) o con metadatos adicionales que les permitan desplegar módulos directamente desde Cloud Marketplace.

Para especificar si tus clientes deben usar el módulo de Terraform predeterminado o uno personalizado y, en el caso de los módulos de Terraform personalizados, cómo quieres que tus clientes implementen el módulo, sigue estos pasos:

  1. En el portal Producer, ve a la sección Paquete de implementación.

  2. En Configuración de Terraform, en Tipo, selecciona Predeterminado, Personalizado (despliegue con la CLI) o Personalizado (despliegue con la interfaz de usuario).

Requisitos de los módulos de Terraform personalizados

Si seleccionas la opción de usar módulos de Terraform personalizados, tu módulo personalizado debe cumplir los siguientes requisitos:

  • Tu módulo personalizado debe tener un módulo que Cloud Marketplace pueda usar para verificar que cumple los requisitos. Para obtener más información, consulta Comprobar que tu módulo supera la verificación.

  • Tu módulo debe tener una variable llamada project_id, que almacena el ID del proyecto que tus clientes usan para implementar el módulo.

  • Debes especificar referencias a los nombres de tus imágenes como variables de Terraform, con el formato projects/PROJECT_NAME/global/images/IMAGE_NAME. El valor de default debe ser el nombre de la imagen de tu VM para que la copia de la imagen propiedad de Cloud Marketplace se pueda sustituir en el módulo cuando se publique tu producto de VM.

  • Tu módulo no debe depender de módulos externos que no estén empaquetados con él.

  • Tu módulo solo debe usar los siguientes proveedores aprobados:

    • archive
    • cloud-init
    • dns
    • google
    • google-beta
    • http
    • null
    • random
    • time
    • tls

Para ver un ejemplo de un módulo personalizado que cumpla estos requisitos, consulta el módulo de Terraform personalizado de ejemplo.

Requisitos adicionales para los módulos de Terraform personalizados para la implementación de la interfaz de usuario

Si tu módulo personalizado admite la implementación de la interfaz de usuario, debe cumplir los siguientes requisitos adicionales:

  • Tu módulo debe contener una variable llamada goog_cm_deployment_name. Cloud Marketplace usa esta variable para asignar nombres a las implementaciones de sus clientes en la página de implementación. Debes usar esta variable para evitar conflictos de nombres de recursos entre varias implementaciones de un proyecto. Para ver un ejemplo, consulta goog_cm_deployment_name en el módulo de Terraform personalizado de ejemplo.

  • En el archivo metadata.display.yaml, debes especificar ET_GCE_DISK_IMAGE como el tipo xGoogleProperty de todas las variables de imagen. Por ejemplo, consulta metadata.display.yaml en el módulo de Terraform personalizado de ejemplo.

  • Si su producto contiene imágenes de varias VMs o imágenes que admiten varias arquitecturas de CPU, debe añadir enumValueLabels para que sus clientes puedan seleccionar la imagen de VM que quieran usar. Para ver un ejemplo, consulta el módulo de Terraform personalizado de ejemplo.

  • Tu módulo no debe depender de la compatibilidad con provisionadores de Terraform.

Pasos adicionales para módulos de Terraform personalizados

Si has seleccionado usar módulos de Terraform personalizados, debes completar los siguientes pasos adicionales para configurar la imagen de VM para la implementación:

  1. En el portal Producer, ve a la sección Paquete de implementación.

  2. En Configuración de Terraform, en Variables de imagen, haga clic en Añadir variable.

    Para habilitar la implementación de Terraform de tu producto, debes activar el uso de imágenes propiedad de Marketplace. Cloud Marketplace usa la variable que añada aquí para sustituirla por la versión de su imagen de VM propiedad de Marketplace cuando un cliente implemente su producto.

  3. En el campo de texto Variable de imagen, introduzca un nombre para la variable, como "image".

  4. En tu módulo de Terraform personalizado, asigna a la variable que has creado en el paso anterior el nombre de la imagen de VM de tu producto, con el formato projects/YOUR_PROJECT/global/images/YOUR_IMAGE.

  5. En Specify your GCS object location (Especificar la ubicación del objeto de GCS), haga clic en Browse (Buscar).

    Si ya has creado un segmento de Cloud Storage, selecciónalo aquí.

    Si no tienes ningún segmento de Cloud Storage, haz clic en el icono Crear segmento. Cuando creas un nuevo segmento, puedes hacer lo siguiente:

    • Selecciona un nombre para el segmento.

    • Especifica en qué región o regiones se almacenan los datos del segmento.

    • Especifica la clase de almacenamiento de tus datos.

    • Determina el nivel de granularidad que se aplicará a los permisos de gestión de identidades y accesos (IAM) de los datos del segmento.

    • Configura los ajustes avanzados opcionales, como el cifrado o las políticas de conservación de datos.

  6. Asegúrate de que la gestión de versiones de objetos esté habilitada en tu segmento de Cloud Storage.

  7. Para guardar la configuración del segmento y seguir configurando el paquete de implementación, haga clic en Configurar.

  8. En Roles obligatorios, especifique los roles de gestión de identidades y accesos que deben tener sus clientes para implementar su producto.

(Solo para implementaciones de la interfaz de usuario) Crear metadatos para un módulo de Terraform personalizado

Para que tu módulo personalizado admita la implementación de la interfaz de usuario, debes crear y añadir metadatos que Cloud Marketplace utilice para analizar correctamente tu módulo y renderizarlo en la interfaz de usuario para tu cliente.

Para crear y añadir estos metadatos, puedes usar la herramienta de línea de comandos de CFT de código abierto. Para usar CFT y crear y añadir metadatos a tus módulos personalizados, sigue estos pasos:

  1. Instala la herramienta de la CLI de CFT. Para obtener más información, consulta la documentación de la CLI de CFT. Te recomendamos que especifiques el valor de VERSION como latest y que asignes a PLATFORM uno de los siguientes valores:

    • linux

    • windows

    • darwin

  2. Ejecuta el siguiente comando:

     cft blueprint metadata -p TF_PACKAGE_PATH -q -d --nested=false
    

    En el comando anterior, la marca -p proporciona una ruta para el paquete de Terraform, la marca -q genera metadatos sin necesidad de información de un repositorio remoto, la marca -d genera el archivo metadata.display.yaml y la marca --nested=false genera metadatos para el módulo raíz, omitiendo los módulos de la carpeta modules/.

Después de completar los pasos anteriores, la herramienta de línea de comandos de CFT genera dos archivos nuevos: metadata.yaml y metadata.display.yaml.

Personalizar los metadatos de un módulo de Terraform personalizado

Cloud Marketplace usa el archivo metadata.display.yaml para personalizar el formulario que usan los clientes para implementar tu producto a través de la interfaz de usuario. Si quiere personalizar este formulario, después de crear los metadatos, puede modificar los valores de los campos en metadata.display.yaml. Para obtener información sobre las opciones de personalización disponibles, consulta la documentación de BlueprintUI de código abierto o el esquema de BlueprintUI.

Te recomendamos que uses la extensión GooglePropertyExtensions para modificar los metadatos. GooglePropertyExtensions te permite usar validaciones específicas deGoogle Cloud, como obligar a los clientes a seleccionar solo redes de nube privada virtual (VPC) que ya existan en su proyecto. Para ver un ejemplo, consulta el módulo de Terraform personalizado de ejemplo.

Validar los metadatos de un módulo personalizado

Para validar los metadatos de tu módulo personalizado, ejecuta el siguiente comando:

cft blueprint metadata -p TF_PACKAGE_PATH -v

En el comando anterior, la marca -p proporciona una ruta para el paquete de Terraform y la marca -v valida todos los archivos de metadatos de la ruta proporcionada según el esquema BlueprintMetadata.

Comprobar que tu módulo supera la verificación

Tu módulo personalizado supera la verificación si el siguiente comando se ejecuta correctamente:

terraform plan -var project_id=YOUR_PROJECT -var-file marketplace_test.tfvars

En el comando anterior, marketplace_test.tfvars es un archivo de variables de Terraform que solo usa Cloud Marketplace para verificar el módulo. Si tu plantilla declara alguna variable que no tiene un valor predeterminado y no asignas un valor a esas variables, el comando no se ejecutará correctamente. Para asegurarte de que el comando se ejecuta correctamente, puedes crear un archivo marketplace_test.tfvars para definir los valores de las variables que declara tu plantilla. Para ver un ejemplo de archivo marketplace_test.tfvars, consulta el módulo de Terraform personalizado de ejemplo.

(Opcional) (Solo para la implementación de la CLI) Incluye un módulo de prueba

De forma opcional, si tu módulo personalizado admite la implementación de CLI, puedes incluir una carpeta llamada examples/marketplace_test. Puede que quieras hacerlo si tu producto necesita incluir un módulo de prueba independiente para verificar sus funciones. Si incluyes esta carpeta, para que tu módulo supere la verificación, debes ejecutar el siguiente comando correctamente:

terraform -chdir=examples/marketplace_test plan -var project_id=YOUR_PROJECT

Validar y probar la implementación

Una vez que hayas creado y configurado tu paquete de implementación, debes validarlo y probarlo para que el equipo de Cloud Marketplace pueda revisarlo y aprobarlo.

  1. En el portal Producer, ve a la sección Paquete de implementación.

  2. Haz clic en Validar. El proceso de validación puede tardar hasta dos horas en completarse. Puedes salir de la pantalla mientras se ejecuta.

  3. Una vez que se haya completado la validación, haz clic en Vista previa de la implementación para probarla.

Siguientes pasos

Una vez que hayas validado y probado correctamente tu implementación, puedes hacer clic en Publicar para enviar tu producto general a revisión y publicación en Cloud Marketplace. Para obtener más información, consulta el artículo Enviar un producto.