Créer votre image de VM

Cette page vous aide à créer une image publique de machine afin que votre produit s'exécute sur Compute Engine.

Une image contient un chargeur de démarrage, 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 solution. 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 de la solution de base

Pour créer une image de machine personnalisée pour Google Cloud Marketplace, vous devez effectuer ces étapes (décrites dans les sections qui suivent) :

Créer une image de VM sous licence

  1. Utilisez gcloud pour définir les valeurs par défaut du SDK Cloud :

    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 sera convertie en image à utiliser sur Google Cloud Marketplace. Pour en savoir plus sur la création d'une instance, consultez la page 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 décrites sur la page Créer des identifiants d'autorisation.

  4. Ajoutez des fichiers contenant le texte de la licence Open Source et du code source sur la VM (le cas échéant). Reportez-vous au document de conformité Open Source pour connaître les exigences.

    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.

  5. Nettoyez votre disque. La création d'une image de machine virtuelle directement à partir de votre machine virtuelle transférera également vos répertoires utilisateur et vos clés SSH dans les machines virtuelles de vos clients ; vous devez donc nettoyer le disque utilisé comme disque d'entrée lors de la création de votre image de machine virtuelle. 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 aurez besoin du disque pour créer l'image.

    3. Supprimez la VM tout en conservant le disque. Il vous sera demandé de 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. Vérifiez que l'option Conserver le disque est sélectionnée dans le champ 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 devrez 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.

  6. Obtenez le nom de licence de votre solution dans le portail Partner en procédant comme suit :

    1. Cliquez sur l'ID de la solution pour la modifier.

    2. Modifiez les métadonnées de la solution.

    3. Dans les métadonnées de la solution, dans la section Licences et tarification, sous Nom de la licence, notez le nom de votre licence. Ce nom vous servira plus tard, lorsque vous utiliserez gcloud pour créer votre image.

  7. 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 projects/PUBLIC_PROJECT_NAME/global/licenses/LICENSE_NAME \
     --description ADD_DESCRIPTION
    

Créer des identifiants d'autorisation

Si votre solution est le 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 votre package de déploiement directement dans le portail des partenaires.

Si vous prévoyez de créer votre package de déploiement à l'aide de l'outil deploymentmanager-autogen Open Source de Deployment Manager, nous vous recommandons de la plupart des cas d'utilisation, vous pouvez utiliser Deployment Manager Autogen pour inclure automatiquement un mot de passe aléatoire sécurisé. Si vous souhaitez ajouter plusieurs mots de passe aléatoires sécurisés, procédez comme suit pour créer des identifiants d'autorisation pour des packages de déploiement personnalisés.

Si vous envisagez de créer un package de déploiement personnalisé, procédez comme suit pour créer des identifiants d'autorisation:

  1. Dans le fichier Jinja de votre package de déploiement nommé PROJECT_NAME.jinja, créez la ressource suivante:

    - name: generated-password-0
     type: password.py
     properties:
       length: 8
       includeSymbols: False
    

    Pour spécifier la longueur du mot de passe généré automatiquement, modifiez la valeur de length.

    Pour inclure plusieurs mots de passe aléatoires sécurisés dans votre package de déploiement, ajoutez autant de doublons de ressources que vous le souhaitez, et incrémentez la numérotation de leur nom en conséquence. Exemple :

    - name: generated-password-0
     type: password.py
     properties:
       length: 8
       includeSymbols: False
    - name: generated-password-1
     type: password.py
     properties:
       length: 14
       includeSymbols: False
    
  2. Pour associer le mot de passe à votre instance de VM, ajoutez-le aux métadonnées du fichier Jinja, sous items. Exemple :

    metadata:
     items:
       - key: PASSWORD-0-NAME
         value: $(ref.generated-password-0.password)
       - key: PASSWORD-1-NAME
         value: $(ref.generated-password-1.password)
    

    Si vous incluez plusieurs mots de passe, ajoutez une paire clé/valeur pour chacun des mots de passe que vous avez créés à l'étape précédente.

  3. Ajoutez le mot de passe à la section outputs, près de la fin du fichier Jinja:

    outputs:
     - name: password0
       value: $(ref.generated-password-0.password)
     - name: password1
       value: $(ref.generated-password-1.password)
    

    Si vous incluez plusieurs mots de passe, ajoutez une paire nom/valeur pour chacun d'entre eux.

  4. Dans votre fichier de schéma nommé PROJECT_NAME.jinja.schema, ajoutez les sorties correspondant aux sorties que vous avez ajoutées à l'étape précédente:

    outputs:
     deployment:
       type: string
     password0:
       type: string
     password1:
       type: string
    
  5. Pour permettre à l'utilisateur d'afficher les mots de passe à partir de l'interface de post-déploiement, ajoutez les mots de passe au sous-réseau applicationTable dans PROJECT_NAME.jinja.display:

    runtime:
     applicationTable:
       rows:
         - label: PASSWORD-0-NAME (Temporary)
           value: '{{ outputs().password0 }}'
         - label: PASSWORD-1-NAME (Temporary)
           value: '{{ outputs().password1 }}'
    

Une fois votre solution déployée, pour obtenir les valeurs des mots de passe que vous avez créés, exécutez la commande suivante à partir de votre instance de VM:

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

Tester l'image de VM

Générez une instance de VM avec votre image nouvellement créée et 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.