Vue d’ensemble de l’agent de machine virtuelle Linux Azure
L’agent de machine virtuelle Linux Microsoft Azure (waagent) gère le provisionnement de Linux et FreeBSD ainsi que l’interaction entre les machines virtuelles et le contrôleur de structure Azure. Outre le fait que l’agent Linux apporte la fonctionnalité de provisionnement, Azure offre la possibilité d’utiliser cloud-init pour certains systèmes d’exploitation Linux.
L’agent Linux apporte les fonctionnalités suivantes pour les déploiements de machines virtuelles Linux et FreeBSD dans Azure. Pour plus d’informations, consultez la page Readme de l’agent de machine virtuelle Linux Azure sur GitHub.
Approvisionnement d’images
- Crée un compte d’utilisateur
- Configuration des types d'authentification SSH
- Déploiement des clés publiques et des paires de clés SSH
- Définition du nom d'hôte
- Publication du nom d'hôte sur la plateforme DNS
- Génération de rapports sur l’empreinte digitale de la clé d'hôte SSH pour la plateforme
- Gestion du disque de ressources
- Formatage et montage du disque de ressources
- Configuration de l'espace d'échange
Mise en réseau
- Gestion des itinéraires afin d'améliorer la compatibilité avec les serveurs DHCP de plateforme
- Garantie de la stabilité du nom de l'interface réseau
Noyau
- Configuration de l’architecture NUMA virtuelle (désactivée pour le noyau 2.6.37)
- Consommation de l'entropie Hyper-V pour /dev/random
- Configuration des délais d’expiration SCSI pour l’appareil racine, qui peut être distant
Diagnostics
- Redirection de la console vers le port série
Déploiement avec System Center Virtual Machine Manager
- Détection et amorçage de l’agent Virtual Machine Manager pour Linux quand il s’exécute dans un environnement System Center Virtual Machine Manager 2012 R2
Extension de machine virtuelle
- Injection de composants créés par Microsoft et ses partenaires dans les machines virtuelles Linux pour activer les logiciels et l’automatisation de la configuration
Vous trouverez une implémentation de référence d’extension de machine virtuelle sur GitHub.
Communication
Le flux d’informations de la plateforme vers l’agent emprunte deux canaux :
- Un DVD attaché au moment du démarrage pour les déploiements de machines virtuelles. Ce DVD comporte un fichier de configuration conforme au format OVF (Open Virtualization Format) qui contient toutes les informations de provisionnement autres que les paires de clés SSH.
- Un point de terminaison TCP qui expose une API REST servant à obtenir la configuration du déploiement et de la topologie.
Conditions requises
Les tests ont confirmé que les systèmes suivants fonctionnent avec l’agent de machine virtuelle Linux Azure.
Notes
Cette liste peut se distinguer des distributions Linux approuvées sur Azure.
Distribution | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x + | 9.x + |
Debian | > 10 | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Linux Azure | 2.x | 2.x |
OpenSUSE | 12.3+ | Non pris en charge |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Non pris en charge |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+, 9.x+ | 8.6+, 9.0+ |
Rocky Linux | 9.x + | 9.x + |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu (versions LTS) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.04+ |
Important
RHEL/Oracle Linux 6.10 est la seule version RHEL/OL 6 à proposer une prise en charge du cycle de vie étendu (ELS). La maintenance étendue se termine le 30 juin 2024.
Autres systèmes pris en charge :
- L’agent fonctionne sur plus de systèmes que ceux répertoriés dans la documentation. Toutefois, nous ne testons pas les distributions qui ne figurent pas sur la liste approuvée et ne les prenons pas en charge. En particulier, FreeBSD n’est pas approuvé. Le client peut essayer FreeBSD 8 et, s’il rencontre des problèmes, il peut ouvrir un problème dans notre référentiel GitHub pour que nous puissions l’aider.
Pour fonctionner correctement, l’agent Linux est tributaire des packages système suivants :
- Python 2.6+
- OpenSSL 1.0+
- OpenSSH 5.3+
- Utilitaires de système de fichiers : sfdisk, fdisk, mkfs, séparés
- Outils de mot de passe : chpasswd, sudo
- Outils de traitement de texte : sed, grep
- Outils réseau : ip-route
- Prise en charge du noyau pour le montage de systèmes de fichiers UDF
Vérifiez que votre machine virtuelle a accès à l’adresse IP 168.63.129.16. Pour plus d’informations, consultez Qu’est-ce que l’adresse IP 168.63.129.16 ?
Installation
Pour installer et mettre à niveau l’agent de machine virtuelle Linux Azure, la méthode prise en charge consiste à utiliser un package RPM ou DEB du référentiel de packages de votre distribution. Tous les fournisseurs de distribution approuvés intègrent le package de l’agent de machine virtuelle Linux Azure dans leurs images et référentiels.
Certaines distributions Linux risquent de désactiver la fonctionnalité Mise à jour automatique de l’agent de machine virtuelle Linux Azure. Certains référentiels risquent également de contenir des versions antérieures et donc de rencontrer des problèmes avec les extensions modernes. C’est pourquoi nous vous recommandons d’installer la dernière version stable.
Pour vous assurer que l’agent de machine virtuelle Linux Azure est mis à jour correctement, nous vous recommandons d’avoir l’option AutoUpdate.Enabled=Y
dans le fichier /etc/waagent.conf
ou simplement de la commenter pour qu’elle soit définie aussi par défaut. Le fait d’avoir AutoUpdate.Enabled=N
ne permet pas de mettre à jour correctement l’agent de machine virtuelle Linux Azure.
Pour connaître les options d’installation avancées, telles que l’installation à partir d’une source ou dans des emplacements personnalisés ou avec des préfixes, consultez Agent de machine virtuelle Linux Microsoft Azure. À part ces scénarios, nous ne prenons pas en charge ni ne recommandons la mise à niveau ou la réinstallation de l’agent de machine virtuelle Linux Azure à partir de la source.
Options de ligne de commande
Indicateurs
verbose
: accroît la verbosité de la commande spécifiée.force
: ignore la confirmation interactive pour certaines commandes.
Commandes
help
: liste les commandes et les indicateurs pris en charge.deprovision
: essaie de nettoyer le système et de le préparer pour un nouveau provisionnement. L’opération supprime :- toutes les clés d’hôte SSH, si
Provisioning.RegenerateSshHostKeyPair
a la valeury
dans le fichier de configuration ; - la configuration de
Nameserver
dans /etc/resolv.conf ; - le mot de passe racine dans /etc/shadow, si
Provisioning.DeleteRootPassword
a la valeury
dans le fichier config ; - les baux du client DHCP mis en cache.
Le client réinitialise le nom d’hôte en
localhost.localdomain
.Avertissement
L’annulation de l’approvisionnement ne garantit pas que l’image est exempte de toute information sensible et qu’elle convient à la redistribution.
- toutes les clés d’hôte SSH, si
deprovision+user
: effectue toutes les opérations de la commandedeprovision
et supprime le dernier compte d’utilisateur provisionné (obtenu à partir de /var/lib/waagent) ainsi que les données associées. Utilisez ce paramètre pour déprovisionner une image précédemment approvisionnée sur Azure afin qu’elle puisse être capturée et réutilisée.version
: affiche la version de waagent.serialconsole
: configure GRUB pour marquer ttyS0, premier port série, en tant que console de démarrage. Ainsi, les journaux d’activité de démarrage du noyau sont envoyés au port série et sont prêts à être débogués.daemon
: exécute waagent en tant que démon pour gérer l’interaction avec la plateforme. Cet argument est spécifié à waagent dans le script waagent init.start
: exécute waagent en arrière-plan.
Configuration
Le fichier de configuration /etc/waagent.conf contrôle les actions de waagent. Voici un exemple de fichier de configuration :
Provisioning.Enabled=y
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.AllowResetSysUser=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=None
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0
LBProbeResponder=y
Logs.Verbose=n
OS.RootDeviceScsiTimeout=300
OS.OpensslPath=None
HttpProxy.Host=None
HttpProxy.Port=None
AutoUpdate.Enabled=y
Il existe trois types d’options de configuration : Boolean
, String
ou Integer
. Vous pouvez attribuer aux options de configuration Boolean
la valeur y
ou n
. Le mot clé None
peut être utilisé dans le cas de certaines entrées de type chaîne.
Provisioning.Enabled
Type: Boolean
Default: y
Cette option permet à l'utilisateur d’activer ou de désactiver la fonctionnalité d'approvisionnement dans l'agent. Les valeurs valides sont y
et n
. Si l'approvisionnement est désactivé, les clés d'utilisateur et d'hôte SSH dans l'image sont conservées et toute configuration présente dans l'API d'approvisionnement Azure est ignorée.
Notes
La valeur par défaut du paramètre Provisioning.Enabled
est n
dans les images cloud Ubuntu qui utilisent cloud-init pour l’approvisionnement.
Provisioning.DeleteRootPassword
Type: Boolean
Default: n
Si la valeur est y
, l’agent efface le mot de passe racine du fichier /etc/shadow pendant le provisionnement.
Provisioning.RegenerateSshHostKeyPair
Type: Boolean
Default: y
Si la valeur est y
, l’agent supprime toutes les paires de clés d’hôte SSH de /etc/ssh/ pendant le provisionnement, notamment celles de type ECDSA, DSA et RSA. L’agent génère une seule nouvelle paire de clés.
Configure le type de chiffrement pour la nouvelle paire de clés à l’aide de l’entrée Provisioning.SshHostKeyPairType
. Certaines distributions recréent les paires de clés SSH pour tous les types de chiffrement manquants quand le démon SSH est redémarré (par exemple, après un redémarrage système).
Provisioning.SshHostKeyPairType
Type: String
Default: rsa
Vous pouvez attribuer à cette option un type d’algorithme de chiffrement pris en charge par le démon SSH sur la machine virtuelle. Les valeurs généralement prises en charge sont rsa
, dsa
et ecdsa
. Le fichier putty.exe sur Windows ne prend pas en charge la valeur ecdsa
. Si vous envisagez d’utiliser putty.exe sur Windows pour établir une connexion à un déploiement Linux, utilisez rsa
ou dsa
.
Provisioning.MonitorHostName
Type: Boolean
Default: y
Si la valeur est y
, waagent surveille tout changement de nom d’hôte sur la machine virtuelle Linux retourné par la commande hostname
. Waagent met ensuite automatiquement à jour la configuration réseau dans l’image pour répercuter le changement. Pour envoyer (push) le changement de nom aux serveurs DNS, le réseau redémarre sur la machine virtuelle. La connexion Internet est alors brièvement interrompue à cause de ce redémarrage.
Provisioning.DecodeCustomData
Type: Boolean
Default: n
Si la valeur est y
, waagent décode CustomData
en Base64.
Provisioning.ExecuteCustomData
Type: Boolean
Default: n
Si la valeur est y
, waagent exécute CustomData
après le provisionnement.
Provisioning.AllowResetSysUser
Type: Boolean
Default: n
Cette option permet de réinitialiser le mot de passe de l’utilisateur système. Elle est désactivée par défaut.
Provisioning.PasswordCryptId
Type: String
Default: 6
Cette option spécifie l’algorithme qu’utilise la fonction crypt
quand elle génère un hachage de mot de passe. Les valeurs autorisées sont :
1
: MD52a
: Blowfish5
: SHA-2566
: SHA-512
Provisioning.PasswordCryptSaltLength
Type: String
Default: 10
Cette option spécifie la longueur de la valeur salt aléatoire utilisée lors de la génération du hachage de mot de passe.
ResourceDisk.Format
Type: Boolean
Default: y
Si la valeur est y
, waagent formate et monte le disque de ressources fourni par la plateforme, sauf si le type de système de fichiers demandé par l’utilisateur dans ResourceDisk.Filesystem
est ntfs
. L’agent rend une seule partition Linux (ID 83) disponible sur le disque. Cette partition n’est pas formatée si elle peut être correctement montée.
ResourceDisk.Filesystem
Type: String
Default: ext4
Cette option définit le type de système de fichiers pour le disque de ressources. Les valeurs prises en charge diffèrent selon la distribution Linux. Si la chaîne est X
, alors mkfs.X
doit être présent sur l'image Linux.
ResourceDisk.MountPoint
Type: String
Default: /mnt/resource
Cette option indique le chemin d’accès au disque de ressources monté. Le disque de ressources est un disque temporaire qui peut être vidé pendant le déprovisionnement de la machine virtuelle.
ResourceDisk.MountOptions
Type: String
Default: None
Cette option spécifie les options de montage de disque à transmettre à la commande mount -o
. La valeur est une liste de valeurs séparées par des virgules, par exemple nodev,nosuid
. Pour plus d’informations, consultez la page mount(8)
du manuel.
ResourceDisk.EnableSwap
Type: Boolean
Default: n
Si vous définissez cette option, l’agent crée un fichier d’échange (/swapfile) sur le disque de ressources et l’ajoute à l’espace d’échange système.
ResourceDisk.SwapSizeMB
Type: Integer
Default: 0
Cette option indique la taille du fichier d’échange en mégaoctets.
Logs.Verbose
Type: Boolean
Default: n
Si vous définissez cette option, la verbosité du journal est renforcée. Waagent enregistre dans /var/log/waagent.log et utilise la fonctionnalité logrotate
du système pour faire tourner les journaux d’activité.
OS.EnableRDMA
Type: Boolean
Default: n
Si vous définissez cette option, l’agent tente de s’installer et charge ensuite un pilote de noyau RDMA qui correspond à la version du microprogramme du matériel sous-jacent.
OS.RootDeviceScsiTimeout
Type: Integer
Default: 300
Cette option configure le délai d’expiration SCSI en secondes sur le disque du système d'exploitation et les lecteurs de données. Si elle n’est pas définie, les valeurs par défaut du système sont utilisées.
OS.OpensslPath
Type: String
Default: None
Vous pouvez utiliser cette option pour spécifier un autre chemin pour le binaire openssl à utiliser pour les opérations de chiffrement.
HttpProxy.Host, HttpProxy.Port
Type: String
Default: None
Si vous définissez cette option, l’agent utilise ce serveur proxy pour accéder à Internet.
AutoUpdate.Enabled
Type: Boolean
Default: y
Active ou désactive la mise à jour automatique du traitement de l’état de l’objectif. La valeur par défaut est y
.
Collecte automatique de journaux dans l’agent invité Linux Azure
Depuis la version 2.7+, l’agent invité Linux Azure dispose d’une fonctionnalité permettant de collecter automatiquement certains journaux et de les charger. Cette fonctionnalité nécessite actuellement systemd
. Elle utilise une nouvelle tranche systemd
appelée azure-walinuxagent-logcollector.slice
pour gérer les ressources pendant qu’elle effectue la collecte.
L’objectif est de faciliter l’analyse hors connexion. L’agent produit un fichier .zip de certains journaux de diagnostic avant de les charger sur l’hôte de la machine virtuelle. Les équipes d’ingénierie et les professionnels du support technique peuvent récupérer ce fichier pour examiner les problèmes pour le compte du propriétaire de la machine virtuelle. Pour obtenir des informations techniques sur les fichiers collectés par l’agent invité Linux Azure, consultez le fichier azurelinuxagent/common/logcollector_manifests.py dans le dépôt GitHub de l’agent.
Vous pouvez désactiver cette option en modifiant /etc/waagent.conf. Mettez à jour Logs.Collect
vers n
.
Images cloud Ubuntu
Les images cloud Ubuntu utilisent cloud-init pour effectuer de nombreuses tâches de configuration qui seraient autrement gérées par l’agent de machine virtuelle Linux Azure. Les différences suivantes s’appliquent :
Sur les images cloud Ubuntu qui utilisent cloud-init pour exécuter les tâches d’approvisionnement, la valeur par défaut de
Provisioning.Enabled
estn
.Les paramètres de configuration suivants n’ont aucun effet sur les images cloud Ubuntu utilisant Cloud-init pour gérer le disque de ressources et l’espace d’échange :
ResourceDisk.Format
ResourceDisk.Filesystem
ResourceDisk.MountPoint
ResourceDisk.EnableSwap
ResourceDisk.SwapSizeMB
Pour configurer le point de montage du disque de ressources et l’espace d’échange sur les images cloud Ubuntu durant le provisionnement, consultez les ressources suivantes :