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 assure 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. Ce même disque sera utilisé pour créer l'image de la VM et sera accessible aux clients ultérieurement. 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 dans Producer Portal. Accédez à Producer Portal.
  11. Créez un produit de machine virtuelle. Accédez à la section Package de déploiement et 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 nécessaires au déploiement de l'image de VM sur Marketplace.

Cet outil utilise la définition d'autogen.proto pour générer le déploiement. Pour en savoir plus, consultez cet 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 étiquettes de l'image dans votre projet public.
  4. Utilisez n2d-standard-2 comme type de machine par défaut avec un processeur minimal de 2 et 8 Go de RAM. 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 souhaitent un trafic plus important, vous pouvez modifier ce paramètre lors de la création de la VM depuis Marketplace. Pour en savoir plus sur les tarifs des différents types de machines, consultez 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 de la génération automatique. 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 Test Data (Données de test) et Port to run service (Port pour exécuter le service) s'affichent pour les clients du connecteur Marketplace.

  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 avec 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ées 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