Vue d’ensemble de l’agent de machine virtuelle Linux Azure

Attention

Cet article fait référence à CentOS, une distribution Linux proche de l’état EOL (End Of Life). Faites le point sur votre utilisation afin de vous organiser en conséquence. Pour plus d’informations, consultez Aide sur la fin de vie de CentOS.

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 +
CentOS 7.x+, 8.x+ 7.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 18.04+, 20.04+, 22.04+ 20.04+, 22.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 valeur y 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 valeur y 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.

  • deprovision+user : effectue toutes les opérations de la commande deprovision 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 : MD5
  • 2a : Blowfish
  • 5 : SHA-256
  • 6 : 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 est n.

  • 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 :