Omówienie agenta maszyny wirtualnej z systemem Linux platformy Azure

Uwaga

W tym artykule odwołuje się do systemu CentOS — dystrybucji systemu Linux, która zbliża się do stanu zakończenia życia (EOL). Rozważ odpowiednie użycie i zaplanuj. Aby uzyskać więcej informacji, zobacz wskazówki dotyczące zakończenia życia systemu CentOS.

Agent maszyny wirtualnej platformy Microsoft Azure z systemem Linux (waagent) zarządza aprowizowaniem systemów Linux i FreeBSD wraz z interakcją maszyny wirtualnej z kontrolerem sieci szkieletowej platformy Azure. Oprócz agenta systemu Linux zapewniającego funkcje aprowizacji platforma Azure oferuje możliwość korzystania z pakietu cloud-init dla niektórych systemów operacyjnych Linux.

Agent systemu Linux udostępnia następujące funkcje wdrożeń maszyn wirtualnych platformy Azure dla systemów Linux i FreeBSD. Aby uzyskać więcej informacji, zobacz plik readme agenta maszyny wirtualnej z systemem Linux platformy Azure w witrynie GitHub.

Aprowizowanie obrazów

  • Tworzy konto użytkownika
  • Konfiguruje typy uwierzytelniania SSH
  • Wdraża klucze publiczne i pary kluczy SSH
  • Ustawia nazwę hosta
  • Publikuje nazwę hosta w systemie DNS platformy
  • Raportuje odcisk palca klucza hosta SSH do platformy
  • Zarządza dyskiem zasobów
  • Formatuje i instaluje dysk zasobu
  • Konfiguruje miejsce wymiany

Sieć

  • Zarządza trasami w celu poprawy zgodności z serwerami DHCP platformy
  • Zapewnia stabilność nazwy interfejsu sieciowego

Jądro

  • Konfiguruje wirtualną architekturę NUMA (wyłączoną dla jądra 2.6.37)
  • Używa entropii funkcji Hyper-V dla /dev/random
  • Konfiguruje limity czasu SCSI dla urządzenia głównego, które może być zdalne

Diagnostyka

  • Zapewnia przekierowanie konsoli do portu szeregowego

Wdrożenia programu System Center Virtual Machine Manager

  • Wykrywa i uruchamia agenta programu Virtual Machine Manager dla systemu Linux, gdy jest uruchomiony w środowisku programu System Center Virtual Machine Manager 2012 R2

Rozszerzenie maszyny wirtualnej

  • Wprowadza składniki utworzone przez firmę Microsoft i partnerów na maszynach wirtualnych z systemem Linux w celu umożliwienia automatyzacji oprogramowania i konfiguracji

Implementację referencyjną rozszerzenia maszyny wirtualnej można znaleźć w witrynie GitHub.

Komunikacja

Przepływ informacji z platformy do agenta odbywa się za pośrednictwem dwóch kanałów:

  • Dołączony do rozruchu dysk DVD dla wdrożeń maszyn wirtualnych. Ten dysk DVD zawiera plik konfiguracji zgodny ze standardem Open Virtualization Format (OVF), który zawiera wszystkie informacje o aprowizacji inne niż pary kluczy SSH.
  • Punkt końcowy TCP, który uwidacznia interfejs API REST używany do uzyskiwania konfiguracji wdrożenia i topologii.

Wymagania

Testowanie potwierdziło, że następujące systemy współpracują z agentem maszyny wirtualnej z systemem Linux platformy Azure.

Uwaga

Ta lista może się różnić od zatwierdzonych dystrybucji systemu Linux na platformie Azure.

Dystrybucja x64 ARM64
Alma Linux 9.x+ 9.x+
CentOS 7.x+, 8.x+ 7.x+
Debian Ponad 10 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Nieobsługiwane
Oracle Linux 6.4+, 7.x+, 8.x+ Nieobsługiwane
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+

Ważne

RHEL/Oracle Linux 6.10 jest jedyną wersją RHEL/OL 6 z dostępną rozszerzoną obsługą cyklu życia. Przedłużona konserwacja kończy się 30 czerwca 2024 r.

Inne obsługiwane systemy:

  • Agent działa na więcej systemów niż wymienione w dokumentacji. Nie testujemy ani nie zapewniamy obsługi dystrybucji, które nie znajdują się na liście zatwierdzonych. W szczególności FreeBSD nie jest zatwierdzony. Klient może wypróbować freeBSD 8 i jeśli napotka problemy, może otworzyć problem w naszym repozytorium GitHub i możemy pomóc.

Agent systemu Linux zależy od tych pakietów systemowych do prawidłowego działania:

  • Python 2.6 lub nowsza wersja
  • OpenSSL 1.0 lub nowsza wersja
  • OpenSSH 5.3 lub nowsza wersja
  • Narzędzia systemu plików: sfdisk, fdisk, mkfs, parted
  • Narzędzia haseł: chpasswd, sudo
  • Narzędzia do przetwarzania tekstu: sed, grep
  • Narzędzia sieciowe: ip-route
  • Obsługa jądra na potrzeby instalowania systemów plików UDF

Upewnij się, że maszyna wirtualna ma dostęp do adresu IP 168.63.129.16. Aby uzyskać więcej informacji, zobacz Co to jest adres IP 168.63.129.16?.

Instalacja

Obsługiwana metoda instalowania i uaktualniania agenta maszyny wirtualnej z systemem Linux platformy Azure używa pakietu RPM lub DEB z repozytorium pakietów dystrybucji. Wszyscy zatwierdzoni dostawcy dystrybucji integrują pakiet agenta maszyny wirtualnej z systemem Linux platformy Azure ze swoimi obrazami i repozytoriami. Niektóre dystrybucje systemu Linux mogą wyłączyć funkcję automatycznej aktualizacji agenta maszyny wirtualnej z systemem Linux platformy Azure, a niektóre repozytoria mogą również zawierać starsze wersje. Mogą to mieć problemy z nowoczesnymi rozszerzeniami, dlatego zalecamy zainstalowanie najnowszej stabilnej wersji. Aby upewnić się, że agent maszyny wirtualnej z systemem Linux platformy Azure jest poprawnie aktualizowany, zalecamy użycie opcji AutoUpdate.Enabled=Y w /etc/waagent.conf pliku lub po prostu dodanie komentarza do tej opcji spowoduje również wyświetlenie domyślnych wartości domyślnych. Nie AutoUpdate.Enabled=N zezwoli agentowi maszyny wirtualnej platformy Azure z systemem Linux na prawidłowe aktualizowanie.

Aby uzyskać zaawansowane opcje instalacji, takie jak instalowanie ze źródła lub lokalizacji niestandardowych lub prefiksów, zobacz Agent maszyny wirtualnej z systemem Linux platformy Microsoft Azure. Poza tymi scenariuszami nie obsługujemy ani nie zalecamy uaktualniania lub ponownego instalowania agenta maszyny wirtualnej platformy Azure z systemem Linux ze źródła.

Opcje wiersza polecenia

Flagi

  • verbose: zwiększa szczegółowość określonego polecenia.
  • force: Pomija interakcyjne potwierdzenie dla niektórych poleceń.

Polecenia

  • help: wyświetla listę obsługiwanych poleceń i flag.

  • deprovision: Próbuje oczyścić system i przygotować go do ponownej aprowizacji. Operacja usuwa:

    • Wszystkie klucze hosta SSH, jeśli Provisioning.RegenerateSshHostKeyPair znajduje się y w pliku konfiguracji.
    • Nameserver konfiguracja w pliku /etc/resolv.conf.
    • Hasło główne z /etc/shadow, jeśli Provisioning.DeleteRootPassword znajduje się y w pliku konfiguracji.
    • Buforowane dzierżawy klienta DHCP.

    Klient resetuje nazwę hosta na localhost.localdomain.

    Ostrzeżenie

    Anulowanie aprowizacji nie gwarantuje, że obraz jest czyszczone ze wszystkich poufnych informacji i nadaje się do redystrybucji.

  • deprovision+user: Wykonuje wszystkie elementy i deprovision usuwa ostatnie aprowizowane konto użytkownika (uzyskane z /var/lib/waagent) i skojarzonych danych. Użyj tego parametru podczas anulowania aprowizacji obrazu, który został wcześniej aprowizacji na platformie Azure, aby można go było przechwycić i ponownie użyć.

  • version: wyświetla wersję programu waagent.

  • serialconsole: konfiguruje program GRUB do oznaczania ttyS0 jako konsoli rozruchowej pierwszego portu szeregowego. Ta opcja zapewnia, że dzienniki rozruchu jądra są wysyłane do portu szeregowego i udostępniane do debugowania.

  • daemon: uruchamia narzędzie waagent jako demon, aby zarządzać interakcją z platformą. Ten argument jest określony do waagent w skry skryptu init waagent.

  • start: uruchamia narzędzie waagent jako proces w tle.

Konfigurowanie

Plik konfiguracji /etc/waagent.conf steruje akcjami waagent. Oto przykład pliku konfiguracji:

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

Opcje konfiguracji to trzy typy: Boolean, Stringlub Integer. Możesz określić Boolean opcje konfiguracji jako y lub n. Specjalne słowo kluczowe None może być używane dla niektórych wpisów konfiguracji typu ciągu.

Provisioning.Enabled

Type: Boolean
Default: y

Ta opcja umożliwia użytkownikowi włączanie lub wyłączanie funkcji aprowizacji w agencie. Prawidłowe wartości to y i n. Jeśli aprowizacja jest wyłączona, klucze hosta I użytkownika SSH na obrazie są zachowywane, a konfiguracja w interfejsie API aprowizacji platformy Azure jest ignorowana.

Uwaga

Parametr Provisioning.Enabled jest domyślnie używany n na obrazach w chmurze systemu Ubuntu, które używają pakietu cloud-init do aprowizacji.

Provisioning.DeleteRootPassword

Type: Boolean
Default: n

Jeśli wartość to y, agent wymazuje hasło główne w pliku /etc/shadow podczas procesu aprowizacji.

Provisioning.RegenerateSshHostKeyPair

Type: Boolean
Default: y

Jeśli wartość to y, agent usuwa wszystkie pary kluczy hosta SSH z /etc/ssh/ podczas procesu aprowizacji, w tym ECDSA, DSA i RSA. Agent generuje jedną nową parę kluczy.

Skonfiguruj typ szyfrowania dla nowej pary kluczy przy użyciu Provisioning.SshHostKeyPairType wpisu . Niektóre dystrybucje ponownie tworzą pary kluczy SSH dla wszystkich brakujących typów szyfrowania, gdy demon SSH zostanie ponownie uruchomiony — na przykład po ponownym uruchomieniu.

Provisioning.SshHostKeyPairType

Type: String
Default: rsa

Tę opcję można ustawić na typ algorytmu szyfrowania, który demon SSH obsługuje na maszynie wirtualnej. Zazwyczaj obsługiwane wartości to rsa, dsai ecdsa. Plik putty.exe w systemie Windows nie obsługuje ecdsapliku . Jeśli zamierzasz używać putty.exe w systemie Windows do nawiązywania połączenia z wdrożeniem systemu Linux, użyj polecenia rsa lub dsa.

Provisioning.MonitorHostName

Type: Boolean
Default: y

Jeśli wartość to y, waagent monitoruje maszynę wirtualną z systemem Linux pod kątem hostname zmiany nazwy hosta, jak zwraca polecenie . Usługa Waagent automatycznie aktualizuje konfigurację sieci na obrazie w celu odzwierciedlenia zmiany. Aby wypchnąć zmianę nazwy na serwery DNS, sieć zostanie uruchomiona ponownie na maszynie wirtualnej. To ponowne uruchomienie powoduje krótką utratę łączności z Internetem.

Provisioning.DecodeCustomData

Type: Boolean
Default: n

Jeśli wartość to y, dekoduje CustomData waagent z base64.

Provisioning.ExecuteCustomData

Type: Boolean
Default: n

Jeśli wartość to y, program waagent jest uruchamiany CustomData po aprowizacji.

Provisioning.AllowResetSysUser

Type: Boolean
Default: n

Ta opcja umożliwia resetowanie hasła użytkownika systemowego. Jest ona domyślnie wyłączona.

Provisioning.PasswordCryptId

Type: String
Default: 6

Ta opcja określa algorytm używany crypt podczas generowania skrótu hasła. Prawidłowe wartości to:

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

Provisioning.PasswordCryptSaltLength

Type: String
Default: 10

Ta opcja określa długość losowej soli używanej podczas generowania skrótu hasła.

ResourceDisk.Format

Type: Boolean
Default: y

Jeśli wartość to y, waagent formatuje i instaluje dysk zasobów, który zapewnia platforma, chyba że typ systemu plików, którego zażądał użytkownik, ResourceDisk.Filesystem to ntfs. Agent udostępnia pojedynczą partycję systemu Linux (identyfikator 83) na dysku. Ta partycja nie jest sformatowana, jeśli można ją pomyślnie zamontować.

ResourceDisk.Filesystem

Type: String
Default: ext4

Ta opcja określa typ systemu plików dla dysku zasobu. Obsługiwane wartości różnią się w zależności od dystrybucji systemu Linux. Jeśli ciąg to X, mkfs.X powinien znajdować się na obrazie systemu Linux.

ResourceDisk.MountPoint

Type: String
Default: /mnt/resource

Ta opcja określa ścieżkę, w której jest zainstalowany dysk zasobu. Dysk zasobu jest dyskiem tymczasowym i może zostać opróżniony po anulowaniu aprowizacji maszyny wirtualnej.

ResourceDisk.MountOptions

Type: String
Default: None

Ta opcja określa opcje instalacji dysku, które mają zostać przekazane do mount -o polecenia. Wartość jest rozdzielaną przecinkami listą wartości, na przykład nodev,nosuid. Aby uzyskać więcej informacji, zobacz stronę ręczną mount(8) .

ResourceDisk.EnableSwap

Type: Boolean
Default: n

Jeśli ustawisz tę opcję, agent utworzy plik wymiany (/swapfile) na dysku zasobu i doda go do przestrzeni wymiany systemu.

ResourceDisk.SwapSizeMB

Type: Integer
Default: 0

Ta opcja określa rozmiar pliku wymiany w megabajtach.

Logs.Verbose

Type: Boolean
Default: n

Jeśli ustawisz tę opcję, zwiększa się szczegółowość dziennika. Dzienniki Waagent do /var/log/waagent.log i używają funkcji systemu logrotate do obracania dzienników.

OS. EnableRDMA

Type: Boolean
Default: n

Jeśli ustawisz tę opcję, agent próbuje zainstalować, a następnie załadować sterownik jądra RDMA zgodny z wersją oprogramowania układowego na podstawowym sprzęcie.

OS. RootDeviceScsiTimeout

Type: Integer
Default: 300

Ta opcja umożliwia skonfigurowanie limitu czasu SCSI w sekundach na dysku systemu operacyjnego i dyskach danych. Jeśli nie zostanie ustawiona, zostaną użyte wartości domyślne systemu.

OS. OpensslPath

Type: String
Default: None

Tej opcji można użyć do określenia alternatywnej ścieżki dla pliku binarnego openssl do użycia na potrzeby operacji kryptograficznych.

HttpProxy.Host, HttpProxy.Port

Type: String
Default: None

Jeśli ustawisz tę opcję, agent używa tego serwera proxy do uzyskiwania dostępu do Internetu.

AutoUpdate.Enabled

Type: Boolean
Default: y

Włączanie lub wyłączanie automatycznej aktualizacji na potrzeby przetwarzania stanu celu. Domyślna wartość to y.

Automatyczne zbieranie dzienników w agencie gościa systemu Linux platformy Azure

Od wersji 2.7 lub nowszej agent gościa systemu Linux platformy Azure ma funkcję automatycznego zbierania niektórych dzienników i przekazywania ich. Ta funkcja obecnie wymaga systemd. Używa nowego systemd wycinka wywoływanego azure-walinuxagent-logcollector.slice do zarządzania zasobami podczas wykonywania kolekcji.

Celem jest ułatwienie analizy offline. Agent tworzy plik .zip niektórych dzienników diagnostycznych przed przekazaniem ich do hosta maszyny wirtualnej. Zespoły inżynieryjne i specjaliści pomocy technicznej mogą pobrać plik w celu zbadania problemów dotyczących właściciela maszyny wirtualnej. Aby uzyskać informacje techniczne na temat plików zbieranych przez agenta gościa systemu Linux platformy Azure, zobacz plik azurelinuxagent/common/logcollector_manifests.py w repozytorium GitHub agenta.

Tę opcję można wyłączyć, edytując plik /etc/waagent.conf. Zaktualizuj Logs.Collect do n.

Obrazy w chmurze z systemem Ubuntu

Obrazy z systemem Ubuntu Cloud używają pakietu cloud-init do wykonywania wielu zadań konfiguracyjnych, którymi w przeciwnym razie zarządza agent maszyny wirtualnej platformy Azure z systemem Linux. Obowiązują następujące różnice:

  • Provisioning.Enabled wartość domyślna to n w przypadku obrazów w chmurze systemu Ubuntu, które używają pakietu cloud-init do wykonywania zadań aprowizacji.

  • Następujące parametry konfiguracji nie mają wpływu na obrazy w chmurze systemu Ubuntu, które używają pakietu cloud-init do zarządzania dyskiem zasobów i miejsca wymiany:

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

Aby skonfigurować punkt instalacji dysku zasobu i miejsce wymiany na obrazach w chmurze systemu Ubuntu podczas aprowizacji, zobacz następujące zasoby: