Agent Linux Microsoft Azure
L'éditeur de Downcodes vous présentera Microsoft Azure Linux Agent (waagent), qui est un outil qui gère le provisionnement Linux et l'interaction des machines virtuelles avec Azure Fabric Controller. Il offre les fonctionnalités suivantes pour les déploiements Linux IaaS :
1. Approvisionnement d'image : waagent est responsable de la gestion du processus d'approvisionnement initial des machines virtuelles Linux, y compris la configuration du réseau, l'installation des pilotes et la configuration des comptes d'utilisateurs initiaux.
2. Gestion du réseau : le waagent se coordonne avec Azure Fabric Controller pour configurer les paramètres réseau de la machine virtuelle, tels que l'adresse IP, le masque de sous-réseau et la passerelle.
3. Gestion du noyau : waagent peut gérer les mises à jour du noyau de la machine virtuelle pour garantir qu'elle exécute toujours la version la plus récente et sécurisée du noyau.
4. Diagnostic : waagent peut collecter et signaler des informations sur l'état de la machine virtuelle pour aider à diagnostiquer les problèmes et à résoudre les pannes.
5. Déploiement SCVMM : waagent prend en charge l'intégration avec System Center Virtual Machine Manager (SCVMM) pour gérer et provisionner les machines virtuelles.
6. Extensions de machine virtuelle : waagent prend en charge l'exécution d'extensions de machine virtuelle qui offrent des fonctionnalités et une personnalisation supplémentaires, telles que l'installation de logiciels ou la surveillance de métriques.
7. Communication : waagent communique avec Azure Fabric Controller via deux canaux :
* DVD d'ajout au démarrage : pour les déploiements IaaS, un DVD d'ajout au démarrage contenant un fichier de configuration compatible OVF fournit des informations de provisionnement (en plus de la paire de clés SSH).
* API REST : un point de terminaison TCP exposant une API REST pour obtenir des configurations de déploiement et de topologie.
waagent peut utiliser un proxy HTTP via les variables d'environnement httpproxy (pour les requêtes HTTP) ou httpsproxy (pour les requêtes HTTPS). En raison des limitations de Python, waagent ne prend pas en charge les proxys HTTP nécessitant une authentification.
De même, si la variable d'environnement no_proxy est définie, waagent contournera le proxy.
Notez que la façon dont ces variables d'environnement sont définies pour le service waagent varie selon les distributions. Pour les distributions utilisant systemd, une approche courante consiste à utiliser Environment ou EnvironmentFile dans la section [Service] de la définition du service, par exemple en utilisant un remplacement ou en insérant un fichier (voir systemctl edit pour les remplacements).
Exemple
`
cat /etc/systemd/system/walinuxagent.service.d/http-proxy.conf
[Service]
Environnement="http_proxy=http://proxy.example.com:80/"
Environnement="https_proxy=http://proxy.example.com:80/"
#
`
waagent transmet son environnement aux extensions de machine virtuelle qu'il exécute, notamment httpproxy et httpsproxy, donc définir un proxy pour waagent définira également un proxy pour l'extension de machine virtuelle.
Si vous utilisez les variables de configuration HttpProxy.Host et HttpProxy.Port, elles remplacent les paramètres d'environnement. Notez que ces variables de configuration sont locales au processus waagent et ne sont pas transmises à l'extension de la machine virtuelle.
waagent nécessite certains packages système pour fonctionner correctement. Ces packages varient selon la distribution.
L'installation via le référentiel du package de distribution est la seule méthode d'installation prise en charge.
Vous pouvez installer à partir des sources pour des options plus avancées, telles que l'installation dans un emplacement personnalisé ou la création d'une image personnalisée. Cependant, l'installation à partir des sources peut remplacer les personnalisations apportées à waagent par votre distribution et est destinée uniquement aux utilisateurs avancés. Nous avons un support très limité pour cette méthode.
Pour installer à partir des sources, vous pouvez utiliser les outils de configuration :
`
sudo python setup.py install --register-service
`
Pour Python 3, utilisez :
`
sudo python3 setup.py install --register-service
`
Vous pouvez afficher plus d'options d'installation en exécutant la commande suivante :
`
sudo python setup.py install --help
`
Le fichier journal waagent est enregistré dans /var/log/waagent.log.
Enfin, vous pouvez personnaliser votre propre package RPM ou DEB à l'aide des exemples de configuration fournis dans les sections DEB et RPM ci-dessous. Cette méthode convient également aux utilisateurs avancés et nous avons une prise en charge très limitée pour cette méthode.
La mise à niveau via le référentiel du package de distribution ou l'utilisation de mises à jour automatiques sont les seules méthodes prises en charge. Vous pouvez trouver plus d'informations ici : Mise à jour de l'agent Linux.
Pour mettre à niveau waagent à partir du code source, vous pouvez utiliser setuptools. La mise à niveau à partir des sources est réservée aux utilisateurs avancés et nous avons une prise en charge très limitée pour cette méthode.
`
sudo python setup.py install --force
`
Redémarrez le service waagent :
`
redémarrage du service sudo waagent
`
Pour Ubuntu, utilisez :
`
redémarrage du service sudo walinuxagent
`
Pour CoreOS, utilisez :
`
sudo systemctl redémarrer waagent
`
-verbose : augmente la verbosité de la commande spécifiée.
-force : ignorer la confirmation interactive pour certaines commandes.
-help : répertorie les commandes et les indicateurs pris en charge.
-deprovision : tente de nettoyer le système et de le rendre apte au réapprovisionnement en supprimant les éléments suivants :
* Toutes les clés d'hôte SSH (si Provisioning.RegenerateSshHostKeyPair dans le fichier de configuration est « y »).
* Configuration du serveur de noms dans /etc/resolv.conf.
* Le mot de passe root dans /etc/shadow (si Provisioning.DeleteRootPassword dans le fichier de configuration est 'y').
* Bail du client DHCP mis en cache.
* Réinitialisez le nom d'hôte sur localhost.localdomain.
avertir! deprovision ne peut pas garantir que l'image a été nettoyée de toutes les informations sensibles et qu'elle est adaptée à la redistribution.
-deprovision+user : effectue toutes les actions sous déprovisionnement (décrites ci-dessus), et supprime le dernier compte utilisateur provisionné et ses données associées.
-version : Affiche la version du waagent.
-serialconsole : configurez GRUB pour marquer ttyS0 (le premier port série) comme console de démarrage. Cela garantira que les journaux de démarrage du noyau sont envoyés au port série et peuvent être utilisés pour le débogage.
-daemon : exécutez waagent en tant que processus démon pour gérer l'interaction avec la plateforme. Ce paramètre est spécifié à waagent dans le script d'initialisation de waagent.
-start : exécutez waagent en tant que processus en arrière-plan.
-collect-logs [-full] : exécute l'utilitaire de collecte de journaux, qui collectera les journaux liés à l'agent à des fins de débogage et les stockera dans le dossier de l'agent sur le disque. L'emplacement exact sera affiché lors de l'exécution. Utilisez l'indicateur -full pour une collecte de journaux plus complète.
Un fichier de configuration (/etc/waagent.conf) contrôle le fonctionnement de waagent. Les lignes vides et les lignes dont le premier caractère est # sont ignorées (les commentaires de fin de ligne ne sont pas pris en charge).
Un exemple de fichier de configuration est présenté ci-dessous :
`
Extensions.Enabled=y
Extensions.GoalStatePeriod=6
Provisioning.Agent=auto
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName = y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=Aucun
ResourceDisk.EnableSwap=n
ResourceDisk.EnableSwapEncryption=n
ResourceDisk.SwapSizeMB=0
Logs.Verbose=n
Logs.Collect=y
Logs.CollectPeriod=3600
OS.AllowHTTP=n
OS.RootDeviceScsiTimeout=300
OS.EnableFIPS=n
OS.OpensslPath=Aucun
OS.SshClientAliveInterval=180
OS.SshDir=/etc/ssh
HttpProxy.Host=Aucun
HttpProxy.Port=Aucun
`
Les différentes options de configuration sont décrites en détail ci-dessous. Les options de configuration sont divisées en trois types : booléen, chaîne et entier. Les options de configuration booléennes peuvent être spécifiées sous la forme « y » ou « n ». Le mot-clé spécial « Aucun » peut être utilisé avec certains éléments de configuration de chaîne, comme décrit ci-dessous.
Type : Booléen
Valeur par défaut : oui
Cette option permet à l'utilisateur d'activer ou de désactiver les capacités de traitement étendues dans l'agent. Les valeurs valides sont "y" ou "n". Si le traitement étendu est désactivé, l'état de la cible sera toujours traité et l'état de la machine virtuelle sera toujours signalé, mais seulement toutes les 5 minutes. La configuration étendue dans l'état cible sera ignorée. Notez que des fonctionnalités telles que la réinitialisation du mot de passe, les mises à jour des clés SSH et les sauvegardes reposent sur des extensions. Désactivez cette option uniquement si vous n’avez pas du tout besoin de l’extension.
Remarque : Désactiver l'extension de cette manière n'équivaut pas à ne pas utiliser du tout le proxy. Pour ce faire, l’indicateur provisionVMAgent doit être défini au moment du provisionnement via l’API utilisée. Nous fournirons plus de détails à ce sujet sur notre wiki, mais ce n'est pas encore disponible.
Type : Booléen
Valeur par défaut : n
Attendez la fin de cloud-init avant d'effectuer l'extension de la machine virtuelle (cloud-init status --wait).
cloud-init et les extensions de machine virtuelle sont deux moyens courants de personnaliser une machine virtuelle lors du déploiement initial. Par défaut, l'agent commencera à exécuter la mise à l'échelle alors que cloud-init est peut-être encore en phase de « configuration », et n'attendra pas la fin de la phase « finale ». cloud-init et les extensions peuvent effectuer des opérations qui entrent en conflit les unes avec les autres (par exemple, ils peuvent tous deux tenter d'installer un package). La définition de cette option sur « y » garantit que l’expansion de la machine virtuelle n’est effectuée qu’une fois que cloud-init a terminé toutes les étapes.
Notez que l'utilisation de cette option nécessite la création d'une image personnalisée et la définition de la valeur de cette option sur « y » pour garantir que l'opération d'attente est effectuée lors du déploiement initial de la machine virtuelle.
Type : entier
Valeur par défaut : 3600
Délai d'attente en secondes pendant lequel l'agent attend l'initialisation du cloud. Si le délai expire, l'agent continue d'effectuer l'extension de la machine virtuelle. Voir Extensions.WaitForCloudInit pour plus de détails.
Type : entier
Valeur par défaut : 6
À quelle fréquence (en secondes) interroger le nouvel état de la cible et signaler l'état des machines virtuelles et des extensions. L'état cible décrit l'état souhaité de l'extension sur la machine virtuelle.
Remarque : La définition de ce paramètre pendant plus de quelques minutes peut entraîner le signalement de l'état de la machine virtuelle comme Ne répondant pas/Indisponible sur le portail Azure. De plus, ce paramètre affecte la rapidité avec laquelle l'agent commence à effectuer la mise à l'échelle.
Type : Booléen
Valeur par défaut : oui
Permet la mise à jour automatique des gestionnaires d'extensions. Les gestionnaires d'extensions sont chargés de gérer les extensions et de signaler l'état de la machine virtuelle. La fonctionnalité principale de l'agent est contenue dans le gestionnaire d'extension et les utilisateurs sont encouragés à activer cette option pour conserver la dernière version.
Lorsque cette option est activée, l'agent installera les nouvelles versions dès qu'elles seront disponibles. Lorsqu'il est désactivé, l'agent n'installera aucune nouvelle version, mais il utilisera la dernière version déjà installée sur la machine virtuelle.
illustrer:
Pour plus d'informations sur les versions d'agent, consultez notre FAQ.
Pour plus d’informations sur les mises à jour des agents, consultez notre FAQ.
Pour plus d'informations sur AutoUpdate.UpdateToLatestVersion et AutoUpdate.Enabled, consultez notre FAQ.
Type : Booléen
Valeur par défaut : oui
Permet la mise à jour automatique des gestionnaires d'extensions. Cet indicateur est pris en charge pour des raisons héritées et nous vous recommandons fortement d'utiliser AutoUpdate.UpdateToLatestVersion au lieu de cet indicateur.
La différence entre ces deux indicateurs est que lorsqu'il est défini sur 'n', AutoUpdate.Enabled utilisera la version du gestionnaire d'extension préinstallée sur l'image, tandis qu'AutoUpdate.UpdateToLatestVersion utilisera la dernière version installée sur la machine virtuelle (via des mises à jour automatiques). .
Dans la plupart des distributions, la valeur par défaut est « y ».
Type : chaîne
Valeur par défaut : auto
Sélectionnez l'agent d'approvisionnement à utiliser (ou laissez waagent le déterminer en spécifiant "auto"). Les options possibles sont "auto" (par défaut), "waagent", "cloud-init" ou "disabled".
Type : Booléen
Valeur par défaut : oui
Cette option permet à l'utilisateur d'activer ou de désactiver la fonctionnalité de provisionnement dans l'agent. Les valeurs valides sont "y" ou "n". Si le provisionnement est désactivé, les clés d’hôte et d’utilisateur SSH dans l’image seront conservées et toute configuration spécifiée dans l’API Azure Provisioning sera ignorée.
REMARQUE : Cette option de configuration a été supprimée et n'a plus aucun effet. waagent détecte désormais automatiquement cloud-init en tant qu'agent de provisioning (éventuellement remplacé à l'aide de Provisioning.Agent).
Type : Booléen
Valeur par défaut : n
Surveillez les modifications du nom d'hôte et publiez les modifications via des requêtes DHCP.
Type : entier
Valeur par défaut : 30
À quelle fréquence (en secondes) surveiller les changements de nom d’hôte. Si MonitorHostName n’est pas défini, ce paramètre est ignoré.
Type : Booléen
Valeur par défaut : n
Cette option active/désactive la prise en charge du provisionnement via cloud-init.
Si vrai (« y »), l'agent attendra la fin de cloud-init avant d'installer les extensions et de traiter le dernier état cible. Provisioning.Enabled Doit être désactivé (« n ») pour que cette option prenne effet. La définition de Provisioning.Enabled sur true (« y ») remplace cette option et exécute le code de provisionnement de l’agent intégré.
REMARQUE : Cette option de configuration a été supprimée et n'a plus aucun effet. waagent détecte désormais automatiquement cloud-init en tant qu'agent de provisioning (éventuellement remplacé à l'aide de Provisioning.Agent).
Type : Booléen
Valeur par défaut : n
Si cette option est définie, le mot de passe root dans le fichier /etc/shadow est supprimé lors du provisionnement.
Type : Booléen
Valeur par défaut : oui
Si cette option est définie, toutes les paires de clés d'hôte SSH (ecdsa, dsa et rsa) dans /etc/ssh/ seront supprimées lors du provisionnement. et générer une nouvelle paire de clés.
Le type de chiffrement de la nouvelle paire de clés peut être configuré via l'entrée Provisioning.SshHostKeyPairType. Notez que certaines distributions recréeront les paires de clés SSH pour tout type de chiffrement manquant lorsque le démon SSH sera redémarré (par exemple, après un redémarrage).
Type : chaîne
Par défaut : rsa
Cela peut être défini sur le type d'algorithme de chiffrement pris en charge par le démon SSH sur la machine virtuelle. Les valeurs couramment prises en charge incluent « rsa », « dsa » et « ecdsa ».
Veuillez noter que « ecdsa » n'est pas pris en charge par « putty.exe » sous Windows. Par conséquent, si vous prévoyez d'utiliser putty.exe sous Windows pour vous connecter à un déploiement Linux, utilisez « rsa » ou « dsa ».
Type : Booléen
Valeur par défaut : oui
Si cette option est définie, waagent surveillera les machines virtuelles Linux pour détecter les changements de nom d'hôte (tels que renvoyés par la commande "hostname") et mettra automatiquement à jour la configuration réseau dans l'image pour refléter les changements. Afin de transmettre le changement de nom au serveur DNS, le réseau de la machine virtuelle sera redémarré. Cela entraînera une brève perte de connexion Internet.
Type : Booléen
Valeur par défaut : n
Si cette option est définie, waagent décodera CustomData à partir de Base64.
Type : Booléen
Valeur par défaut : n
Si cette option est définie, le waagent exécutera CustomData après le provisionnement.
Type : chaîne
Valeur par défaut : 6
L'algorithme utilisé par crypt lors de la génération de hachages de mot de passe.
Type : chaîne
Valeur par défaut : 10
La longueur du sel aléatoire utilisé lors de la génération de hachages de mot de passe.
Type : Booléen
Valeur par défaut : oui
Si cette option est définie, le disque de ressources fourni par la plateforme sera formaté et monté par waagent, à condition que le type de système de fichiers demandé par l'utilisateur dans « ResourceDisk.Filesystem » ne soit pas « ntfs ». Une seule partition de type Linux (83) sera prévue sur le disque. Notez que si cette partition peut être montée avec succès, elle ne sera pas formatée.
Type : chaîne
Par défaut : ext4
Ceci spécifie le type de système de fichiers du disque de ressources. Les valeurs prises en charge varient selon la distribution Linux. Si la chaîne est X, mkfs.X doit être présent dans l'image Linux. Les images SLES 11 doivent généralement utiliser « ext3 ». Les images BSD doivent utiliser « ufs2 » ici.
Type : chaîne
Valeur par défaut : /mnt/resource
Ceci spécifie le chemin pour monter le disque de ressources.
Type : chaîne
Valeur par défaut : Aucun
Spécifie les options de montage de disque à transmettre à la commande mount -o. Il s'agit d'une liste de valeurs séparées par des virgules, telles que « nodev, nosuid ». Voir mount(8) pour plus de détails.
Type : Booléen
Valeur par défaut : n
Si cette option est définie, un fichier d'échange (/swapfile) est créé sur le disque de ressources et ajouté à l'espace d'échange du système.
Type : Booléen
Valeur par défaut : n
Si cette option est définie, le fichier d'échange (/swapfile) sera monté en tant que système de fichiers crypté (drapeau pris en charge sur FreeBSD uniquement).
Type : entier
Valeur par défaut : 0
La taille du fichier d'échange en mégaoctets.
Type : Booléen
Valeur par défaut : n
Si cette option est définie, la verbosité du journal sera augmentée. waagent se connecte à /var/log/waagent.log et utilise la fonction logrotate du système pour faire pivoter les journaux.
Type : Booléen
Valeur par défaut : oui
Si cette option est définie, les journaux des agents seront collectés périodiquement et téléchargés vers un emplacement sécurisé pour améliorer la prise en charge.
REMARQUE : Cette fonctionnalité repose sur les capacités d'utilisation des ressources de l'agent (cgroups) ; cet indicateur ne prendra effet sur aucune distribution qui n'est pas prise en charge.
Type : entier
Valeur par défaut : 3600
Cela configure la fréquence à laquelle les journaux sont collectés et téléchargés. La valeur par défaut est horaire.
Remarque : Cela ne prend effet que lorsque l'option Logs.Collect est activée.
Type : Booléen
Valeur par défaut : n
Si la prise en charge SSL n'est pas compilée dans Python, le proxy échouera à toutes les requêtes HTTPS. Vous pouvez définir cette option sur « y » pour que le proxy revienne à HTTP au lieu d'échouer la requête.
Remarque : Autoriser HTTP peut exposer par inadvertance des données sécurisées.
Type : Booléen
Valeur par défaut : n
Si cette option est définie, l'agent tentera d'installer et de charger un pilote de noyau RDMA correspondant à la version du micrologiciel sur le matériel sous-jacent.
Type : Booléen
Valeur par défaut : n
Si cette option est définie, l'agent émettra "OPENSSL_FIPS=1" à l'environnement lors de l'exécution des commandes OpenSSL. Cela demande à OpenSSL d'utiliser toutes les bibliothèques compatibles FIPS installées.
Notez que l'agent lui-même n'a aucun code lié à FIPS. Si un certificat compatible FIPS n'est pas installé, l'activation de cette option entraîne l'échec de toutes les commandes OpenSSL.
Type : entier
Valeur par défaut : 30
L'agent surveille les redémarrages du client DHCP et restaure les règles réseau lorsqu'un redémarrage se produit. Ce paramètre détermine la fréquence, en secondes, de redémarrage de la surveillance.
Type : entier
Valeur par défaut : 300
Ceci configure le délai d'expiration SCSI en secondes sur le périphérique racine. S’il n’est pas défini, la valeur par défaut du système est utilisée.
Type : entier
Valeur par défaut : 30
À quelle fréquence (en secondes) définir le délai d'expiration SCSI sur le périphérique racine. Si RootDeviceScsiTimeout n’est pas défini, ce paramètre est ignoré.
Type : chaîne
Valeur par défaut : Aucun
Cela peut être utilisé pour spécifier un chemin alternatif vers le binaire openssl utilisé pour les opérations cryptographiques.
Type : entier
Valeur par défaut : 30
À quelle fréquence (en secondes) les règles udev (75-persistent-net-generator.rules et /etc/udev/rules.d/70-persistent-net.rules) sont supprimées pour les noms d'interface réseau persistants.
Type : entier
Par défaut : 180
Cette valeur définit le nombre de secondes que l'agent utilise pour l'option de configuration SSH ClientAliveInterval.
Type : chaîne
Par défaut : /etc/ssh
Cette option peut être utilisée pour remplacer l'emplacement par défaut du répertoire de configuration SSH.
Type : chaîne
Valeur par défaut : Aucun
Si cette option est définie, l'agent utilisera ce serveur proxy pour les requêtes HTTP/HTTPS. Ces valeurs remplacent les variables d'environnement httpproxy ou httpsproxy. Enfin, HttpProxy.Host est requis s’il est utilisé et HttpProxy.Port est facultatif.
Type : booléen
Valeur par défaut : oui
Si cette option est définie, l'agent tentera de définir des limites de groupes de contrôle pour le processeur et la mémoire pour le processus agent lui-même ainsi que pour les processus étendus. Voir le wiki pour plus de détails à ce sujet.
Type : chaîne
Valeur par défaut : script personnalisé, runcommand
Liste des extensions à exclure des restrictions des groupes de contrôle. Cela devrait être séparé par des virgules.
WALinuxAgent collecte et envoie des données d'utilisation à Microsoft pour nous aider à améliorer nos produits et services. Les données collectées sont utilisées pour suivre l’état du service et répondre aux demandes de support Azure. Les données collectées ne contiennent aucune information personnelle identifiable. Lisez notre déclaration de confidentialité pour en savoir plus.
WALinuxAgent ne prend actuellement pas en charge la désactivation de la télémétrie. Pour désactiver la collecte de télémétrie, WALinuxAgent doit être supprimé. Si vous avez besoin de cette fonctionnalité, veuillez ouvrir un ticket sur GitHub et décrire vos besoins.
Nous ne conservons pas d'informations sur les emballages dans ce référentiel, mais quelques exemples sont présentés ci-dessous à titre de référence. Pour les emballages officiellement maintenus, consultez le référentiel de versions en aval.
Le package officiel Ubuntu WALinuxAgent peut être trouvé ici.
Exécuter une fois :
Installer les packages requis
`
sudo apt-get -y install ubuntu-dev-tools pbuilder python-all debhelper
`
Créer un environnement pbuilder
`
sudo pbuilder create --debootstrapopts --variant=buildd
`
Récupérez waagent.dsc à partir du référentiel de packages en aval
Pour compiler un package, procédez comme suit à partir du répertoire le plus haut :
Construire le package de code source
`
dpkg-buildpackage -S
`
Construire le package
`
sudo pbuilder build waagent.dsc
`
Récupérez le package construit, généralement situé dans /var/cache/pbuilder/result
Les instructions suivantes décrivent comment créer des packages RPM.
Installer les outils de configuration
`
curl https://bootstrap.pypa.io/ez_setup.py -o - |
`
Les commandes suivantes construiront les RPM binaires et sources :
`
python setup.py bdist_rpm
`
Ce projet a adopté le Code de conduite Microsoft pour le code Open Source. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.
Exemple:
Licence Apache-2.0