Configura tu imagen de VM para la implementación de Terraform

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

Determina cómo crear tu paquete de implementación

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

La opción de configuración guiada admite productos de VM simples, como implementaciones de VM única con reglas de firewall básicas, pero no admite algunas funciones complejas, como implementaciones con varias VMs y recursos que no son de procesamiento. 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 personalizar un paquete existente agregándole capacidades adicionales.

Cómo cambiar entre la configuración guiada y la manual

Si usas la opción de configuración guiada de Producer Portal y, luego, deseas cambiar de forma manual a tu paquete de implementación, haz clic en Ir a la configuración manual.

Completa la configuración guiada

Para terminar de configurar y enviar un paquete de implementación simple con la console de Google Cloud, completa los siguientes pasos:

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

  2. En Configuración de Terraform, junto al campo de entrada etiquetado como Bucket de Cloud Storage, haz clic en Explorar.

    Si ya creaste un bucket de Cloud Storage, selecciónalo aquí.

    Si no tienes un bucket de Cloud Storage, haz clic en el ícono etiquetado como Create new bucket. Cuando creas un bucket nuevo, puedes hacer lo siguiente:

    • Selecciona un nombre para el bucket.

    • Especifica en qué regiones almacena datos el bucket.

    • Especifica la clase de almacenamiento para tus datos.

    • Determina qué nivel de detalle aplicar a los permisos de Identity and Access Management (IAM) para los datos del bucket.

    • Configura la configuración avanzada opcional, como la encriptación o las políticas de retención de datos.

  3. Asegúrate de habilitar el control de versiones de objetos para tu bucket de Cloud Storage.

  4. Para guardar la configuración del bucket y continuar configurando tu paquete de despliegue, haz 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 VM, junto con el tamaño y el tipo de su disco de arranque.

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

  7. De manera opcional, en Configurar acceso a la VM, puedes especificar las URLs del sitio y del administrador, junto con un nombre de usuario y una contraseña, que los usuarios pueden usar para acceder a la VM después de la implementación.

  8. De forma opcional, en Configurar redes, puedes especificar la configuración para el reenvío de IP y configurar reglas de firewall.

  9. De manera opcional, en Define los próximos pasos, puedes proporcionar instrucciones a los usuarios de tu producto para guiarlos en el proceso de comenzar a usarlo. Podrán ver estas instrucciones después de implementar tu producto.

  10. Después de completar los pasos anteriores, haz clic en Generate para crear tu paquete de implementación.

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

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

  12. Una vez que se complete correctamente la validación de tu paquete de implementación por parte de Cloud Marketplace, haz clic en Publicar para comenzar 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 para su revisión.

Especifica si quieres usar el módulo predeterminado o uno personalizado de Terraform

Puedes elegir si deseas que tus clientes usen el módulo de Terraform predeterminado o uno personalizado cuando implementen tu producto.

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

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

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

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

  2. En Configuración de Terraform, en Tipo, selecciona Predeterminada, Personalizada (implementación de CLI) o Personalizada (implementación de IU).

Requisitos para los módulos personalizados de Terraform

Si eliges usar módulos personalizados de Terraform, estos deben cumplir con los siguientes requisitos:

  • Tu módulo personalizado debe tener un módulo que Cloud Marketplace pueda usar para verificar que cumpla con los requisitos. Para obtener más información, consulta Cómo probar que tu módulo pase la verificación.

  • Tu módulo debe tener una variable llamada project_id, que almacena el ID del proyecto que usan tus clientes 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 se debe establecer en el nombre de la imagen de la VM para que la copia de la imagen que pertenece a Cloud Marketplace se pueda reemplazar en el módulo cuando se publique tu producto de VM.

  • Tu módulo no debe depender de módulos externos que no se empaqueten con él.

  • Tu módulo debe usar solo 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 con estos requisitos, visita el módulo de Terraform personalizado de muestra.

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

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

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

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

  • Si tu producto contiene imágenes de varias VMs o imágenes que admiten varias arquitecturas de CPU, debes agregar enumValueLabels para que tus clientes puedan seleccionar la imagen de VM que desean usar. Para ver un ejemplo, consulta el módulo de Terraform personalizado de muestra.

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

Pasos adicionales para módulos de Terraform personalizados

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

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

  2. En Configuración de Terraform, en Variables de imagen, haz clic en Agregar variable.

    Para habilitar la implementación de Terraform de tu producto, debes haber activado el uso de imágenes de Marketplace. Cloud Marketplace usa la variable que agregas aquí para intercambiar la versión de la imagen de la VM que pertenece a Marketplace cuando un cliente implementa tu producto.

  3. En el campo de texto Image Variable, ingresa un nombre para tu variable, como "image".

  4. En tu módulo de Terraform personalizado, establece el valor predeterminado de la variable que creaste en el paso anterior en el nombre de la imagen de la VM de tu producto, en el formato projects/YOUR_PROJECT/global/images/YOUR_IMAGE.

  5. En Especifica la ubicación de tu objeto de GCS, haz clic en Explorar.

    Si ya creaste un bucket de Cloud Storage, selecciónalo aquí.

    Si no tienes un bucket de Cloud Storage, haz clic en el ícono etiquetado como Create new bucket. Cuando creas un bucket nuevo, puedes hacer lo siguiente:

    • Selecciona un nombre para el bucket.

    • Especifica en qué regiones almacena datos el bucket.

    • Especifica la clase de almacenamiento para tus datos.

    • Determina qué nivel de detalle aplicar a los permisos de Identity and Access Management (IAM) para los datos del bucket.

    • Configura la configuración avanzada opcional, como la encriptación o las políticas de retención de datos.

  6. Asegúrate de tener habilitado el control de versiones de objetos para tu bucket de Cloud Storage.

  7. Para guardar la configuración del bucket y continuar con la configuración del paquete de despliegue, haz clic en Configurar.

  8. En Roles obligatorios, especifica los roles de IAM que deben tener tus clientes para implementar tu producto.

(Solo para la implementación de la IU) Crea metadatos para tu módulo de Terraform personalizado

Para que tu módulo personalizado admita la implementación de la IU, debes crear y agregar los metadatos que usa Cloud Marketplace para analizar correctamente tu módulo y renderizarlo en la IU para tu cliente.

Para crear y agregar estos metadatos, puedes usar la herramienta de CLI de CFT de código abierto. Para usar CFT y crear y agregar metadatos a tus módulos personalizados, completa los siguientes 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 que el valor de VERSION sea latest y que establezcas PLATFORM en 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 de acceso para el paquete de Terraform, la marca -q genera metadatos sin necesidad de información para 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 cualquier módulo en la carpeta modules/.

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

Personaliza los metadatos de tu módulo de Terraform personalizado

Cloud Marketplace usa el archivo metadata.display.yaml para personalizar el formulario que los clientes usan para implementar tu producto a través de la IU. Si deseas personalizar este formulario, después de crear tus metadatos, puedes alterar los valores de los campos en metadata.display.yaml. Para obtener detalles sobre las opciones de personalización disponibles, visita la documentación de BlueprintUI de código abierto o consulta el esquema de BlueprintUI.

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

Valida los metadatos de tu 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 de acceso para el paquete de Terraform, y la marca -v valida todos los archivos de metadatos en la ruta de acceso proporcionada según el esquema BlueprintMetadata.

Prueba que tu módulo pase la verificación

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

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, solo para esta verificación del modulo. Si tu plantilla declara variables que no tienen un valor predeterminado y no estableces un valor para esas variables, el comando no se ejecutará correctamente. Para asegurarte de que el comando se ejecute correctamente, puedes crear un archivo marketplace_test.tfvars para establecer valores para las variables que declara tu plantilla. Para ver un ejemplo de archivo marketplace_test.tfvars, consulta el ejemplo de módulo de Terraform personalizado.

Incluye un módulo de prueba (opcional) (solo para la implementación de CLI)

De manera opcional, si tu módulo personalizado admite la implementación de CLI, puedes incluir una carpeta llamada examples/marketplace_test. Te recomendamos que lo hagas si tu producto necesita incluir un módulo de prueba independiente para verificar sus funciones. Si incluyes esta carpeta, para que tu módulo pase la verificación, el siguiente comando debe ejecutarse correctamente:

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

Valida y prueba tu implementación

Después de crear y configurar tu paquete de implementación, debes validarlo y probarlo antes de que el equipo de Cloud Marketplace pueda revisarlo y aprobarlo.

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

  2. Haz clic en Validate. El proceso de validación puede tardar hasta dos horas en completarse, y puedes salir de la pantalla mientras se ejecuta.

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

¿Qué sigue?

Después de validar y probar correctamente tu implementación, puedes hacer clic en Publicar para enviar tu producto general para su revisión y publicación en Cloud Marketplace. Para obtener más información, consulta Cómo enviar tu producto.