Gérer les extensions de VM à l'aide de règles d'extension

VM Extension Manager utilise des règles d'extension pour gérer vos extensions de VM à grande échelle. Pour en savoir plus, consultez À propos de VM Extension Manager. Ce document explique comment afficher, modifier et supprimer des règles d'extension de VM.

Rôles et autorisations IAM

Pour obtenir les autorisations nécessaires pour afficher, modifier et supprimer des stratégies d'extension de VM, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour afficher, modifier et supprimer les stratégies d'extension de VM. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour afficher, modifier et supprimer des règles d'extension de VM :

  • Pour afficher les règles des extensions : compute.vmExtensionPolicies.list
  • Pour afficher les détails d'une règle d'extension : compute.vmExtensionPolicies.get
  • Pour modifier les règles d'extension : compute.vmExtensionPolicies.update
  • Pour supprimer des règles d'extension : compute.vmExtensionPolicies.delete

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour en savoir plus sur les rôles et autorisations IAM dans Compute Engine, consultez Rôles et autorisations Compute Engine.

Afficher les règles relatives aux extensions

Vous pouvez afficher la liste des règles d'extension de VM dans votre projet ou les détails d'une règle spécifique à l'aide de la console Google Cloud ou de Google Cloud CLI.

Console

  1. Dans la console Google Cloud , accédez à la page Règles d'extension de VM.

    Accéder aux règles d'extension de VM

    Cette page répertorie toutes les règles d'extension de VM de votre projet.
  2. Pour afficher les détails d'une règle d'extension spécifique, cliquez sur son nom.

gcloud

Pour afficher toutes les règles d'extension d'un projet, exécutez la commande gcloud beta compute zone-vm-extension-policies list :

gcloud beta compute zone-vm-extension-policies list \
  --project=PROJECT_ID \
  --zone=ZONE \
  --page-size=PAGE_SIZE

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet Google Cloud .
  • ZONE : nom de la zone dans laquelle vous souhaitez lister les règles d'extension de VM.
  • PAGE_SIZE : nombre maximal de résultats à renvoyer par page.

Pour afficher les détails d'une règle d'extension spécifique, utilisez la commande gcloud beta compute zone-vm-extension-policies describe :

gcloud beta compute zone-vm-extension-policies describe POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Remplacez les éléments suivants :

  • POLICY_NAME : nom de la règle d'extension de VM que vous souhaitez décrire.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • ZONE : Google Cloud zone où se trouve la stratégie d'extension de VM.

Modifier des extensions en mettant à jour une règle d'extension de VM

Lorsque vous mettez à jour une règle, VM Extension Manager déploie les modifications sur toutes les VM applicables, généralement en une minute. Si vous modifiez les libellés d'inclusion, des extensions peuvent être installées sur de nouvelles VM ou désinstallées de VM existantes selon qu'elles correspondent ou non aux libellés mis à jour.

Console

  1. Dans la console Google Cloud , accédez à la page Règles d'extension de VM.

    Accéder aux règles d'extension de VM

  2. Sélectionnez le règlement que vous souhaitez modifier.
  3. Cliquez sur Modifier.
  4. Modifiez la description, la priorité, les extensions ou les instances de VM cibles.
  5. Cliquez sur Enregistrer.

gcloud

Utilisez la commande gcloud beta compute zone-vm-extension-policies update pour modifier une stratégie d'extension de VM existante. Lorsque vous mettez à jour une règle à l'aide de gcloud, la requête remplace complètement la règle existante. Tous les champs facultatifs que vous omettez reviennent à leur valeur par défaut au lieu de conserver les valeurs existantes de la règle modifiée.

Pour mettre à jour une règle d'extension de VM, exécutez la commande suivante :

  gcloud beta compute zone-vm-extension-policies update POLICY_NAME \
      --zone=ZONE \
      --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
      --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
      --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
      --inclusion-labels=KEY_1=VALUE_1 \
      --priority=PRIORITY_NUMBER \
      --description="DESCRIPTION"

Remplacez les éléments suivants :

  • POLICY_NAME : nom de la stratégie d'extension de VM à mettre à jour.
  • ZONE : zone Google Cloud où s'applique la règle.
  • EXTENSION_NAME_1, EXTENSION_NAME_2 : noms des extensions à mettre à jour. Vous devez spécifier au moins une extension.
  • VERSION_1 : version de la première extension de VM.
  • VERSION_2 : version de la deuxième extension de VM.
  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 : liste de paires clé-valeur séparées par des virgules, où la clé est le nom de l'extension et la valeur est le chemin d'accès au fichier de configuration de cette extension. Ce chemin d'accès se trouve sur la VM sur laquelle vous exécutez la commande gcloud, et non sur celle sur laquelle vous installez l'extension.

    Vous pouvez également fournir la configuration sous forme de chaîne intégrée à l'aide de l'option --config au lieu de --config-from-file, par exemple EXTENSION_NAME_1="CONFIG_1". Vous pouvez utiliser --config-from-file ou --config, mais pas les deux dans la même commande.

  • KEY_1=VALUE_1 : liste de paires clé/valeur séparées par une virgule qui définissent les libellés d'inclusion pour un sélecteur. Pour être ciblées, les VM doivent comporter tous les libellés spécifiés dans un sélecteur. Si vous spécifiez --inclusion-labels plusieurs fois, la règle cible les VM qui correspondent à l'un des sélecteurs fournis (OR logique). Si vous omettez cet indicateur, la règle cible toutes les VM de la zone spécifiée.

  • PRIORITY_NUMBER : numéro de priorité de la stratégie d'extension de VM.

  • DESCRIPTION : description de la règle d'extension de VM.

Désinstaller des extensions en supprimant une règle d'extension de VM

Lorsque vous supprimez une règle, VM Extension Manager désinstalle les extensions de toutes les VM gérées par cette règle. Toutefois, si une autre règle active de priorité inférieure s'applique à une VM et déclare la même extension, l'extension reste installée sur cette VM en fonction de la règle de priorité inférieure.

VM Extension Manager supprime les extensions de toutes les VM accessibles dans la minute qui suit la suppression de la règle. Si une VM est inaccessible parce que l'agent invité a été supprimé ou que la VM a été supprimée, VM Extension Manager ignore la suppression de l'extension. Si une telle VM redevient disponible, VM Extension Manager supprime les extensions à ce moment-là.

Console

  1. Dans la console Google Cloud , accédez à la page Règles d'extension de VM.

    Accéder aux règles d'extension de VM

  2. Sélectionnez la règle que vous souhaitez supprimer.
  3. Cliquez sur Supprimer.
  4. Dans la boîte de dialogue de confirmation, cliquez sur Supprimer.

gcloud

Utilisez la commande gcloud beta compute zone-vm-extension-policies delete pour supprimer une règle d'extension de VM existante.

gcloud beta compute zone-vm-extension-policies delete POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Remplacez les éléments suivants :

  • POLICY_NAME : nom de la règle d'extension de VM que vous souhaitez supprimer.
  • PROJECT_ID : ID de votre projet Google Cloud .
  • ZONE : zone Google Cloud où se trouve la règle.

Résoudre les problèmes liés aux extensions de VM

Cette section explique comment résoudre les problèmes liés aux extensions de VM.

Vérifier qu'une extension est installée

Pour vérifier qu'une extension est installée, vérifiez les points suivants sur la VM :

  • Connectez-vous à la VM et vérifiez les processus en cours d'exécution.

    Le tableau suivant répertorie les noms de processus pour chaque extension :

    Nom de l'extension Nom du processus d'extension
    google-cloud-sap-extension google_cloud_sap_agent
    google-cloud-workload-extension google_cloud_workload_agent
    ops-agent ops-agent

    Linux

    ps aux | grep 'EXTENSION_PROCESS_NAME'
    Remplacez EXTENSION_PROCESS_NAME par le nom du processus de l'extension. Par exemple, pour vérifier le processus de l'agent Ops, exécutez la commande suivante :
    ps aux | grep 'ops-agent'

    Windows

    tasklist | findstr "EXTENSION_PROCESS_NAME"
    Remplacez EXTENSION_PROCESS_NAME par le nom du processus de l'extension. Par exemple, pour vérifier le processus de l'agent Ops, exécutez la commande suivante :
    tasklist | findstr "ops-agent"

    Le résultat de la commande ps sur une VM Linux pour l'agent Ops peut afficher une entrée semblable à la suivante :

    ....
    /var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3
    ....
  • Activer et examiner les journaux de l'agent invité Les journaux de l'agent invité indiquent quand une extension est installée et démarrée.

    Voici un exemple de sortie que vous pouvez voir dans les journaux de l'agent invité lorsqu'une extension de l'agent Ops est installée :

    my-instance google_guest_agent [14972]: Installing plugin "ops-agent", revision "2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (client.go:181) Sent message [[type.googleapis.com/agent_controlplane.PluginEventMessage: (revision_id:"2dfa648c1892da87)]]
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "DownloadPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:316) Successfully downloaded "https://storage.googleapis.com/acp-gcs-bucket-us-centrall-a/ops-agent
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "UnpackPluginArchiveStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:361) Successfully unpacked "/var/lib/google-guest-agent/ops-agent.tar.gz" to "/google-guest-agent/ops-agent_2dfa648c1892da87
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "LaunchPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (run_linux.go:32) Attempting process start: (OutputType:0 Name:/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87)
    my-instance google_guest_agent [14972]: (pluginlauncher.go:132) Launched a plugin process from "/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:136) Dialing in on plugin "ops-agent 2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:51) Executing start request on plugin "ops-agent_2dfa648c1892da87"

Résoudre les problèmes d'installation

Si une extension n'est pas installée sur une VM après la création d'une règle, procédez comme suit pour résoudre le problème :

  1. Attendez que les règles soient appliquées. L'application d'une règle peut prendre jusqu'à une heure, y compris les éventuelles tentatives.
  2. Vérifiez que les étiquettes d'inclusion spécifiées dans la règle correspondent à celles de la VM.
  3. Pour identifier les éventuelles erreurs d'installation, activez la journalisation du débogage pour l'agent invité.
  4. Une fois le problème sous-jacent résolu, réessayez l'installation à l'aide de l'une des méthodes suivantes :

    • Recréez la règle : supprimez-la, puis créez-en une autre.
    • Utilisez une règle temporaire de haute priorité : si vous souhaitez éviter de recréer une règle qui affecte de nombreuses VM, utilisez une règle temporaire de priorité plus élevée pour réessayer l'installation sur des VM spécifiques :

      1. Ajoutez une étiquette aux VM pour lesquelles l'installation a échoué. Par exemple, ajoutez un libellé status=failed.
      2. Créez une règle de priorité supérieure qui cible le nouveau libellé. Par exemple, si la stratégie d'origine qui a échoué avait la priorité par défaut de 1000, créez une stratégie avec une priorité plus élevée, telle que 500.
        gcloud beta compute zone-vm-extension-policies create temp-policy  
        --project=test-project
        --zone=us-central1-f
        --extensions=ops-agent
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml"
        --priority=500
        --inclusion-labels=status=failed
      3. Une fois l'extension installée, supprimez la règle temporaire et supprimez le libellé des VM. L'extension reste installée, car la règle d'origine est toujours active.

Afficher les journaux de débogage de l'agent invité

Pour activer la journalisation du débogage, ajoutez les paramètres de niveau de journalisation et de niveau de détail à la section Core du fichier de configuration de l'agent invité comme suit :

Linux

  1. Ouvrez le fichier de configuration de l'agent invité situé sous /etc/default/instance_configs.cfg.
  2. Ajoutez les lignes suivantes au fichier. Si la section [Core] existe déjà, ajoutez-y les paramètres log_level et log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Redémarrez le gestionnaire d'agent invité en exécutant la commande suivante :

     sudo systemctl restart google-guest-agent-manager
    
  4. Pour afficher les journaux de l'activité de l'agent invité lors de l'installation de l'extension, exécutez la commande suivante :

    journalctl -u google-guest-agent-manager
    

Windows

  1. Ouvrez le fichier de configuration de l'agent invité situé à l'adresse C:\Program Files\Google\Compute Engine\instance_configs.cfg.
  2. Ajoutez les lignes suivantes au fichier. Si la section [Core] existe déjà, ajoutez-y les paramètres log_level et log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Redémarrez le gestionnaire d'agents invités en exécutant la commande suivante en tant qu'administrateur Windows :

     net stop GCEAgentManager
     net start GCEAgentManager
    
  4. Pour afficher les journaux d'activité de l'agent invité lors de l'installation de l'extension, exécutez la commande suivante dans PowerShell :

    Get-Eventlog -Source google_guest_agent_manager -LogName Application
    

Après avoir activé les journaux de débogage, recherchez les erreurs courantes suivantes :

  • Espace disque insuffisant : si les journaux indiquent que l'espace disque est insuffisant, libérez de l'espace sur le disque ou redimensionnez-le pour en ajouter.
  • Utilisation excessive des ressources : si les journaux indiquent que l'agent invité a arrêté l'extension en raison d'une utilisation excessive de la mémoire ou du processeur, remplacez le type de machine de la VM par un type disposant de davantage de ressources.

Étapes suivantes