Crie um módulo de implementação do Terraform para a VM

Esta página descreve como criar uma máquina virtual (VM) e um módulo de implementação do Terraform para a VM.

Crie a imagem de VM licenciada

  1. Para garantir que a VM de desenvolvimento não é afetada, crie uma cópia do disco usado na VM executando o seguinte comando gcloud:
    gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
  2. Crie o clone da VM. Para obter informações, consulte o artigo Crie uma VM semelhante a uma VM existente.
  3. Na secção Opções avançadas, anexe o disco clonado.
  4. Crie a VM.
  5. Verifique se o servidor está em execução para esta VM. O script de arranque garante que a VM está em execução.
  6. Pare e remova o serviço do conetor no Docker.
  7. Remova o diretório inicial e qualquer outro ficheiro que não seja necessário para executar o servidor. O mesmo disco é usado para criar a imagem da VM e fica acessível aos clientes posteriormente. Esta VM só pode ter bibliotecas necessárias para executar o serviço.
  8. Edite a VM e selecione a regra de eliminação para Manter disco
  9. Eliminar esta VM.
  10. Para criar a imagem licenciada, obtenha a licença no portal do produtor. Visite o Producer Portal.
  11. Crie um novo produto de máquina virtual. Aceda à secção Pacote de implementação e copie a licença da VM.
  12. Para criar a imagem de VM licenciada, execute o seguinte 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 mais informações, consulte o artigo Criar a sua VM.

Crie um módulo de implementação do Terraform

O Marketplace fornece a ferramenta Autogen para gerar os módulos do Terraform para a implementação da imagem da VM no Marketplace.

Esta ferramenta usa a definição do protocolo Autogen para gerar a implementação. Para mais informações, consulte o Exemplo de configuração.

  1. Adicione os detalhes da sua solução:
  2. solutionInfo:
      name: 
      packagedSoftwareGroups:
        - type: SOFTWARE_GROUP_OS
          components:
            - name: Ubuntu
              version: 16.04 LTS
        - components:
            - name: Apache
              version: 2.4.23
  3. Para conectores, crie um módulo com uma VM. Introduza o nome do projeto, o nome da imagem da VM e as etiquetas da imagem no seu projeto público.
  4. Use n2d-standard-2 como o tipo de máquina predefinido com o mínimo de CPU como 2 e RAM como 8 GB. O tipo N2d-standard é ideal para servidores Web com tráfego médio. A VM predefinida pode ser definida com 2 núcleos. Se os clientes esperarem um tráfego mais elevado, isto pode ser alterado durante a criação da VM a partir do Marketplace. Para ver informações sobre os preços de diferentes tipos de máquinas, consulte os preços das instâncias 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
  5. Use pd-standard como o tipo de disco predefinido.
        bootDisk:
          diskType:
            defaultType: pd-standard
  6. Adicione o script de arranque à configuração gerada automaticamente. Converta o guião de arranque em string e adicione-o em bashScriptContent.
    gceStartupScript:
       bashScriptContent: 
  7. Defina os campos de entrada que vão ser usados como entrada dos clientes durante a criação da 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: {}

    Mantenha o posicionamento como CUSTOM_TOP e o nome como CONNECTOR_SETTINGS.

    Defina o campo e o tipo de entrada necessários para o mesmo. Neste exemplo, os campos Test Data (Dados de teste) e Port to run service (Porta para executar o serviço) são apresentados aos clientes do conector do Marketplace.

  8. Defina os itens de metadados do Compute Engine. Ao definir os metadados da VM. Mapeie o nome do campo de entrada para a chave de metadados.
        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. Adicione os detalhes dos passos que serão apresentados aos clientes após a implementação.
        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 a geração automática, execute o seguinte 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 gerar o módulo do Terraform, execute o seguinte comando:
    mkdir solution_folder
    
    autogen \
      --input_type YAML \
      --single_input example-config/solution.yaml \
      --output_type PACKAGE \
      --output solution_folder

    A pasta solution_folder contém o módulo do Terraform. Este módulo é usado durante a publicação de produtos no Marketplace.

O que se segue?