Panoramica dell'agente di macchine virtuali Linux di Azure

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Prendere in considerazione l'uso e il piano di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

L'agente di macchine virtuali Linux di Microsoft Azure (waagent) gestisce il provisioning di Linux e FreeBSD, insieme all'interazione della macchina virtuale con il controller di infrastruttura di Azure. Oltre all'agente Linux che fornisce funzionalità di provisioning, Azure offre la possibilità di usare cloud-init per alcuni sistemi operativi Linux.

L'agente Linux offre le funzionalità seguenti per le distribuzioni di Azure Macchine virtuali Linux e FreeBSD. Per altre informazioni, vedere readme dell'agente di macchine virtuali Linux di Azure in GitHub.

Provisioning di immagini

  • Consente di creare un account utente
  • Configura i tipi di autenticazione SSH
  • Distribuisce chiavi pubbliche SSH e coppie di chiavi
  • Imposta il nome host
  • Pubblica il nome host nel DNS della piattaforma
  • Segnala l'impronta digitale della chiave host SSH alla piattaforma
  • Gestisce il disco risorse
  • Esegue la formattazione e il montaggio del disco risorse
  • Configura l'area di swap

Rete

  • Gestisce i percorsi per migliorare la compatibilità con i server DHCP della piattaforma.
  • Garantisce la stabilità del nome dell'interfaccia di rete

Kernel

  • Configura NUMA virtuale (disabilitato per il kernel 2.6.37)
  • Usa l'entropia Hyper-V per /dev/random
  • Configura i timeout SCSI per il dispositivo radice, che può essere remoto

Diagnostica

  • Fornisce il reindirizzamento della console alla porta seriale

Distribuzioni di System Center Virtual Machine Manager

  • Rileva e avvia l'agente di Virtual Machine Manager per Linux quando è in esecuzione in un ambiente System Center Virtual Machine Manager 2012 R2

Estensione VM

  • Inserisce componenti creati da Microsoft e partner in macchine virtuali Linux per abilitare l'automazione del software e della configurazione

È possibile trovare un'implementazione di riferimento dell'estensione della macchina virtuale in GitHub.

Comunicazione

Il flusso di informazioni dalla piattaforma all'agente avviene tramite due canali:

  • DVD collegato all'avvio per le distribuzioni di macchine virtuali. Questo DVD include un file di configurazione conforme a OVF (Open Virtualization Format) che contiene tutte le informazioni di provisioning diverse dalle coppie di chiavi SSH.
  • Endpoint TCP che espone un'API REST usata per ottenere la configurazione della distribuzione e della topologia.

Requisiti

Il test ha confermato che i sistemi seguenti funzionano con l'agente di macchine virtuali Linux di Azure.

Nota

Questo elenco potrebbe differire dalle distribuzioni Linux approvate in Azure.

Distribuzione 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+
Azure Linux 2.x 2.x
openSUSE 12.3+ Non supportato
Oracle Linux 6.4+, 7.x+, 8.x+ Non supportato
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+

Importante

RHEL/Oracle Linux 6.10 è l'unica versione RHEL/OL 6 con il supporto del ciclo di vita esteso disponibile. La manutenzione estesa termina il 30 giugno 2024.

Altri sistemi supportati:

  • L'agente funziona su più sistemi rispetto a quelli elencati nella documentazione. Tuttavia, non viene eseguito il test o il supporto per le distribuzioni non presenti nell'elenco approvato. In particolare, FreeBSD non è approvato. Il cliente può provare FreeBSD 8 e, in caso di problemi, può aprire un problema nel repository GitHub e può essere utile.

L'agente Linux dipende da questi pacchetti di sistema per funzionare correttamente:

  • Python 2.6+
  • OpenSSL 1.0+
  • OpenSSH 5.3+
  • Utilità del file system: sfdisk, fdisk, mkfs, parted
  • Strumenti password: chpasswd, sudo
  • Strumenti di elaborazione testo: sed, grep
  • Strumenti di rete: ip-route
  • Supporto del kernel per il montaggio di file system UDF

Assicurarsi che la macchina virtuale abbia accesso all'indirizzo IP 168.63.129.16. Per altre informazioni, vedere Che cos'è l'indirizzo IP 168.63.129.16?.

Installazione

Il metodo supportato per l'installazione e l'aggiornamento dell'agente di macchine virtuali Linux di Azure usa un pacchetto RPM o DEB dal repository dei pacchetti della distribuzione. Tutti i provider di distribuzione approvati integrano il pacchetto dell'agente di macchine virtuali Linux di Azure nelle immagini e nei repository. Alcune distribuzioni linux potrebbero disabilitare la funzionalità di aggiornamento automatico dell'agente di macchine virtuali Linux di Azure e alcuni dei repository potrebbero contenere anche versioni precedenti, che potrebbero avere problemi con le estensioni moderne, quindi è consigliabile installare la versione stabile più recente. Per assicurarsi che l'agente di macchine virtuali Linux di Azure venga aggiornato correttamente, è consigliabile avere l'opzione AutoUpdate.Enabled=Y nel /etc/waagent.conf file o semplicemente impostare come commento tale opzione comporta anche le impostazioni predefinite. Non AutoUpdate.Enabled=N sarà possibile aggiornare correttamente l'agente di macchine virtuali Linux di Azure.

Per le opzioni di installazione avanzate, ad esempio l'installazione da un'origine o in percorsi o prefissi personalizzati, vedere Agente di macchine virtuali Linux di Microsoft Azure. Oltre a questi scenari, non è supportato né è consigliabile aggiornare o reinstallare l'agente di macchine virtuali Linux di Azure dall'origine.

Opzioni della riga di comando

Flag

  • verbose: aumenta la dettaglio del comando specificato.
  • force: ignora la conferma interattiva per alcuni comandi.

Comandi

  • help: elenca i comandi e i flag supportati.

  • deprovision: tenta di pulire il sistema e renderlo adatto per il reprovisioning. L'operazione elimina:

    • Tutte le chiavi host SSH, se Provisioning.RegenerateSshHostKeyPair si trovano y nel file di configurazione.
    • Nameserver configurazione in /etc/resolv.conf.
    • Password radice da /etc/shadow, se Provisioning.DeleteRootPassword si trova y nel file di configurazione.
    • Lease client DHCP memorizzati nella cache.

    Il client reimposta il nome host su localhost.localdomain.

    Avviso

    Il deprovisioning non garantisce che l'immagine sia cancellata da tutte le informazioni riservate e adatta per la ridistribuzione.

  • deprovision+user: esegue tutti gli elementi in deprovision ed elimina l'ultimo account utente di cui è stato effettuato il provisioning (ottenuto da /var/lib/waagent) e i dati associati. Usare questo parametro quando si esegue il deprovisioning di un'immagine di cui è stato eseguito il provisioning in precedenza in Azure in modo che possa essere acquisita e riutilizzata.

  • version: visualizza la versione di waagent.

  • serialconsole: configura GRUB per contrassegnare ttyS0, la prima porta seriale, come console di avvio. Questa opzione assicura che i log di avvio del kernel vengano inviati alla porta seriale e resi disponibili per il debug.

  • daemon: esegue waagent come daemon per gestire l'interazione con la piattaforma. Questo argomento viene specificato per waagent nello script init waagent.

  • start: esegue waagent come processo in background.

Impostazione

Il file di configurazione /etc/waagent.conf controlla le azioni di waagent. Di seguito è riportato un esempio di file di configurazione:

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

Le opzioni di configurazione sono di tre tipi: Boolean, Stringo Integer. È possibile specificare le opzioni di Boolean configurazione come y o n. La parola chiave None speciale può essere usata per alcune voci di configurazione del tipo stringa.

Provisioning.Enabled

Type: Boolean
Default: y

Questa opzione consente all'utente di abilitare o disabilitare la funzionalità di provisioning nell'agente. I valori validi sono y e n. Se il provisioning è disabilitato, l'host SSH e le chiavi utente nell'immagine vengono mantenute e la configurazione nell'API di provisioning di Azure viene ignorata.

Nota

Il Provisioning.Enabled parametro usa per impostazione predefinita n immagini cloud Ubuntu che usano cloud-init per il provisioning.

Provisioning.DeleteRootPassword

Type: Boolean
Default: n

Se il valore è y, l'agente cancella la password radice nel file /etc/shadow durante il processo di provisioning.

Provisioning.RegenerateSshHostKeyPair

Type: Boolean
Default: y

Se il valore è y, l'agente elimina tutte le coppie di chiavi host SSH da /etc/ssh/ durante il processo di provisioning, tra cui ECDSA, DSA e RSA. L'agente genera una singola coppia di chiavi aggiornata.

Configurare il tipo di crittografia per la coppia di chiavi aggiornata usando la Provisioning.SshHostKeyPairType voce . Alcune distribuzioni ricreano coppie di chiavi SSH per qualsiasi tipo di crittografia mancante quando il daemon SSH viene riavviato, ad esempio dopo un riavvio.

Provisioning.SshHostKeyPairType

Type: String
Default: rsa

È possibile impostare questa opzione su un tipo di algoritmo di crittografia supportato dal daemon SSH nella macchina virtuale. I valori supportati in genere sono rsa, dsae ecdsa. Il file putty.exe in Windows non supporta ecdsa. Se si intende usare putty.exe in Windows per connettersi a una distribuzione Linux, usare rsa o dsa.

Provisioning.MonitorHostName

Type: Boolean
Default: y

Se il valore è y, waagent monitora la macchina virtuale Linux per ottenere una modifica del nome host, come restituito dal hostname comando . Waagent aggiorna quindi automaticamente la configurazione di rete nell'immagine per riflettere la modifica. Per eseguire il push della modifica del nome nei server DNS, la rete viene riavviata nella macchina virtuale. Questo riavvio comporta una breve perdita di connettività Internet.

Provisioning.DecodeCustomData

Type: Boolean
Default: n

Se il valore è y, waagent decodifica CustomData da Base64.

Provisioning.ExecuteCustomData

Type: Boolean
Default: n

Se il valore è y, waagent viene eseguito CustomData dopo il provisioning.

Provisioning.AllowResetSysUser

Type: Boolean
Default: n

Questa opzione consente la reimpostazione della password per l'utente di sistema. Per impostazione predefinita, è disabilitata.

Provisioning.PasswordCryptId

Type: String
Default: 6

Questa opzione specifica l'algoritmo che crypt usa quando genera un hash delle password. I valori validi sono:

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

Provisioning.PasswordCryptSaltLength

Type: String
Default: 10

Questa opzione specifica la lunghezza del salt casuale usato per generare un hash delle password.

ResourceDisk.Format

Type: Boolean
Default: y

Se il valore è y, waagent formatta e monta il disco delle risorse fornito dalla piattaforma, a meno che il tipo di file system richiesto dall'utente sia ntfsResourceDisk.Filesystem . L'agente rende disponibile una singola partizione Linux (ID 83) sul disco. Questa partizione non è formattata se può essere montata correttamente.

ResourceDisk.Filesystem

Type: String
Default: ext4

Questa opzione specifica il tipo di file system per il disco delle risorse. I valori supportati variano in base alla distribuzione Linux. Se la stringa è X, mkfs.X deve essere presente nell'immagine Linux.

ResourceDisk.MountPoint

Type: String
Default: /mnt/resource

Questa opzione specifica il percorso in cui è montato il disco della risorsa. Il disco delle risorse è un disco temporaneo e potrebbe essere svuotato quando la macchina virtuale viene deprovisionata.

ResourceDisk.MountOptions

Type: String
Default: None

Questa opzione specifica le opzioni di montaggio del disco da passare al mount -o comando. Il valore è un elenco delimitato da virgole di valori, nodev,nosuidad esempio . Per altre informazioni, vedere la mount(8) pagina manuale.

ResourceDisk.EnableSwap

Type: Boolean
Default: n

Se si imposta questa opzione, l'agente crea un file di scambio (/swapfile) sul disco della risorsa e lo aggiunge allo spazio di scambio di sistema.

ResourceDisk.SwapSizeMB

Type: Integer
Default: 0

Questa opzione specifica le dimensioni del file di scambio in megabyte.

Logs.Verbose

Type: Boolean
Default: n

Se si imposta questa opzione, il livello di dettaglio del log viene incrementato. Waagent registra in /var/log/waagent.log e usa la funzionalità di sistema logrotate per ruotare i log.

OS.EnableRDMA

Type: Boolean
Default: n

Se si imposta questa opzione, l'agente tenta di installare e quindi caricare un driver kernel RDMA corrispondente alla versione del firmware nell'hardware sottostante.

OS. RootDeviceScsiTimeout

Type: Integer
Default: 300

Questa opzione configura il timeout SCSI in secondi nel disco del sistema operativo e nelle unità dati. Se non è impostata, vengono usate le impostazioni predefinite del sistema.

OS. OpensslPath

Type: String
Default: None

È possibile usare questa opzione per specificare un percorso alternativo per il file binario openssl da usare per le operazioni di crittografia.

HttpProxy.Host, HttpProxy.Port

Type: String
Default: None

Se si imposta questa opzione, l'agente usa questo server proxy per accedere a Internet.

AutoUpdate.Enabled

Type: Boolean
Default: y

Abilitare o disabilitare l'aggiornamento automatico per l'elaborazione dello stato dell'obiettivo. Il valore predefinito è y.

Raccolta automatica dei log nell'agente guest Linux di Azure

A partire dalla versione 2.7+, l'agente guest Linux di Azure ha una funzionalità per raccogliere automaticamente alcuni log e caricarli. Questa funzionalità richiede systemdattualmente . Usa una nuova systemd sezione denominata azure-walinuxagent-logcollector.slice per gestire le risorse mentre esegue la raccolta.

Lo scopo è facilitare l'analisi offline. L'agente genera un file .zip di alcuni log di diagnostica prima di caricarli nell'host della macchina virtuale. I team di progettazione e i professionisti del supporto possono recuperare il file per analizzare i problemi relativi al proprietario della macchina virtuale. Per informazioni tecniche sui file raccolti dall'agente guest Linux di Azure, vedere il file azurelinuxagent/common/logcollector_manifests.py nel repository GitHub dell'agente.

È possibile disabilitare questa opzione modificando /etc/waagent.conf. Aggiornare Logs.Collect a n.

Immagini di Ubuntu Cloud

Le immagini cloud Ubuntu usano cloud-init per eseguire molte attività di configurazione che l'agente di macchine virtuali Linux di Azure gestirà in altro modo. Si applicano le differenze seguenti:

  • Provisioning.Enabled per n impostazione predefinita su Immagini cloud Ubuntu che usano cloud-init per eseguire attività di provisioning.

  • I seguenti parametri di configurazione non hanno alcun effetto sulle immagini di Ubuntu Cloud che utilizzano cloud-init per gestire disco risorse e spazio di scambio:

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

Per configurare il punto di montaggio del disco delle risorse e lo spazio di scambio nelle immagini cloud Ubuntu durante il provisioning, vedere le risorse seguenti: