Crear un módulo de implementación de Terraform para la VM

En esta página se describe cómo crear una máquina virtual (VM) y un módulo de implementación de Terraform para la VM.

Crear la imagen de VM con licencia

  1. Para asegurarte de que la máquina virtual de desarrollo no se vea afectada, crea una copia del disco usado en la máquina virtual ejecutando el siguiente comando de gcloud:
    gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
  2. Crea el clon de la VM. Para obtener información, consulta Crear una VM similar a una VM ya creada.
  3. En la sección Opciones avanzadas, adjunta el disco clonado.
  4. Crea la VM.
  5. Comprueba que el servidor se esté ejecutando en esta VM. La secuencia de comandos de inicio se asegura de que la VM se esté ejecutando.
  6. Detén y elimina el servicio de conector en Docker.
  7. Elimina el directorio principal y cualquier otro archivo que no sea necesario para ejecutar el servidor. El mismo disco se usará para crear la imagen de la VM y los clientes podrán acceder a él más adelante. Esta VM solo debe tener las bibliotecas necesarias para ejecutar el servicio.
  8. Edita la VM y selecciona la regla de eliminación Conservar disco.
  9. Eliminar esta máquina virtual.
  10. Para crear la imagen con licencia, obtén la licencia en el portal del productor. Visita Producer Portal. .
  11. Crea un producto de máquina virtual. Ve a la sección Paquete de implementación y copia la licencia de la VM.
  12. Para crear la imagen de VM con licencia, ejecuta el siguiente comando:
  13. gcloud compute images create VM_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/ZONE/disks/SOURCE_VM_DISK \
     --licenses LICENSE \
     --description VM_IMAGE_DESCRIPTION

    Para obtener más información, consulta Crear una VM.

Crear un módulo de despliegue de Terraform

Marketplace proporciona la herramienta Autogen para generar los módulos de Terraform para el despliegue de imágenes de máquinas virtuales en Marketplace.

Esta herramienta usa la definición de proto de Autogen para generar el despliegue. Para obtener más información, consulta Configuración de ejemplo.

  1. Añade los detalles de tu solución:
  2. solutionInfo:
      name: 
      packagedSoftwareGroups:
        - type: SOFTWARE_GROUP_OS
          components:
            - name: Ubuntu
              version: 16.04 LTS
        - components:
            - name: Apache
              version: 2.4.23
  3. En el caso de los conectores, crea un módulo con una VM. Introduce el nombre del proyecto, el nombre de la imagen de la VM y las etiquetas de la imagen en tu proyecto público.
  4. Usa n2d-standard-2 como tipo de máquina predeterminado con una CPU mínima de 2 y una RAM de 8 GB. N2d-standard es óptimo para servidores web con tráfico medio. La VM predeterminada se puede configurar con 2 núcleos. Si los clientes esperan un mayor tráfico, pueden cambiarlo durante la creación de la VM desde Marketplace. Para obtener información sobre los precios de los diferentes tipos de máquinas, consulta la página Precios de las instancias de máquinas virtuales.
        machineType:
          # Check http://cloud.google.com/compute/docs/machine-types for all available types
          defaultMachineType:
            gceMachineType: n2d-standard-2
          # Minimum CPU and memory constraints for the machine type to run your solution properly
          minimum:
            cpu: 2
            ramGb: 8
  5. Usa pd-standard como tipo de disco predeterminado.
        bootDisk:
          diskType:
            defaultType: pd-standard
  6. Añade la secuencia de comandos de inicio a la configuración de autogen. Convierte la secuencia de comandos de inicio en una cadena y añádela a bashScriptContent.
    gceStartupScript:
       bashScriptContent: 
  7. Define los campos de entrada que se tomarán como entrada de los clientes durante la creación de la VM.
        deployInput:
          sections:
            # The place int he Deployment Manager config that this section will appear. More details in deployment_package_autogen_spec.proto
            - placement: CUSTOM_TOP
              name: CONNECTOR_SETTINGS
              title: Connectors settings
              description: Connectors settings
              tooltip: Setting with which connector VM will be running
              # List of input fields that this section has
              fields:
                - required: false
                  name: TEST_DATA
                  title: Test Data
                  description: Test data
                  tooltip: random data for testing
                  string_box: {}
                - required: false
                  name: PORT
                  title: Port to run service
                  tooltip: Port to run connector service
                  string_box: {}
                - required: false
                  name: LOG_LEVEL
                  title: Log level
                  description: Log level for the web service. Allowed values are DEBUG, INFO, WARNING, ERROR. Default is INFO
                  string_box: {}

    Deje el valor CUSTOM_TOP en Placement y CONNECTOR_SETTINGS en Name.

    Define los campos y el tipo de entrada que requieren. En este ejemplo, los campos Datos de prueba y Puerto para ejecutar el servicio aparecen para los clientes del conector de Marketplace.

  8. Define los elementos de metadatos de Compute Engine. Al definir los metadatos de la VM. Asigna el nombre del campo de entrada a la clave de metadatos.
        gce_metadata_items:
          - key: CONNECTOR_ENV_PORT
            value_from_deploy_input_field: PORT
          - key: CONNECTOR_ENV_TEST_DATA
            value_from_deploy_input_field: TEST_DATA
    - key: CONNECTOR_ENV_LOG_LEVEL
            value_from_deploy_input_field: LOG_LEVEL
  9. Añade los detalles de los pasos que se mostrarán a los clientes después de la implementación.
        postDeploy:
          # List of suggested action items for users, after deployment is successful
          actionItems:
            - heading: Create the Private service attachment
              description: Now the connector service is running on the VM, please create the PSC service attachment to create the connection. Follow https://cloud.google.com/integration-connectors/docs/configure-psc for the detailed guide.
            - heading: Create the connection
              description: After creating the connectors endpoint attachment, use the endpoint attachment to create a connection to the partner connector.
  10. Para configurar la generación automática, ejecuta el siguiente comando:
    alias autogen='docker run \
      --rm \
      --workdir /mounted \
      --mount type=bind,source="$(pwd)",target=/mounted \
      --user $(id -u):$(id -g) \
      gcr.io/cloud-Marketplace-tools/dm/autogen'
    
    autogen --help
  11. Para generar el módulo de Terraform, ejecuta el siguiente comando:
    mkdir solution_folder
    
    autogen \
      --input_type YAML \
      --single_input example-config/solution.yaml \
      --output_type PACKAGE \
      --output solution_folder

    La carpeta solution_folder contiene el módulo de Terraform. Este módulo se usará al publicar productos en Marketplace.

Siguientes pasos