Crea 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.
Crea la imagen de VM con licencia
- Para asegurarte de que la VM de desarrollo no se vea afectada, crea una copia del disco que se usa en la VM. Para ello, ejecuta el siguiente comando de gcloud:
gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
- Crea el clon de la VM. Para obtener información, consulta Crea una VM similar a una VM existente.
- En la sección Opciones avanzadas, conecta el disco clonado.
- Crea la VM.
- Verifica que el servidor se esté ejecutando en esta VM. La secuencia de comandos de inicio garantiza que la VM se esté ejecutando.
- Detén y quita el servicio de conector en Docker.
- Quita el directorio principal y cualquier otro archivo que no sea necesario para ejecutar el servidor. Se usará el mismo disco para crear la imagen de la VM, y los clientes podrán acceder a ella más adelante. Esta VM solo debe tener las bibliotecas necesarias para ejecutar el servicio.
- Edita la VM y selecciona la regla de eliminación para conservar el disco.
- Borra esta VM.
- Para crear la imagen con licencia, obtén la licencia del portal para productores. Visita el portal de productores.
- Crea un nuevo producto de máquina virtual. Visita la sección Paquete de implementación y copia la licencia de la VM.
- Para crear la imagen de la VM con licencia, ejecuta el siguiente comando:
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 Cómo compilar tu VM.
Crea un módulo de implementación de Terraform
Marketplace proporciona la herramienta Autogen para generar los módulos de Terraform para la implementación de la imagen de VM en Marketplace.
Esta herramienta usa la definición de proto de Autogen para generar la implementación. Para obtener más información, consulta Ejemplo de configuración.
- Agrega los detalles de tu solución:
- Para los conectores, crea un módulo con una VM. Ingresa el nombre del proyecto, el nombre de la imagen de la VM y las etiquetas para la imagen en tu proyecto público.
- Usa n2d-standard-2 como el tipo de máquina predeterminado con 2 CPU mínimas y 8 GB de RAM. N2d-standard es óptimo para servidores web de tráfico medio. La VM predeterminada se puede configurar con 2 núcleos. Si los clientes esperan un tráfico más alto, se puede cambiar durante la creación de la VM desde el mercado. Para obtener información sobre los precios de los diferentes tipos de máquinas, consulta Precios de instancias de VM.
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
- Usa pd-standard como el tipo de disco predeterminado.
bootDisk: diskType: defaultType: pd-standard
- Agrega la secuencia de comandos de inicio a la configuración de autogen. Convierte la secuencia de comandos de inicio en una cadena y agrégala en bashScriptContent.
gceStartupScript: bashScriptContent:
- 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: {}
Mantén la posición como CUSTOM_TOP y el nombre como CONNECTOR_SETTINGS.
Define el campo y el tipo de entrada que se requiere para ellos. En este ejemplo, los campos Datos de prueba y Puerto para ejecutar el servicio aparecen para los clientes del conector de mercado.
- Define los elementos de metadatos de Compute Engine. Mientras defines 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
- Agrega 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.
- 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
- Para generar el módulo 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 terraform. Este módulo se usará cuando publiques productos en Marketplace.
solutionInfo: name:packagedSoftwareGroups: - type: SOFTWARE_GROUP_OS components: - name: Ubuntu version: 16.04 LTS - components: - name: Apache version: 2.4.23
¿Qué sigue?
- Obtén información para enviar la imagen de la VM para su aprobación.