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
etstartup-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.
- Lorsque vous ajoutez des clés SSH aux métadonnées, l'agent crée un fichier
- 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émarreSSHD
. - Ajoute des entrées OS Login au fichier
nsswitch.conf
. - Ajoute des entrées OS Login au fichier de configuration
PAM
pourSSHD
.
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'optionethernet_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 |
|
/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 |
|
/etc/sysconfig/network/ |
/etc/sysconfig/network/ifcfg-eth0 |
Les fichiers ifcfg existants ne sont pas écrasés, mais ignorés. |
NetworkManager |
|
/etc/NetworkManager/system-connections/ |
/etc/NetworkManager/system-connections/google-guest-agent-eth0.nmconnection |
|
systemd-networkd |
|
/usr/lib/systemd/network/ |
/usr/lib/systemd/network/20-eth0-google-guest-agent.network |
|
dhclient |
|
/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 :
- 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.
- Mettez à jour le truststore local en exécutant la commande appropriée pour l'OS, par exemple
update-ca-certificates
ouupdate-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 surtrue
, 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 estfalse
.wsfc-agent-port
: spécifie le port sur lequel l'agent répond aux vérifications d'état. Le paramètre par défaut est59998
.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
- Pour savoir comment gérer l'agent invité, consultez Configurer l'agent invité.