Créer votre image de machine virtuelle (VM)

Cette page vous aide à créer une image de machine publique pour votre produit afin de l'exécuter sur Compute Engine.

Une image contient un bootloader (chargeur d'amorçage), un système d'exploitation, et un système de fichiers racine nécessaire au démarrage d'une instance. Vous pouvez configurer l'image avec un ensemble d'applications et de services pour votre produit. Les clients utilisent l'image pour lancer une instance de machine virtuelle (VM) dans le cloud.

Nous vous recommandons de créer en premier lieu une image dans le projet de développement, puis de la déplacer vers le projet public une fois celle-ci vérifiée par l'ingénieur partenaire Google.

Avant de commencer

  1. Téléchargez le SDK Google Cloud.

Créer la VM du produit de base

Pour créer une image système personnalisée pour Cloud Marketplace, vous devez suivre les étapes ci-dessous (décrites dans les sections suivantes):

  • Utilisez l'une des images publiques de base compatibles de Google pour créer une VM, puis installez vos packages et configurations spécifiques à l'application.

    Vous pouvez choisir une image utilisant des processeurs ARM ou une image utilisant des processeurs x86. Vous pouvez aussi inclure plusieurs images, ciblant différents types de machines, dans un même produit de VM. Pour en savoir plus sur les plates-formes de processeur et les types de machines compatibles, consultez la page Plates-formes de processeur.

  • Si vous avez l'intention d'aider vos clients, installez des scripts pour récupérer les identifiants de l'utilisateur de l'application.

Créer une image de VM sous licence

  1. Définissez les valeurs par défaut de la Google Cloud CLI à l'aide de gcloud:

    gcloud config set project <project_id>
    gcloud config set compute/zone <zone>
  2. Créez une instance principale qui sera utilisée pour installer votre logiciel, puis convertie en image à utiliser sur Cloud Marketplace. Pour en savoir plus sur la création d'une instance, consultez la section Créer et démarrer une instance.

    gcloud compute instances create ${INSTANCE} --scopes
    https://www.googleapis.com/auth/cloud-platform 
  3. Installez et personnalisez votre logiciel. Incluez tous les scripts de démarrage requis, tels que ceux utilisés pour créer des identifiants d'autorisation.

    Pour créer des identifiants d'autorisation à l'aide de mots de passe aléatoires sécurisés, suivez les étapes de la section Créer des identifiants d'autorisation dans la section suivante.

    Une fois que vous avez créé et personnalisé l'instance principale, préparez le disque nécessaire à la création d'une image de VM.

  4. Nettoyez votre disque. Lorsque vous créez une image de VM directement à partir de votre VM, vos répertoires d'utilisateurs et vos clés SSH sont également transférés vers les VM de vos clients. Vous devez donc nettoyer le disque d'entrée lorsque vous créez votre image de VM.

    Pour nettoyer le disque, procédez comme suit :

    1. Dans le menu Instances de VM de Compute Engine, cliquez sur le nom de l'instance que vous souhaitez nettoyer, puis sur Modifier.

    2. Faites défiler la page et décochez l'option Supprimer le disque de démarrage lorsque l'instance est supprimée. Cliquez ensuite sur Enregistrer. Vous utilisez le disque pour créer l'image.

    3. Supprimez la VM tout en conservant le disque. Vous êtes invité à confirmer la suppression. Ne sélectionnez pas l'option Supprimer également le disque de démarrage.

    4. Vous devez maintenant créer une instance de VM. Développez les options Gestion, disque, réseau et clés SSH.

    5. Sous disque, associez le disque de votre instance précédente en tant que disque de données supplémentaire. Assurez-vous que l'option Conserver le disque est sélectionnée dans Lors de la suppression d'une instance.

      Vous pouvez maintenant vous connecter en SSH à l'instance et supprimer tous les répertoires d'accueil ou autres fichiers temporaires créés pendant l'installation du logiciel. Vous devez installer le disque de données avant de pouvoir y accéder. Pour en savoir plus sur l'installation de disques, consultez la section Ajouter ou redimensionner des disques persistants.

    6. Une fois l'opération terminée, arrêtez et supprimez l'instance tout en conservant votre disque de données à jour. Vous pouvez maintenant créer une image de VM à l'aide des instructions ci-dessous.

  5. Obtenez le nom de licence de votre produit de VM dans Producer Portal en procédant comme suit :

    1. Ouvrez Producer Portal dans la console Google Cloud:

      https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
      

      Remplacez YOUR_PROJECT_ID par l'ID de votre projet de développement ou public. Nous vous recommandons de créer en premier lieu une image dans le projet de développement, puis de la déplacer vers le projet public une fois celle-ci vérifiée par l'ingénieur partenaire Google.

    2. Cliquez sur le nom de votre produit.

    3. Accédez à la section Package de déploiement. Sous Licence de VM, notez le nom. Vous utiliserez ce nom de licence à l'étape suivante, lorsque vous créerez votre image.

  6. Créez une image sous licence en exécutant la commande gcloud suivante:

    gcloud compute images create CREATE_IMAGE_NAME \
     --project PUBLIC_PROJECT_NAME \
     --source-disk projects/DEV_PROJECT_NAME/zones/SOURCE_DISK_ZONE/disks/SOURCE_DISK_NAME \
     --licenses LICENSE_NAME \
     --description ADD_DESCRIPTION
    

    Remplacez les éléments suivants :

    • CREATE_IMAGE_NAME: nom de votre image et des architectures de processeur compatibles, au format who-vmOS-image-architecture-date, en remplaçant architecture par Arm ou x86_64, selon l'architecture de processeur compatible avec l'image. Chaque fois que vous mettez à jour l'image de votre produit, vous devez utiliser un nouveau nom unique.

    • PUBLIC_PROJECT_NAME: ID de votre projet public pour Cloud Marketplace. Vous devez disposer du rôle Administrateur Compute Storage (roles/compute.storageAdmin) pour ce projet.

    • LICENSE_NAME : nom de licence de votre produit de VM que vous avez noté à l'étape précédente.

    • DEV_PROJECT_NAME: ID du projet que vous avez créé pour le développement et les tests pour Cloud Marketplace. Vous devez disposer du rôle Utilisateur d'images Compute (roles/compute.imageUser) pour ce projet.

    • SOURCE_DISK_ZONE : zone du disque source.

    • SOURCE_DISK_NAME : nom du disque source.

    • ADD_DESCRIPTION : description textuelle facultative de l'image en cours de création.

Rendre l'image publique

Pour les produits autres que Terraform qui n'utilisent pas d'images appartenant à Marketplace, vous devez rendre votre image publique afin que vos clients puissent la déployer sur leurs instances Compute Engine. Pour rendre l'image publique, utilisez la console Google Cloud ou la Google Cloud CLI:

Console

  1. Dans votre projet public, sous Compute Engine, accédez à la page "Images".

    Accéder à la page Images

  2. Sélectionnez votre image, comme indiqué ci-dessous :

  3. Si le panneau d'informations ne s'affiche pas dans le coin supérieur droit, cliquez sur Afficher le panneau d'informations.

  4. Sur le panneau d'informations, dans le champ Ajouter des membres, entrez allAuthenticatedUsers, et dans le menu Sélectionnez un rôle, sélectionnez Calculer l'image utilisateur.

  5. Cliquez sur Add (Ajouter) pour rendre votre image publique.

Ligne de commande

Utilisez la commande gcloud suivante dans Cloud Shell ou sur votre machine locale :

gcloud compute images add-iam-policy-binding IMAGE_NAME --member=allAuthenticatedUsers --role=roles/compute.imageUser

Créer des identifiants d'autorisation

Si votre produit est un déploiement simple d'une seule instance de VM avec des règles de pare-feu de base, vous pouvez inclure automatiquement un mot de passe aléatoire sécurisé lorsque vous configurez directement votre package de déploiement.

Si vous envisagez de créer votre package de déploiement à l'aide de l'outil Open Source mpdev, que nous recommandons dans la plupart des cas d'utilisation, vous pouvez utiliser mpdev pour inclure automatiquement plusieurs mots de passe aléatoires sécurisés.

Pour en savoir plus sur la création d'identifiants d'autorisation, consultez la section Créer votre package de déploiement.

Une fois votre produit déployé, utilisez la commande suivante depuis votre instance de VM pour obtenir la valeur des mots de passe que vous avez créés:

curl -H "Metadata-Flavor: Google" \
http://metadata/computeMetadata/v1/instance/attributes/PASSWORD_NAME

Tester l'image de VM

Créez une instance de VM à l'aide de l'image que vous venez de créer, puis vérifiez qu'elle fonctionne.

Vérifiez également l'ID de licence, connectez-vous à l'instance en SSH et assurez-vous que les licences valides sont associées :

curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/licenses/?recursive=true

Vérifiez que Python 2.6 (ou version ultérieure) est installé :

python -V

Vérifiez que les packages suivants sont installés :

gcloud --version
gsutil --version
ssh -V
ps aux | grep sshd
curl -V
ps aux | grep dhcp

Assurez-vous qu'aucun autre répertoire utilisateur n'est installé sur l'instance, sauf le vôtre, et qu'il ne reste aucun répertoire utilisateur ni identifiant autre que le vôtre.