Configurer votre image de VM pour le déploiement Terraform

Cet article explique comment terminer la configuration et envoyer votre image de VM pour le déploiement à l'aide de Terraform.

Déterminer comment créer votre package de déploiement

Nous vous recommandons d'utiliser l'option de configuration guidée de Producer Portal pour créer votre package de déploiement directement dans Google Cloud Console.

L'option de configuration guidée est compatible avec les produits de VM simples, tels que les déploiements de VM uniques avec des règles de pare-feu de base, mais elle n'est pas compatible avec certaines fonctionnalités complexes, telles que les déploiements avec plusieurs VM et des ressources non de calcul. Si vous avez besoin de fonctionnalités que la configuration guidée n'est pas en mesure de prendre en charge, vous pouvez utiliser l'option de configuration manuelle pour créer votre package de déploiement ou personnaliser un package existant en y ajoutant des fonctionnalités supplémentaires.

Basculer entre la configuration guidée et la configuration manuelle

Si vous utilisez l'option de configuration guidée de Producer Portal et souhaitez ensuite passer à la configuration manuelle de votre package de déploiement, cliquez sur Accéder à la configuration manuelle.

Finaliser la configuration guidée

Pour terminer la configuration et envoyer un package de déploiement simple à l'aide de la console Google Cloud, procédez comme suit:

  1. Dans Producer Portal, accédez à la section Package de déploiement.

  2. Sous Configuration Terraform, à côté du champ de saisie intitulé Bucket Cloud Storage, cliquez sur Parcourir.

    Si vous avez déjà créé un bucket Cloud Storage, sélectionnez-le ici.

    Si vous n'avez pas de bucket Cloud Storage, cliquez sur l'icône Créer un bucket. Lorsque vous créez un bucket, vous:

    • Sélectionnez un nom pour le bucket.

    • Spécifiez la ou les régions dans lesquelles le bucket stocke les données.

    • Indiquez la classe de stockage pour vos données.

    • Déterminez le niveau de précision à appliquer aux autorisations IAM (Identity and Access Management) pour les données du bucket.

    • Configurez des paramètres avancés facultatifs, tels que le chiffrement ou les règles de conservation des données.

  3. Assurez-vous d'avoir activé la gestion des versions d'objets pour votre bucket Cloud Storage.

  4. Pour enregistrer les paramètres de votre bucket et continuer à configurer votre package de déploiement, cliquez sur Configurer.

  5. Sous Choisir le type de machine, vous devez spécifier une Zone par défaut, un Type de machine minimal et un Type de machine par défaut pour votre produit de VM, ainsi que la taille et le type de son disque de démarrage.

  6. Sous Spécifier le système d'exploitation, vous devez spécifier le nom et la version du système d'exploitation utilisé par votre image de VM, ainsi que le numéro de version de l'image de VM.

  7. Si vous le souhaitez, sous Configurer l'accès à la VM, vous pouvez spécifier les URL de site et d'administrateur, ainsi qu'un nom d'utilisateur et un mot de passe que les utilisateurs peuvent utiliser pour accéder à la VM après le déploiement.

  8. Si vous le souhaitez, sous Configurer la mise en réseau, vous pouvez spécifier des paramètres pour le transfert IP et des règles de pare-feu.

  9. Sous Définir les prochaines étapes, vous pouvez éventuellement fournir des instructions aux utilisateurs de votre produit pour les guider dans leur première utilisation. Ces instructions seront visibles une fois qu'il aura déployé votre produit.

  10. Une fois les étapes précédentes effectuées, cliquez sur Générer pour créer votre package de déploiement.

    Si vous devez apporter des modifications supplémentaires à votre package de déploiement ultérieurement, vous pouvez cliquer sur Modifier pour apporter des modifications, puis sur Générer pour régénérer votre package de déploiement une fois les modifications appliquées.

  11. Validez le package de déploiement dans Producer Portal.

  12. Une fois la validation de votre package de déploiement par Cloud Marketplace terminée, cliquez sur Publier pour commencer à tester votre package de déploiement.

Terminer la configuration manuelle

Cette section explique comment utiliser l'option de configuration manuelle pour créer un package de déploiement et l'envoyer pour examen.

Spécifier si vous souhaitez utiliser le module Terraform par défaut ou un module personnalisé

Vous pouvez choisir si vos clients doivent utiliser le module Terraform par défaut ou un module Terraform personnalisé lorsqu'ils déploient votre produit.

Si vous choisissez d'utiliser le module Terraform par défaut, Google Cloud fournit à vos clients un code Terraform généré automatiquement qu'ils peuvent utiliser pour déployer votre produit.

Si vous choisissez d'utiliser un module Terraform personnalisé, vous devez fournir vos propres modèles Terraform à votre client. Vous pouvez choisir de fournir ces modèles sous une forme que les clients peuvent déployer à l'aide de l'interface de ligne de commande (CLI), ou avec des métadonnées supplémentaires qui leur permettent de déployer des modules directement depuis la place de marché Cloud.

Pour spécifier si vos clients doivent utiliser le module Terraform par défaut ou un module Terraform personnalisé, et, pour les modules Terraform personnalisés, comment vous souhaitez que vos clients déploient le module, procédez comme suit:

  1. Dans Producer Portal, accédez à la section Package de déploiement.

  2. Sous Configuration Terraform, sous Type, sélectionnez Par défaut, Personnalisé (déploiement par CLI) ou Personnalisé (déploiement par UI).

Conditions requises pour les modules Terraform personnalisés

Si vous choisissez d'utiliser des modules Terraform personnalisés, votre module personnalisé doit répondre aux exigences suivantes:

  • Votre module personnalisé doit comporter un module que Cloud Marketplace peut utiliser pour vérifier qu'il répond aux exigences. Pour en savoir plus, consultez la section Vérifier que votre module passe la validation.

  • Votre module doit comporter une variable nommée project_id, qui stocke l'ID de projet que vos clients utilisent pour déployer le module.

  • Vous devez spécifier des références aux noms de vos images en tant que variables Terraform, au format projects/PROJECT_NAME/global/images/IMAGE_NAME. La valeur de default doit être définie sur le nom de votre image de VM afin que la copie de l'image appartenant à Cloud Marketplace puisse être remplacée dans le module lorsque votre produit de VM est publié.

  • Votre module ne doit pas dépendre de modules externes qui ne sont pas empaquetés avec lui.

  • Votre module ne doit utiliser que les fournisseurs approuvés suivants:

    • archive
    • cloud-init
    • dns
    • google
    • google-beta
    • http
    • null
    • random
    • time
    • tls

Pour obtenir un exemple de module personnalisé conforme à ces exigences, consultez l'exemple de module Terraform personnalisé.

Exigences supplémentaires pour les modules Terraform personnalisés pour le déploiement de l'UI

Si votre module personnalisé est compatible avec le déploiement de l'UI, il doit répondre aux exigences supplémentaires suivantes:

  • Votre module doit contenir une variable appelée goog_cm_deployment_name. Cloud Marketplace utilise cette variable pour nommer les déploiements de vos clients sur leur page de déploiement. Vous devez utiliser cette variable pour éviter les conflits de noms de ressources entre plusieurs déploiements dans un même projet. Pour en savoir plus, consultez goog_cm_deployment_name dans l'exemple de module Terraform personnalisé.

  • Dans le fichier metadata.display.yaml, vous devez spécifier ET_GCE_DISK_IMAGE comme type xGoogleProperty pour toutes les variables d'image. Pour obtenir un exemple, consultez metadata.display.yaml dans l'exemple de module Terraform personnalisé.

  • Si votre produit contient des images multi-VM ou des images compatibles avec plusieurs architectures de processeur, vous devez ajouter enumValueLabels pour que vos clients puissent sélectionner l'image de VM qu'ils souhaitent utiliser. Pour obtenir un exemple, consultez l'exemple de module Terraform personnalisé.

  • Votre module ne doit pas dépendre de la compatibilité avec les provisionneurs Terraform.

Étapes supplémentaires pour les modules Terraform personnalisés

Si vous avez choisi d'utiliser des modules Terraform personnalisés, vous devez suivre les étapes supplémentaires suivantes pour configurer votre image de VM pour le déploiement:

  1. Dans Producer Portal, accédez à la section Package de déploiement.

  2. Sous Configuration Terraform, sous Variables d'image, cliquez sur Ajouter une variable.

    Pour activer le déploiement Terraform de votre produit, vous devez avoir activé l'utilisation des images appartenant à Marketplace. Cloud Marketplace utilise la variable que vous ajoutez ici pour remplacer la version de votre image de VM appartenant à Marketplace lorsqu'un client déploie votre produit.

  3. Dans le champ de texte Variable d'image, saisissez un nom pour votre variable, par exemple "image".

  4. Dans votre module Terraform personnalisé, définissez la valeur par défaut de la variable que vous avez créée à l'étape précédente sur le nom de l'image de VM de votre produit, au format projects/YOUR_PROJECT/global/images/YOUR_IMAGE.

  5. Sous Spécifier l'emplacement de l'objet GCS, cliquez sur Parcourir.

    Si vous avez déjà créé un bucket Cloud Storage, sélectionnez-le ici.

    Si vous n'avez pas de bucket Cloud Storage, cliquez sur l'icône Créer un bucket. Lorsque vous créez un bucket, vous:

    • Sélectionnez un nom pour le bucket.

    • Spécifiez la ou les régions dans lesquelles le bucket stocke les données.

    • Indiquez la classe de stockage pour vos données.

    • Déterminez le niveau de précision à appliquer aux autorisations IAM (Identity and Access Management) pour les données du bucket.

    • Configurez des paramètres avancés facultatifs, tels que le chiffrement ou les règles de conservation des données.

  6. Assurez-vous que la gestion des versions d'objets est activée pour votre bucket Cloud Storage.

  7. Pour enregistrer les paramètres de votre bucket et continuer à configurer votre package de déploiement, cliquez sur Configurer.

  8. Sous Rôles requis, spécifiez les rôles IAM dont vos clients doivent disposer pour déployer votre produit.

(Déploiement de l'UI uniquement) Créer des métadonnées pour votre module Terraform personnalisé

Pour que votre module personnalisé prenne en charge le déploiement de l'UI, vous devez créer et ajouter des métadonnées que Cloud Marketplace utilise pour analyser correctement votre module et l'afficher dans l'UI pour votre client.

Pour créer et ajouter ces métadonnées, vous pouvez utiliser l'outil CLI CFT Open Source. Pour utiliser CFT afin de créer et d'ajouter des métadonnées à vos modules personnalisés, procédez comme suit:

  1. Installez l'outil CLI CFT. Pour en savoir plus, consultez la documentation de la CLI CFT. Nous vous recommandons de définir la valeur de VERSION sur latest et de définir PLATFORM sur l'une des valeurs suivantes:

    • linux

    • windows

    • darwin

  2. Exécutez la commande suivante :

     cft blueprint metadata -p TF_PACKAGE_PATH -q -d --nested=false
    

    Dans la commande précédente, l'indicateur -p fournit un chemin d'accès au package Terraform, l'indicateur -q génère des métadonnées sans avoir besoin d'informations pour un dépôt distant, l'indicateur -d génère le fichier metadata.display.yaml et l'indicateur --nested=false génère des métadonnées pour le module racine, en ignorant tous les modules du dossier modules/.

Une fois les étapes précédentes effectuées, l'outil CLI CFT génère deux nouveaux fichiers : metadata.yaml et metadata.display.yaml.

Personnaliser les métadonnées de votre module Terraform personnalisé

Cloud Marketplace utilise le fichier metadata.display.yaml pour personnaliser le formulaire que les clients utilisent pour déployer votre produit via l'UI. Si vous souhaitez personnaliser ce formulaire, après avoir créé vos métadonnées, vous pouvez modifier les valeurs des champs dans metadata.display.yaml. Pour en savoir plus sur les options de personnalisation disponibles, consultez la documentation BlueprintUI Open Source ou le schéma BlueprintUI.

Nous vous recommandons d'utiliser l'extension GooglePropertyExtensions pour modifier vos métadonnées. GooglePropertyExtensions vous permet d'utiliser des validations spécifiques à Google Cloud, par exemple pour exiger que les clients ne puissent sélectionner que des réseaux cloud privé virtuel (VPC) déjà existants dans leur projet. Pour obtenir un exemple, consultez l'exemple de module Terraform personnalisé.

Valider les métadonnées de votre module personnalisé

Pour valider les métadonnées de votre module personnalisé, exécutez la commande suivante:

cft blueprint metadata -p TF_PACKAGE_PATH -v

Dans la commande précédente, l'option -p fournit un chemin d'accès au package Terraform, et l'option -v valide tous les fichiers de métadonnées sous le chemin d'accès fourni en fonction du schéma BlueprintMetadata.

Vérifier que votre module passe la validation

Votre module personnalisé passe la validation si la commande suivante s'exécute correctement:

terraform plan -var project_id=YOUR_PROJECT -var-file marketplace_test.tfvars

Dans la commande précédente, marketplace_test.tfvars est un fichier de variables Terraform que seul Cloud Marketplace utilise, uniquement pour cette vérification du module. Si votre modèle déclare des variables qui n'ont pas de valeur par défaut et que vous ne définissez pas de valeur pour ces variables, la commande ne s'exécute pas correctement. Pour vous assurer que la commande s'exécute correctement, vous pouvez créer un fichier marketplace_test.tfvars pour définir des valeurs pour les variables déclarées par votre modèle. Pour obtenir un exemple de fichier marketplace_test.tfvars, consultez l'exemple de module Terraform personnalisé.

(Facultatif) (Déploiement de la CLI uniquement) Inclure un module de test

Si votre module personnalisé est compatible avec le déploiement de la CLI, vous pouvez choisir d'inclure un dossier nommé examples/marketplace_test. Vous pouvez le faire si votre produit doit inclure un module de test distinct pour vérifier ses fonctionnalités. Si vous incluez ce dossier, la commande suivante doit s'exécuter correctement pour que votre module passe la validation:

terraform -chdir=examples/marketplace_test plan -var project_id=YOUR_PROJECT

Valider et tester votre déploiement

Une fois que vous avez créé et configuré votre package de déploiement, vous devez le valider et le tester avant que l'équipe Cloud Marketplace puisse l'examiner et l'approuver.

  1. Dans Producer Portal, accédez à la section Package de déploiement.

  2. Cliquez sur Valider. Le processus de validation peut prendre jusqu'à deux heures, et vous pouvez quitter l'écran une fois lorsque l'opération est en cours.

  3. Une fois la validation terminée, cliquez sur Aperçu du déploiement pour tester votre déploiement.

Étape suivante

Une fois que vous avez validé et testé votre déploiement, vous pouvez cliquer sur Publier pour envoyer votre produit complet à l'examen et à la publication sur Cloud Marketplace. Pour en savoir plus, consultez Envoyer votre produit.