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

En este artículo, se describe cómo terminar de configurar y enviar tu imagen de VM para implementarla 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 básicas de firewall, pero no admite algunas funciones complejas, como implementaciones con varias VM y recursos que no son de procesamiento. Si necesitas funciones que la configuración guiada no admite, puedes usar la opción de configuración manual para crear tu paquete de implementación o a fin de personalizar un paquete existente agregándole capacidades adicionales.

Alterna entre la configuración guiada y la configuración manual

Si usas la opción de configuración guiada de Producer Portal y luego quieres cambiar a la configuración manual de 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 consola 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 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 Crear bucket nuevo. Cuando creas un bucket nuevo, sucede lo siguiente:

    • Selecciona un nombre para el bucket.

    • Especifica en qué región o regiones el bucket almacena los datos.

    • Especifica la clase de almacenamiento de tus datos.

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

    • Establece 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 el bucket de Cloud Storage.

  4. Para guardar la configuración del bucket y continuar con la configuración del paquete de implementación, haz clic en Configure (Configurar).

  5. En Elegir el tipo de máquina, debes especificar una Zona predeterminada, un Tipo mínimo de máquina y un Tipo de máquina predeterminado para tu producto de VM, junto con el tamaño y el tipo de disco de arranque.

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

  7. De manera opcional, en Configura el acceso a las 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 manera opcional, en Configurar redes, puedes especificar la configuración del reenvío de IP y configurar las reglas de Firewall.

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

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

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

  11. Envía el paquete de implementación para su revisión en Producer Portal. Una vez que envíes el paquete, Google puede tardar hasta dos semanas en revisarlo y aprobarlo.

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.

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

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

Si eliges 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 eliges usar un módulo de Terraform personalizado, debes proporcionar tus propias plantillas de Terraform a tu cliente. Puedes optar por proporcionar estas plantillas en un formato que los clientes puedan implementar mediante 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 los clientes deben usar el módulo predeterminado o uno personalizado de Terraform y, para los módulos personalizados de Terraform, cómo quieres que 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 Predeterminado, Personalizada (implementación de la CLI) o Personalizada (implementación de IU).

Requisitos para módulos personalizados de Terraform

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

  • El 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 apruebe 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 establecerse con el nombre de tu imagen de VM para que la copia de la imagen que pertenezca a 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.

  • El 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 cumple con estos requisitos, visita el módulo de Terraform personalizado de muestra.

Requisitos adicionales de 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 nombrar las implementaciones de los clientes en su página de implementación. Debes usar esta variable para evitar conflictos en los nombres de recursos entre varias implementaciones en un proyecto. Para ver un ejemplo, consulta goog_cm_deployment_name en el módulo de Terraform personalizado de muestra.

  • 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 VM o 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 los módulos personalizados de Terraform

Si elegiste usar módulos de Terraform personalizados, debes completar los siguientes pasos adicionales para configurar tu imagen de 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 activar el uso de las imágenes que son propiedad de Marketplace. Cloud Marketplace usa la variable que agregas aquí para intercambiar la versión de tu imagen de VM que es propiedad de Marketplace cuando un cliente implementa el producto.

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

  4. En tu módulo personalizado de Terraform, establece el valor predeterminado de la variable que creaste en el paso anterior como el nombre de la imagen de 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 Crear bucket nuevo. Cuando creas un bucket nuevo, sucede lo siguiente:

    • Selecciona un nombre para el bucket.

    • Especifica en qué región o regiones el bucket almacena los datos.

    • Especifica la clase de almacenamiento de tus datos.

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

    • Establece la configuración avanzada opcional, como las políticas de encriptación o 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 implementación, haz clic en Configurar.

  8. En Funciones obligatorias, especifica las funciones de IAM que deben tener tus clientes para implementar tu producto.

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

Para que tu módulo personalizado admita la implementación de la IU, debes crear y agregar metadatos que Cloud Marketplace usa a fin de analizar de forma correcta 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. Sigue estos pasos si quieres usar CFT para crear y agregar metadatos a tus módulos personalizados:

  1. Instala la herramienta de CLI de CFT. Para obtener más información, consulta la documentación de la CLI de CFT. Te recomendamos especificar el valor de VERSION como latest y establecer 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 sobre 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 y omite los módulos de la carpeta modules/.

Después de completar los pasos anteriores, la herramienta de la 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 usan los clientes para implementar tu producto a través de la IU. Si deseas personalizar este formulario, después de crear los metadatos, puedes modificar 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 modificar los metadatos. GooglePropertyExtensions te permite usar validaciones específicas de Google Cloud, como aplicar que los clientes solo puedan seleccionar redes de nube privada virtual (VPC) que ya existen 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 proporcionada en función del esquema BlueprintMetadata.

Prueba que tu módulo pase la verificación

El módulo personalizado pasa la verificación si el siguiente comando se ejecuta de forma correcta:

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 módulo. Si tu plantilla declara alguna variable que no tiene un valor predeterminado y no estableces un valor para ellas, el comando no se ejecutará de forma correcta. Para asegurarte de que el comando se ejecute de forma correcta, puedes crear un archivo marketplace_test.tfvars a fin de establecer valores para las variables que declara tu plantilla. Para ver un archivo marketplace_test.tfvars de ejemplo, consulta el módulo de Terraform personalizado de muestra.

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

De manera opcional, si tu módulo personalizado admite la implementación de la 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 capacidades. Si incluyes esta carpeta, se debe ejecutar correctamente el siguiente comando para que el módulo apruebe la verificación:

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

Envía tu paquete de implementación para su revisión

Después de crear y configurar tu paquete de implementación, debes enviar el paquete a Producer Portal para 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 completa.

  3. Una vez que la validación se haya completado con éxito, haz clic en Enviar para enviar el paquete de implementación a revisión. Después de enviar el paquete, Google puede tardar hasta dos semanas en revisarlo y aprobarlo.