Créer un module de déploiement Terraform pour la VM

Cette page explique comment créer une machine virtuelle (VM) et un module de déploiement Terraform pour la VM.

Créer l'image de VM sous licence

  1. Pour vous assurer que la VM de développement n'est pas affectée, créez une copie du disque utilisé dans la VM en exécutant la commande gcloud suivante:
    gcloud compute disks create CLONE_DISK \ --description="cloned disk" \ --source-disk=projects/PROJECT/zones/ZONE/disks/SOURCE_VM_DISK
  2. Créez le clone de la VM. Pour en savoir plus, consultez Créer une VM semblable à une VM existante.
  3. Dans la section Options avancées, associez le disque cloné.
  4. Créez la VM.
  5. Vérifiez que le serveur est en cours d'exécution pour cette VM. Le script de démarrage garantit que la VM est en cours d'exécution.
  6. Arrêtez et supprimez le service de connecteur dans Docker.
  7. Supprimez le répertoire d'accueil et tout autre fichier qui n'est pas nécessaire pour exécuter le serveur. Le même disque sera utilisé pour créer l'image de la VM et sera accessible aux clients par la suite. Cette VM ne doit contenir que les bibliothèques requises pour exécuter le service.
  8. Modifiez la VM et sélectionnez la règle de suppression Conserver le disque.
  9. Supprimez cette VM.
  10. Pour créer l'image sous licence, obtenez la licence sur le portail du producteur. Accéder à Producer Portal
  11. Créez un produit de machine virtuelle. Accédez à la section Package de déploiement, puis copiez la licence de la VM.
  12. Pour créer l'image de VM sous licence, exécutez la commande suivante:
  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

    Pour en savoir plus, consultez Créer votre VM.

Créer un module de déploiement Terraform

Marketplace fournit l'outil Autogen pour générer les modules Terraform permettant de déployer une image de VM sur Marketplace.

Cet outil utilise la définition de proto Autogen pour générer le déploiement. Pour en savoir plus, consultez Exemple de configuration.

  1. Ajoutez les détails de votre solution:
  2. solutionInfo:
      name: 
      packagedSoftwareGroups:
        - type: SOFTWARE_GROUP_OS
          components:
            - name: Ubuntu
              version: 16.04 LTS
        - components:
            - name: Apache
              version: 2.4.23
  3. Pour les connecteurs, créez un module avec une VM. Saisissez le nom du projet, le nom de l'image de VM et les libellés de l'image dans votre projet public.
  4. Utilisez n2d-standard-2 comme type de machine par défaut, avec un CPU minimal de 2 et une RAM de 8 Go. N2d-standard est optimal pour les serveurs Web à trafic moyen. La VM par défaut peut être définie avec deux cœurs. Si les clients s'attendent à un trafic plus important, vous pouvez modifier ce paramètre lors de la création de la VM sur la place de marché. Pour en savoir plus sur les tarifs selon les différents types de machines, consultez la page Tarifs des instances 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. Utilisez pd-standard comme type de disque par défaut.
        bootDisk:
          diskType:
            defaultType: pd-standard
  6. Ajoutez le script de démarrage à la configuration d'autogénération. Convertissez le script de démarrage en chaîne et ajoutez-le dans bashScriptContent.
    gceStartupScript:
       bashScriptContent: 
  7. Définissez les champs de saisie qui seront utilisés par les clients lors de la création 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: {}

    Laissez l'emplacement défini sur CUSTOM_TOP et le nom sur CONNECTOR_SETTINGS.

    Définissez le champ et le type d'entrée requis. Dans cet exemple, les champs Données de test et Port pour exécuter le service s'affichent pour les clients du connecteur de place de marché.

  8. Définissez les éléments de métadonnées Compute Engine. Lors de la définition des métadonnées de la VM. Mappez le nom du champ de saisie à la clé de métadonnées.
        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. Ajoutez les détails des étapes qui seront présentés aux clients après le déploiement.
        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. Pour configurer la génération automatique, exécutez la commande suivante:
    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. Pour générer le module Terraform, exécutez la commande suivante:
    mkdir solution_folder
    
    autogen \
      --input_type YAML \
      --single_input example-config/solution.yaml \
      --output_type PACKAGE \
      --output solution_folder

    Le dossier solution_folder contient le module Terraform. Ce module sera utilisé lors de la publication de produits sur Marketplace.

Étape suivante