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 características complejas, como las 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 personalizar un paquete existente agregándole capacidades adicionales.

Cambia 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 configurar manualmente el paquete de implementación, haz clic en Go to manual configuration.

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 Deployment package (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, tienes las siguientes opciones:

    • Selecciona un nombre para el bucket.

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

    • Especifica la clase de almacenamiento para tus datos.

    • Determina qué nivel de detalle se 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 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 Especifica el 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 la VM, puedes especificar las URLs del sitio y de 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 next steps, puedes proporcionar instrucciones para que los usuarios de tu producto los guíen para comenzar a usarlo. Ellos podrán ver estas instrucciones después de implementar tu producto.

  10. Después de completar los pasos anteriores, haz clic en Generar para crear tu 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 los cambios y, luego, en Generar para volver a generar tu paquete de implementación con esos cambios aplicados.

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

  12. Una vez que se haya completado correctamente la validación de tu paquete de implementación por parte de Cloud Marketplace, haz clic en Publicar para comenzar a probar el paquete de implementación.

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 de Terraform predeterminado o uno personalizado

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

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

Si eliges usar un módulo de Terraform personalizado, debes proporcionar tus propias plantillas de Terraform al 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 tus clientes deben usar el módulo de Terraform predeterminado o uno personalizado y, en el caso de los módulos personalizados de Terraform, cómo quieres que tus clientes implementen el módulo, completa los siguientes pasos:

  1. En Producer Portal, ve a la sección Deployment package (Paquete de implementación).

  2. En Configuración de Terraform, en Tipo, selecciona Predeterminado, 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 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 que es propiedad de Cloud Marketplace de la imagen 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 incluidos en el paquete.

  • 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 en la implementación de la IU

Si tu módulo personalizado admite la implementación de 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 tus clientes en su página de implementación. Debes usar esta variable para evitar conflictos de 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 imágenes compatibles con varias arquitecturas de CPU, debes agregar enumValueLabels para que tus clientes puedan seleccionar la imagen de VM que quieran 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 personalizados de Terraform, 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 Deployment package (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 imágenes que son propiedad de Marketplace. Cloud Marketplace usa la variable que agregas aquí para intercambiar la versión que es propiedad de Marketplace de tu imagen de VM cuando un cliente implementa tu producto.

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

  4. En el módulo personalizado de Terraform, configura 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 etiquetado Crear bucket nuevo. Cuando creas un bucket nuevo, tienes las siguientes opciones:

    • Selecciona un nombre para el bucket.

    • Especifica en qué región o regiones se almacenan los datos del 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.

    • 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 Roles obligatorios, especifica los roles de IAM que tus clientes deben tener para implementar tu producto.

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

Para que tu módulo personalizado admita la implementación de IU, debes crear y agregar metadatos que Cloud Marketplace use 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 la CLI de CFT de código abierto. Si deseas usar CFT para 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 el valor de VERSION para que sea latest y 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, por lo que omite los módulos en 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 formato que usan los clientes para implementar tu producto a través de la IU. Si deseas personalizar este formulario, después de crear tus metadatos, puedes modificar los valores de los campos en metadata.display.yaml. Para obtener detalles sobre las opciones de personalización disponibles, consulta 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 tus metadatos. GooglePropertyExtensions te permite usar validaciones específicas de Google Cloud, como exigir 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 proporcionada en función del esquema BlueprintMetadata.

Prueba que tu módulo apruebe la verificación

Tu 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 con el único fin de verificar el módulo. Si tu plantilla declara alguna variable que no tiene un valor predeterminado y no estableces un valor para esas variables, el comando no se ejecuta 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.

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

De manera opcional, si el módulo personalizado admite la implementación de la CLI, puedes incluir una carpeta llamada examples/marketplace_test. Es posible que quieras hacerlo si tu producto necesita incluir un módulo de prueba separado para verificar sus capacidades. Si incluyes esta carpeta, el siguiente comando debe ejecutarse correctamente para que tu módulo apruebe la verificación:

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 Deployment package (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 haya completado correctamente, haz clic en Vista previa de la implementación para probar la implementación.

¿Qué sigue?

Después de validar y probar con éxito 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 Envía tu producto.