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
- 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
- Créez le clone de la VM. Pour en savoir plus, consultez Créer une VM semblable à une VM existante.
- Dans la section Options avancées, associez le disque cloné.
- Créez la VM.
- 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.
- Arrêtez et supprimez le service de connecteur dans Docker.
- 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.
- Modifiez la VM et sélectionnez la règle de suppression Conserver le disque.
- Supprimez cette VM.
- Pour créer l'image sous licence, obtenez la licence sur le portail du producteur. Accéder à Producer Portal
- Créez un produit de machine virtuelle. Accédez à la section Package de déploiement, puis copiez la licence de la VM.
- Pour créer l'image de VM sous licence, exécutez la commande suivante:
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.
- Ajoutez les détails de votre solution:
- 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.
- 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
- Utilisez pd-standard comme type de disque par défaut.
bootDisk: diskType: defaultType: pd-standard
- 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:
- 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é.
- 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
- 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.
- 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
- 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.
solutionInfo: name:packagedSoftwareGroups: - type: SOFTWARE_GROUP_OS components: - name: Ubuntu version: 16.04 LTS - components: - name: Apache version: 2.4.23
Étape suivante
- Découvrez comment envoyer l'image de la VM pour approbation.