Azure Linux-VM-Agent – Übersicht

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS End-of-Life-Leitfaden.

Der Microsoft Azure Linux-VM-Agent (waagent) verwaltet die Bereitstellung von Linux und FreeBSD sowie die VM-Interaktion mit dem Azure Fabric-Controller. Zusätzlich zu den Bereitstellungsfunktionen des Linux-Agents bietet Azure die Möglichkeit zur Verwendung von cloud-init für einige Linux-Betriebssysteme.

Der Linux-Agent stellt die folgenden Funktionen für Linux- und FreeBSD-basierte Azure Virtual Machines-Bereitstellungen zur Verfügung. Weitere Informationen finden Sie in der Infodatei des Azure Linux-VM-Agents auf GitHub.

Imagebereitstellung

  • Erstellt ein Benutzerkonto.
  • Konfiguriert SSH-Authentifizierungstypen.
  • Stellt öffentliche SSH-Schlüssel und -Schlüsselpaare bereit.
  • Legt den Hostnamen fest
  • Veröffentlicht den Hostnamen beim Plattform-DNS
  • Meldet den SSH-Hostschlüssel-Fingerabdruck an die Plattform
  • Verwaltet den Ressourcendatenträger
  • Formatiert und stellt den Ressourcendatenträger bereit
  • Konfiguriert den Auslagerungsbereich

Netzwerk

  • Verwaltet von Routen zur Verbesserung der Kompatibilität mit Plattform-DHCP-Servern
  • Stellt die Stabilität des Netzwerkschnittstellennamens sicher

Kernel

  • Konfiguriert einen virtuellen NUMA (für Kernel 2.6.37 deaktiviert.
  • Verbraucht Hyper-V-Entropie für /dev/random.
  • Konfiguriert SCSI-Timeouts für das Stammgerät, das remote sein kann.

Diagnose

  • Stellt Konsolenumleitung an den seriellen Port bereit.

Bereitstellungen von System Center Virtual Machine Manager

  • Erkennt und startet (Bootstrapping) den Virtual Machine Manager-Agent für Linux bei Ausführung in einer Umgebung mit System Center Virtual Machine Manager 2012 R2.

VM-Erweiterung

  • Fügt von Microsoft und Partnern erstellte Komponenten in Linux-VMs ein, um die Automatisierung der Software und Konfiguration zu ermöglichen

Sie finden eine Referenzimplementierung der VM-Erweiterung auf GitHub.

Kommunikation

Der Informationsfluss von der Plattform zum Agent erfolgt über zwei Kanäle:

  • Über eine beim Start angeschlossene DVD für VM-Bereitstellungen. Diese DVD enthält eine OVF-kompatible (Open Virtualization Format) Konfigurationsdatei mit allen Bereitstellungsinformationen mit Ausnahme der SSH-Schlüsselpaare.
  • Über einen TCP-Endpunkt, der eine REST-API verfügbar macht, um die Bereitstellungs- und Topologiekonfiguration abzurufen.

Anforderungen

Tests haben bestätigt, dass die folgenden Systeme mit dem Azure Linux-VM-Agent funktionieren.

Hinweis

Diese Liste kann von den unterstützten Linux-Distributionen in Azure abweichen.

Distribution x64 ARM64
Alma Linux 9.x und höher 9.x und höher
CentOS 7.x+, 8.x+ 7.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Nicht unterstützt
Oracle Linux 6.4+, 7.x+, 8.x+ Nicht unterstützt
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+ 8.6+, 9.0+
Rocky Linux 9.x und höher 9.x und höher
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Wichtig

RHEL/Oracle Linux 6.10 ist die einzige RHEL/OL 6-Version mit erweiterter Lebenszyklusunterstützung, die verfügbar ist. Die erweiterte Wartung endet am 30. Juni 2024.

Andere unterstützte Systeme:

  • Der Agent funktioniert auf mehr Systemen als den in der Dokumentation aufgeführten. Wir testen oder bieten jedoch keine Unterstützung für Distributionen, die nicht in der Liste der unterstützten Systeme enthalten sind. Insbesondere FreeBSD wird nicht unterstützt. Der Kunde kann FreeBSD 8 ausprobieren, und wenn Probleme auftreten, kann er ein Problem in unserem GitHub-Repository öffnen, und wir können möglicherweise helfen.

Damit der Linux-Agent richtig funktioniert, benötigt er die folgenden Systempakete:

  • Python 2.6+
  • OpenSSL 1.0+
  • OpenSSH 5.3+
  • Hilfsprogramme für das Dateisystem: sfdisk, fdisk, mkfs, parted
  • Kennworttools: chpasswd, sudo
  • Textverarbeitungstools: sed, grep
  • Netzwerktools: ip-route
  • Kernel-Unterstützung für die Einbindung von UDF-Dateisystemen

Stellen Sie sicher, dass Ihre VM Zugriff auf die IP-Adresse 168.63.129.16 besitzt. Unter Was ist die IP-Adresse 168.63.129.16? finden Sie weitere Informationen.

Installation

Um den Azure Linux VM Agent zu installieren und zu aktualisieren, können Sie ein RPM- oder DEB-Paket aus dem Paket-Repository Ihrer Distribution verwenden. Das Azure Linux-VM-Agent-Paket wird von allen unterstützten Distributionsanbietern in ihre jeweiligen Images und Repositorys integriert. Einige Linux-Distributionen deaktivieren möglicherweise die Funktion Azure Linux VM Agent Auto Update und einige der Repositories enthalten möglicherweise auch ältere Versionen, die Probleme mit modernen Erweiterungen haben können. Wir empfehlen daher, die neueste stabile Version zu installieren. Um sicherzustellen, dass der Azure Linux VM Agent ordnungsgemäß aktualisiert wird, empfehlen wir, die Option AutoUpdate.Enabled=Y in der Datei /etc/waagent.conf zu haben oder sie einfach auszukommentieren. AutoUpdate.Enabled=N ermöglicht keine ordnungsgemäße Aktualisierung des Azure Linux VM Agent.

Erweiterte Installationsoptionen wie die Installation von der Quelle oder an benutzerdefinierten Speicherorten oder Präfixen finden Sie unter Microsoft Azure Linux-VM-Agent. Abgesehen von diesen Szenarien wird ein Upgrade oder eine Neuinstallation des Azure Linux VM Agent aus dem Quellcode weder unterstützt noch empfohlen.

Befehlszeilenoptionen

Flags

  • verbose: Erhöht die Ausführlichkeit des angegebenen Befehls.
  • force: Überspringt die interaktive Bestätigung für einige Befehle.

Befehle

  • help: Listet die unterstützten Befehle und Flags auf.

  • deprovision: Versucht, das System zu bereinigen und für eine erneute Bereitstellung vorzubereiten. Der Vorgang löscht Folgendes:

    • Alle SSH-Hostschlüssel, sofern Provisioning.RegenerateSshHostKeyPair in der Konfigurationsdatei den Wert y aufweist.
    • Nameserver-Konfiguration in /etc/resolv.conf.
    • Das root-Kennwort aus /etc/shadow, sofern Provisioning.DeleteRootPassword in der Konfigurationsdatei auf y festgelegt ist.
    • Zwischengespeicherte DHCP-Clientleases.

    Der Client setzt den Hostnamen auf localhost.localdomain zurück.

    Warnung

    Die Aufhebung der Bereitstellung garantiert nicht, dass alle vertraulichen Informationen aus dem Image gelöscht werden und das Image für eine weitere Verteilung geeignet ist.

  • deprovision+user: Führt alle für deprovision aufgeführten Aktionen aus und löscht darüber hinaus das zuletzt bereitgestellte Benutzerkonto (aus /var/lib/waagent abgerufen) sowie die zugehörigen Daten. Verwenden Sie diesen Parameter, wenn Sie die Bereitstellung eines Images aufheben, das zuvor in Azure bereitgestellt wurde, damit es erfasst und wiederverwendet werden kann.

  • version: Zeigt die Version von waagent an.

  • serialconsole: Konfiguriert GRUB so, dass ttyS0 (der erste serielle Port) als Startkonsole markiert wird. Durch diese Option wird sichergestellt, dass Kernelstartprotokolle an den seriellen Port gesendet und für das Debuggen verfügbar gemacht werden.

  • daemon: Führt waagent als Daemon aus, um die Interaktion mit der Plattform zu verwalten. Dieses Argument wird für waagent im init-Skript (Initialisierungsskript) von waagent angegeben.

  • start: Führt waagent als Hintergrundprozess aus.

Konfiguration

Die Konfigurationsdatei /etc/waagent.conf steuert die Aktionen von waagent. Hier sehen Sie ein Beispiel für eine Konfigurationsdatei:

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

Konfigurationsoptionen haben drei Typen: Boolean, String oder Integer. Sie können die Boolean-Konfigurationsoptionen als y oder n angeben. Für einige Konfigurationseinträge des Typs „Zeichenfolge“ (string) kann das spezielle Schlüsselwort None verwendet werden.

Provisioning.Enabled

Type: Boolean
Default: y

Mit dieser Option kann der Benutzer die Bereitstellungsfunktion im Agenten aktivieren oder deaktivieren. Gültige Werte sind y und n. Bei deaktivierter Bereitstellung werden die SSH-Host- und -Benutzerschlüssel im Image beibehalten, und die Konfiguration in der Azure-Bereitstellungs-API wird ignoriert.

Hinweis

Der Parameter Provisioning.Enabled ist für Ubuntu-Cloudimages, die „cloud-init“ für die Bereitstellung verwenden, standardmäßig auf n festgelegt.

Provisioning.DeleteRootPassword

Type: Boolean
Default: n

Wenn der Wert y lautet, löscht der Agent das root-Kennwort in der Datei /etc/shadow während des Bereitstellungsprozesses.

Provisioning.RegenerateSshHostKeyPair

Type: Boolean
Default: y

Wenn der Wert y lautet, löscht der Agent während des Bereitstellungsprozesses alle SSH-Hostschlüsselpaare aus /etc/ssh/, einschließlich ECDSA, DSA und RSA. Der Agent generiert ein einzelnes neues Schlüsselpaar.

Konfigurieren Sie den Verschlüsselungstyp für das neue Schlüsselpaar mithilfe des Eintrags Provisioning.SshHostKeyPairType. Einige Distributionen erstellen SSH-Schlüsselpaare für alle fehlenden Verschlüsselungstypen neu, wenn der SSH-Daemon neu gestartet wird (z. B. nach einem Systemneustart).

Provisioning.SshHostKeyPairType

Type: String
Default: rsa

Sie können diese Option auf einen Verschlüsselungsalgorithmustyp festlegen, der vom SSH-Daemon auf der VM unterstützt wird. Die typischerweise unterstützten Werte sind rsa, dsa und ecdsa. Die Datei putty.exe unter Windows unterstützt ecdsa nicht. Wenn Sie beabsichtigen, mithilfe von putty.exe unter Windows eine Verbindung mit einer Linux-Bereitstellung herzustellen, verwenden Sie rsa oder dsa.

Provisioning.MonitorHostName

Type: Boolean
Default: y

Wenn der Wert y lautet, überwacht waagent die Linux-VM auf eine Änderung des Hostnamens, wie vom hostname-Befehl zurückgegeben. Waagent aktualisiert dann automatisch die Netzwerkkonfiguration im Image, um die Änderung widerzuspiegeln. Um die Namensänderung an die DNS-Server zu pushen, wird die Netzwerkfunktion auf der VM neu gestartet. Durch diesen Neustart wird die Internetverbindung kurz unterbrochen.

Provisioning.DecodeCustomData

Type: Boolean
Default: n

Wenn der Wert y lautet, decodiert waagent CustomData aus Base64.

Provisioning.ExecuteCustomData

Type: Boolean
Default: n

Wenn der Wert y lautet, führt waagent CustomData nach der Bereitstellung aus.

Provisioning.AllowResetSysUser

Type: Boolean
Default: n

Mit dieser Option kann das Kennwort für den Systembenutzer zurückgesetzt werden. Standardmäßig ist es deaktiviert.

Provisioning.PasswordCryptId

Type: String
Default: 6

Diese Option gibt den Algorithmus an, den crypt verwendet, wenn ein Kennworthash generiert wird. Gültige Werte sind:

  • 1: MD5
  • 2a: Blowfish
  • 5: SHA-256
  • 6: SHA-512

Provisioning.PasswordCryptSaltLength

Type: String
Default: 10

Diese Option gibt die Länge des zufälligen Saltwerts an, der beim Generieren eines Kennworthashs verwendet wird.

ResourceDisk.Format

Type: Boolean
Default: y

Wenn der Wert y ist, formatiert waagent den von der Plattform bereitgestellten Ressourcendatenträger und bindet ihn ein, es sei denn, der vom Benutzer in ResourceDisk.Filesystem angeforderte Dateisystemtyp ist ntfs. Der Agent stellt eine einzelne Linux-Partition (ID 83) auf dem Datenträger zur Verfügung. Diese Partition wird nicht formatiert, falls sie erfolgreich eingebunden werden kann.

ResourceDisk.Filesystem

Type: String
Default: ext4

Diese Option gibt den Dateisystemtyp für den Ressourcendatenträger an. Die unterstützten Werte sind je nach Linux-Distribution verschieden. Wenn die Zeichenfolge X ist, sollte mkfs.X im Linux-Image vorhanden sein.

ResourceDisk.MountPoint

Type: String
Default: /mnt/resource

Diese Option gibt den Pfad an, in dem der Ressourcendatenträger eingebunden wird. Der Ressourcendatenträger ist ein temporärer Datenträger und kann geleert werden, wenn die Bereitstellung der VM aufgehoben wird.

ResourceDisk.MountOptions

Type: String
Default: None

Diese Option gibt die Optionen zum Einbinden des Datenträgers an, die an den Befehl mount -o übergeben werden sollen. Der Wert ist eine durch Trennzeichen getrennte Liste von Werten, z. B nodev,nosuid. Weitere Informationen finden Sie auf der Manpage mount(8).

ResourceDisk.EnableSwap

Type: Boolean
Default: n

Wenn Sie diese Option festlegen, erstellt der Agent auf dem Ressourcendatenträger eine Auslagerungsdatei (/swapfile) und fügt sie dem Auslagerungsspeicher des Systems hinzu.

ResourceDisk.SwapSizeMB

Type: Integer
Default: 0

Diese Option gibt die Größe der Auslagerungsdatei in MB an.

Logs.Verbose

Type: Boolean
Default: n

Wenn Sie diese Option festlegen, wird die Ausführlichkeit von Protokollen erhöht. Waagent protokolliert in /var/log/waagent.log und nutzt die logrotate-Funktion des Systems zum Rotieren von Protokollen.

OS.EnableRDMA

Type: Boolean
Default: n

Wenn Sie diese Option festlegen, versucht der Agent, einen passenden RDMA-Kerneltreiber für die Firmwareversion der zugrunde liegenden Hardware zu installieren und anschließend zu laden.

OS.RootDeviceScsiTimeout

Type: Integer
Default: 300

Mit dieser Option wird das SCSI-Timeout in Sekunden auf dem Betriebssystemdatenträger und Datenlaufwerken konfiguriert. Wird kein Wert festgelegt, gelten die Standardwerte des Systems.

OS.OpensslPath

Type: String
Default: None

Mit dieser Option können Sie einen alternativen Pfad für die openssl-Binärdatei zur Verwendung für kryptografische Vorgänge angeben.

HttpProxy.Host, HttpProxy.Port

Type: String
Default: None

Wenn Sie diese Option festlegen, greift der Agent über den angegebenen Proxyserver auf das Internet zu.

AutoUpdate.Enabled

Type: Boolean
Default: y

Aktiviert oder deaktiviert die automatische Aktualisierung für die Verarbeitung des Zielzustands. Standardwert: y.

Automatische Protokollsammlung im Azure Linux-Gast-Agent

Ab Version 2.7 verfügt der Azure Linux-Gast-Agent über eine Funktion zum automatischen Erfassen und Hochladen einiger Protokolle. Für dieses Feature ist derzeit systemd erforderlich. Es verwendet ein neues systemd-Slice namens azure-walinuxagent-logcollector.slice, um die Ressourcen zu verwalten, während die Sammlung ausgeführt wird.

Der Zweck besteht darin, die Offlineanalyse zu erleichtern. Der Agent erzeugt eine ZIP-Datei mit einigen Diagnoseprotokollen, bevor er sie auf den Host der VM hochlädt. Entwicklungsteams und Supportexperten können die Datei abrufen, um Probleme für den VM-Besitzer zu untersuchen. Technische Informationen zu den vom Gast-Agent gesammelten Dateien finden Sie in der Datei azurelinuxagent/common/logcollector_manifests.py im GitHub-Repository des Agents.

Sie können diese Option deaktivieren, indem Sie /etc/waagent.conf bearbeiten. Aktualisieren Sie Logs.Collect auf n.

Ubuntu-Cloud-Images

Ubuntu-Cloudimages verwenden cloud-init, um viele Konfigurationsaufgaben auszuführen, die andernfalls der Azure Linux-VM-Agent verwalten würde. Es liegen folgende Unterschiede vor:

  • Provisioning.Enabled ist für Ubuntu-Cloudimages, die für Bereitstellungsaufgaben „cloud-init“ verwenden, standardmäßig auf n festgelegt.

  • Die folgenden Konfigurationsparameter wirken sich nicht auf Ubuntu-Cloud-Images aus, die Ressourcendatenträger und Auslagerungsbereiche mit Cloud-Init verwalten:

    • ResourceDisk.Format
    • ResourceDisk.Filesystem
    • ResourceDisk.MountPoint
    • ResourceDisk.EnableSwap
    • ResourceDisk.SwapSizeMB

Berücksichtigen Sie zum Konfigurieren des Bereitstellungspunkts und des Auslagerungsbereichs für den Ressourcendatenträger von Ubuntu-Cloudimages die folgenden Ressourcen: