Fonctionnalité de l'agent invité


Ce document présente les fonctionnalités de base de l'agent invité, un composant essentiel de l'environnement invité. L'environnement invité contient des scripts, des daemons et des binaires dont les instances ont besoin pour s'exécuter sur Compute Engine. Pour en savoir plus, consultez Environnement invité.

Fonctionnement de l'agent invité

À partir de la version 20250901.00, l'agent invité utilise une architecture basée sur les plug-ins. Cette conception améliore la fiabilité et la flexibilité en séparant les fonctions de l'agent en composants distincts.

L'architecture de l'agent invité se compose de plusieurs composants clés :

  • Gestionnaire d'agents invités : processus central de votre instance qui démarre, arrête et surveille tous les plug-ins.
  • Plug-in principal : ce plug-in gère les services essentiels dont votre instance a besoin pour s'exécuter sur Google Cloud. Il est impossible de désactiver cette fonctionnalité.
  • Plug-ins facultatifs : ces plug-ins intègrent votre instance à d'autres services Google Cloud , tels que Cloud Monitoring. Vous pouvez contrôler les plug-ins qui s'exécutent sur votre instance.
  • Plan de contrôle de l'agent : il s'agit d'un service Google Cloud géré qui s'exécute sur l'infrastructure de backend de Google et gère le cycle de vie des plug-ins facultatifs, y compris leur installation et leurs mises à jour.

Pour en savoir plus sur l'architecture de l'agent invité, consultez À propos de l'agent invité.

Fonctionnalités de base

Le plug-in principal est responsable des services fondamentaux dont votre instance a besoin pour fonctionner sur Compute Engine. La section suivante détaille les fonctions fournies par le plug-in principal. Vous pouvez personnaliser la plupart de ces fonctionnalités à l'aide du fichier de configuration de l'agent invité.

Configuration initiale de l'instance et optimisations

L'agent invité effectue plusieurs tâches de configuration pour préparer l'instance à s'exécuter sur Compute Engine. Comme le montre le tableau suivant, certaines tâches ne s'exécutent qu'au premier démarrage, tandis que d'autres s'exécutent à chaque démarrage.

Tâche Fréquence
Générer des clés d'hôte SSH Au premier démarrage
Créer la configuration boto pour utiliser Cloud Storage Au premier démarrage
Optimiser pour les disques SSD locaux À chaque démarrage
Activer les files d'attente multiples sur tous les appareils virtionet À chaque démarrage

Vous pouvez contrôler ces tâches de configuration en configurant les options InstanceSetup du fichier de configuration de l'agent invité. Par exemple, vous pouvez désactiver l'optimisation des disques SSD locaux en définissant optimize_local_ssd = false.

Collecte de la télémétrie système

L'agent invité enregistre des informations télémétriques de base sur le système au moment du démarrage, puis une fois toutes les 24 heures. Les informations enregistrées incluent les éléments suivants :

  • Version et architecture de l'agent invité
  • Nom et version du système d'exploitation
  • Version et version du noyau du système d'exploitation

Vous pouvez désactiver la collecte de données de télémétrie en définissant la clé de métadonnées disable-guest-telemetry sur true. Pour définir des métadonnées, consultez Définir et supprimer des métadonnées personnalisées.

Synchronisation de l'horloge (Linux uniquement)

Pour garantir une heure exacte, l'agent invité utilise le composant clock_skew_daemon pour corriger périodiquement l'horloge de votre instance afin qu'elle corresponde à celle du serveur physique sur lequel elle s'exécute. Ce processus permet d'éviter un problème appelé décalage d'horloge et génère un message system time has changed dans les journaux de votre instance, ce qui confirme que l'heure a bien été synchronisée.

L'agent synchronise normalement l'horloge après un événement d'arrêt ou de démarrage, ou après une migration.

Vous pouvez désactiver le composant clock_skew_daemon en définissant clock_skew_daemon = false dans le fichier de configuration de l'agent invité.

Exécution de scripts de métadonnées

Vous pouvez utiliser des scripts de démarrage et des scripts d'arrêt pour effectuer des tâches automatisées à chaque démarrage ou arrêt de votre instance.

L'agent invité aide à exécuter ces scripts comme suit :

  • Exécute des scripts dans un shell.
  • Si vous spécifiez plusieurs scripts (par exemple, si vous utilisez à la fois startup-script et startup-script-url), l'agent les exécute tous les deux.
  • Lorsque plusieurs scripts sont fournis pour le même événement, l'agent exécute d'abord le script à partir de l'URL.
  • Une fois un script terminé, l'agent enregistre son état de sortie.

Vous pouvez configurer l'exécution des scripts de métadonnées en modifiant les options MetadataScripts dans le fichier de configuration de l'agent invité.

Gestion des comptes utilisateur et des clés SSH

L'agent invité utilise un accounts_daemon pour gérer les comptes utilisateur locaux et les clés SSH, qui contrôlent l'accès à l'instance. Le comportement spécifique varie selon les systèmes d'exploitation Linux et Windows.

Vous pouvez modifier les options de gestion des comptes en configurant les options Accounts dans le fichier de configuration de l'agent invité.

Linux

OS Login permet de gérer l'accès SSH à vos instances à l'aide d'IAM, sans avoir à créer et gérer des clés SSH individuelles. Pour en savoir plus sur OS Login, consultez OS Login. Sur les instances Linux, si OS Login n'est pas activé, l'agent crée et gère les comptes d'utilisateurs locaux et leurs clés SSH à l'aide des paramètres de métadonnées.

Lorsque vous ajoutez ou supprimez des clés SSH des métadonnées d'une instance ou d'un projet, l'agent invité crée ou supprime un compte utilisateur local. L'agent invité effectue également les actions suivantes pour gérer ces comptes utilisateur locaux :

  • Il gère le fichier authorized_keys de chaque compte utilisateur qu'il gère comme suit :
    • Lorsque vous ajoutez des clés SSH aux métadonnées, l'agent crée un fichier authorized_keys pour le compte utilisateur.
    • Lorsque vous supprimez toutes les clés SSH d'un utilisateur des métadonnées, l'agent supprime le fichier authorized_keys de ce compte utilisateur.
  • Gère les droits d'administrateur à l'aide du groupe Linux google-sudoers. Tous les membres de ce groupe reçoivent des autorisations sudo sur l'instance.
  • Ajoute tous les comptes utilisateur qu'il provisionne au groupe google-sudoers.
  • Ajoute des comptes utilisateur à tous les groupes Linux supplémentaires que vous spécifiez dans l'option groups du fichier de configuration de l'agent invité.

Windows

Sur les instances Windows, l'agent crée automatiquement des comptes utilisateur locaux pour tout compte utilisateur SSH spécifié dans les clés SSH des métadonnées au niveau de l'instance ou du projet. L'agent invité gère également la création de comptes utilisateur et la définition ou la réinitialisation de mots de passe. Ces comptes utilisateur locaux sont nécessaires pour se connecter à des instances Windows à l'aide de SSH.

Vous pouvez empêcher le provisionnement involontaire des utilisateurs AD en désactivant le gestionnaire de comptes sur l'instance du contrôleur AD. Pour en savoir plus sur la configuration d'AD sur Compute Engine, consultez Déployer des contrôleurs de domaine.

Configuration d'OS Login (Linux uniquement)

OS Login permet de gérer l'accès SSH à vos instances à l'aide d'IAM, sans avoir à créer et gérer des clés SSH individuelles. Pour en savoir plus sur OS Login, consultez la documentation OS Login.

Lorsque vous activez OS Login, l'agent invité est chargé de configurer l'instance pour qu'elle utilise OS Login.

L'agent invité configure OS Login en effectuant les tâches suivantes :

  • Ajoute un bloc de configuration Google au fichier de configuration SSHD et redémarre SSHD.
  • Ajoute des entrées OS Login au fichier nsswitch.conf.
  • Ajoute des entrées OS Login au fichier de configuration PAM pour SSHD.

Si vous désactivez OS Login, les modifications de configuration sont supprimées. Les options de la section Accounts du fichier de configuration SSHD ne s'appliquent pas aux utilisateurs d'OS Login.

Gestion du réseau

L'agent invité configure automatiquement les interfaces réseau de votre instance au démarrage. Il lit la configuration réseau à partir du serveur de métadonnées pour s'assurer que votre instance se connecte correctement au réseau et qu'elle peut accéder à d'autres services Google Cloud.

Vous pouvez contrôler le comportement de gestion du réseau de l'agent en configurant les options NetworkInterfaces dans le fichier de configuration de l'agent invité. Par exemple, vous pouvez définir l'option manage_primary_nic = true pour que l'agent gère la carte d'interface réseau (NIC) principale en plus des cartes NIC secondaires.

À chaque démarrage, l'agent invité effectue les tâches clés suivantes :

  • Active les interfaces réseau : l'agent détecte le gestionnaire de réseau actif sur votre OS et l'utilise pour activer toutes les cartes d'interface réseau secondaires.
  • Configure les routes IP : l'agent configure les routes IP (IPv4 uniquement) nécessaires pour des fonctionnalités telles que le transfert d'adresse IP et les plages d'adresses IP d'alias comme suit :
    • Définit les routes sur l'interface Ethernet principale.
    • Configure les routes Google par défaut, avec l'ID de protocole de routage 66. Cet ID est un espace de noms pour les adresses IP configurées de l'agent invité. Vous pouvez modifier cet ID à l'aide de l'option ethernet_proto_id dans le fichier de configuration de l'agent invité.
  • Crée une route vers le serveur de métadonnées : l'agent s'assure que votre carte d'interface réseau principale peut toujours communiquer avec le serveur de métadonnées pour obtenir des informations sur l'instance.
  • Configuration du VLAN : si votre instance est configurée pour se connecter à un réseau local virtuel (VLAN), l'agent invité gère automatiquement la configuration. Il lit la configuration VLAN à partir du serveur de métadonnées et configure l'interface réseau à l'intérieur de l'instance pour qu'elle utilise le tag VLAN approprié. Cela garantit que l'instance communique sur le réseau logique prévu. Important : Si le VLAN est associé à la carte d'interface réseau principale, l'agent invité le configure même si manage_primary_nic est désactivé.

Sélection du gestionnaire de réseaux

Sur Linux, l'agent invité détecte automatiquement le gestionnaire de réseau disponible sur le système et l'utilise pour configurer les interfaces réseau. L'agent recherche les gestionnaires compatibles par ordre de priorité, de netplan à dhclient.

Le tableau suivant répertorie les gestionnaires de réseau compatibles, organisés par système d'exploitation auquel ils sont le plus souvent associés par défaut. La configuration de votre instance peut être différente, mais ce tableau reflète le gestionnaire de réseau par défaut pour les systèmes d'exploitation listés.

Gestionnaire de réseaux Système d'exploitation Emplacement de la configuration Exemple de chemin Remarques
netplan
  • Debian 12 ou version ultérieure
  • Ubuntu 20.04 ou version ultérieure
/run/netplan/ /run/netplan/20-google-guest-agent-eth0.yaml L'agent peut également utiliser un lieu de dépôt à l'adresse /etc/systemd/network/.
wicked
  • SLES
/etc/sysconfig/network/ /etc/sysconfig/network/ifcfg-eth0 Les fichiers ifcfg existants ne sont pas écrasés, mais ignorés.
NetworkManager
  • CentOS
  • RHEL
  • Rocky Linux
/etc/NetworkManager/system-connections/ /etc/NetworkManager/system-connections/google-guest-agent-eth0.nmconnection
systemd-networkd
  • Debian
/usr/lib/systemd/network/ /usr/lib/systemd/network/20-eth0-google-guest-agent.network
dhclient
  • Debian 11 ou version antérieure
  • Ubuntu 18.04 ou version antérieure
/run/ /run/dhclient.google-guest-agent.eth0.ipv4.pid Si aucun autre gestionnaire de réseau n'est détecté, l'agent invité utilise dhclient par défaut.

Gestion sécurisée des identifiants du serveur de métadonnées (MDS)

Les VM protégées sont désormais compatibles avec la communication sécurisée avec le serveur de métadonnées à l'aide du point de terminaison HTTPS https://metadata.google.internal/computeMetadata/v1. Cette amélioration fournit un canal plus sécurisé pour l'accès aux métadonnées.

Pour activer cette communication sécurisée, l'agent invité récupère et stocke les identifiants nécessaires sur le disque de l'instance. Ces identifiants sont enregistrés dans un emplacement standard, ce qui les rend accessibles à toute application cliente exécutée sur l'instance. Pour consulter ces emplacements, consultez Où sont stockés les certificats ?.

La configuration des certificats HTTPS MDS est désactivée par défaut. Pour que vos VM protégées configurent automatiquement les certificats HTTPS MDS, définissez la clé de métadonnées disable-https-mds-setup sur false sur votre instance ou votre projet. Pour définir des métadonnées, consultez Définir et supprimer des métadonnées personnalisées.

La gestion des identifiants par l'agent invité inclut les éléments suivants :

  • Mise à jour initiale : le certificat racine et les identifiants client sont mis à jour chaque fois que le processus de l'agent invité démarre.
  • Actualisation automatique : pour renforcer la sécurité, l'agent invité actualise automatiquement les identifiants client toutes les 48 heures.
  • Période de chevauchement : l'agent génère et enregistre de nouveaux identifiants tandis que les anciens restent valides. La période de chevauchement permet aux clients de disposer de suffisamment de temps pour passer aux nouveaux identifiants avant l'expiration des anciens. Cette période de chevauchement permet également à l'agent de réessayer d'acquérir des identifiants en cas d'échec, ce qui garantit que des identifiants valides sont en place avant que les identifiants existants ne deviennent non valides.
  • Composition : l'agent invité s'assure que les identifiants du client se composent d'une clé privée EC (Elliptic Curve) concaténée avec le certificat client.
  • Unicité : l'agent invité garantit que les identifiants sont uniques à une instance et ne peuvent pas être utilisés ailleurs.

Pour en savoir plus sur le point de terminaison du serveur de métadonnées HTTPS, consultez À propos du point de terminaison du serveur de métadonnées HTTPS.

Par défaut, l'agent invité écrit les certificats directement sur le disque. Toutefois, vous pouvez configurer l'agent pour qu'il intègre les certificats dans les magasins de certificats intégrés du système d'exploitation. Pour activer cette intégration, définissez la clé de métadonnées enable-https-mds-native-cert-store sur true. Pour définir des métadonnées, consultez Définir et supprimer des métadonnées personnalisées.

Le comportement de l'agent pour l'ajout de certificats aux magasins de confiance de l'OS varie selon l'OS :

Linux

L'agent invité effectue les étapes suivantes :

  1. Ajoute le certificat racine MDS au truststore du système. Le chemin d'accès spécifique dépend de la distribution de l'OS. Pour examiner ces emplacements, consultez Stockage des certificats racine dans le magasin de confiance de l'OS.
  2. Mettez à jour le truststore local en exécutant la commande appropriée pour l'OS, par exemple update-ca-certificates ou update-ca-trust.

Windows

L'agent ajoute les identifiants client à Cert:\LocalMachine\My et le certificat racine à Cert:\LocalMachine\Root.

Prise en charge du cluster de basculement Windows (Windows uniquement)

L'agent invité surveille le nœud actif dans le cluster de basculement Windows Server et coordonne l'équilibreur de charge interne Google Cloud pour transférer tout le trafic du cluster vers le nœud attendu.

Vous pouvez contrôler ce comportement en utilisant les champs suivants dans les métadonnées d'instance ou dans le fichier instance_configs.cfg :

  • enable-wsfc : lorsque la valeur est définie sur true, l'agent ignore toutes les informations de transfert d'adresse IP et commence à répondre au port de vérification de l'état'état. Le paramètre par défaut est false.
  • wsfc-agent-port : spécifie le port sur lequel l'agent répond aux vérifications d'état. Le paramètre par défaut est 59998.
  • wsfc-addrs : liste d'adresses IP séparées par une virgule. Ce paramètre avancé vous permet d'avoir à la fois des adresses IP de transfert normales et des adresses IP de cluster sur la même instance. Lorsque vous définissez cette option, l'agent ne saute la configuration automatique que pour les adresses IP de cette liste. Par défaut, cette valeur n'est pas définie.

Étapes suivantes