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 le 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 la console Google Cloud.

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

Basculer entre la configuration guidée et la configuration manuelle

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

Terminer la configuration guidée

Pour terminer la configuration et l'envoi d'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. Voici les conséquences de la création d'un bucket:

    • 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'activer la gestion des versions des 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 de l'OS utilisés 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 des URL de site et d'administrateur, ainsi qu'un nom d'utilisateur et un mot de passe, que les utilisateurs pourront utiliser pour accéder à la VM après le déploiement.

  8. Sous Configurer la mise en réseau, vous pouvez éventuellement spécifier les paramètres du transfert IP et configurer des règles de pare-feu.

  9. Si vous le souhaitez, sous Définir les étapes suivantes, vous pouvez fournir des instructions pour aider les utilisateurs de votre produit à commencer à utiliser votre produit. Ils pourront voir ces instructions une fois qu'ils auront déployé votre produit.

  10. Après avoir effectué les étapes précédentes, cliquez sur Generate (Générer) pour créer votre package de déploiement.

    Si vous devez apporter des modifications supplémentaires à votre package de déploiement par la suite, vous pouvez cliquer sur Edit (Modifier) pour apporter des modifications, puis sur Generate (Générer) pour regénérer votre package de déploiement une fois ces modifications appliquées.

  11. Envoyez le package de déploiement pour examen dans Producer Portal. Une fois le package envoyé, il peut s'écouler jusqu'à deux semaines avant que Google l'examine et l'approuve.

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.

Indiquer si vous souhaitez utiliser le module Terraform par défaut ou personnalisé

Vous pouvez choisir si vous souhaitez que vos clients utilisent le module Terraform par défaut ou 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 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 leur permettant de déployer des modules directement depuis Cloud Marketplace.

Pour spécifier si vos clients doivent utiliser le module Terraform par défaut ou personnalisé, et pour les modules Terraform personnalisés, indiquez comment vous souhaitez qu'ils déploient le module:

  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 CLI) ou Personnalisé (déploiement via l'interface utilisateur).

Exigences concernant 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 permettant à Cloud Marketplace de vérifier qu'il répond aux exigences. Pour en savoir plus, consultez Tester que votre module réussit la validation.

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

  • Vous devez spécifier les 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, de sorte que la copie de l'image appartenant à Cloud Marketplace puisse être remplacée dans le module lors de la publication de votre produit de VM.

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

  • Votre module ne doit faire appel qu'aux 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 via l'interface utilisateur

Si votre module personnalisé est compatible avec le déploiement de l'interface utilisateur, 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 au niveau des noms de ressources entre plusieurs déploiements d'un même projet. Pour obtenir un exemple, 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 de plusieurs VM ou des images compatibles avec plusieurs architectures de processeur, vous devez ajouter enumValueLabels afin 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 approvisionneurs Terraform.

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

Si vous avez choisi d'utiliser des modules Terraform personnalisés, vous devez effectuer 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. Voici les conséquences de la création d'un bucket:

    • 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 des règles de chiffrement ou 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 que vos clients doivent avoir pour déployer votre produit.

(Déploiement via l'interface utilisateur 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'interface utilisateur, vous devez créer et ajouter des métadonnées permettant à Cloud Marketplace d'analyser correctement votre module et de l'afficher dans l'interface utilisateur de votre client.

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

  1. installer l'outil CFT CLI ; Pour en savoir plus, consultez la documentation de la Cloud CLI. 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 ci-dessous.

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

    Dans la commande précédente, l'option -p fournit un chemin d'accès au package Terraform, l'option -q génère des métadonnées sans avoir besoin d'informations pour un dépôt distant, l'option -d génère le fichier metadata.display.yaml, et l'option --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 du kit Cloud Foundation 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 utilisé par les clients pour déployer votre produit via l'interface utilisateur. Si vous souhaitez personnaliser ce formulaire, vous pouvez modifier les valeurs des champs dans metadata.display.yaml après avoir créé vos métadonnées. Pour en savoir plus sur les options de personnalisation disponibles, consultez la documentation de 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és virtuels (VPC) qui existent déjà 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 fourni en fonction du schéma BlueprintMetadata.

Vérifier que votre module réussit la validation

Votre module personnalisé réussit 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 correspond à un fichier de variables Terraform utilisé uniquement par Cloud Marketplace, uniquement pour cette vérification du module. Si votre modèle déclare des variables sans 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 afin de définir les valeurs des 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 CLI uniquement) Inclure un module de test

Si votre module personnalisé est compatible avec le déploiement via la CLI, vous pouvez choisir d'inclure un dossier nommé examples/marketplace_test. Cela peut être utile 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 réussisse la vérification:

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

Envoyer votre package de déploiement pour examen

Une fois le package de déploiement créé et configuré, vous devez l'envoyer à Producer Portal pour 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. Vous pouvez quitter l'écran en cours de traitement.

  3. Une fois la validation terminée, cliquez sur Envoyer pour envoyer le package de déploiement pour examen. Une fois le package envoyé, il peut s'écouler jusqu'à deux semaines avant que Google l'examine et l'approuve.