Panoramica dell'agente di macchine virtuali Linux di Azure
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+ |
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 (versioni LTS) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.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 trovanoy
nel file di configurazione. Nameserver
configurazione in /etc/resolv.conf.- Password radice da /etc/shadow, se
Provisioning.DeleteRootPassword
si trovay
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.
- Tutte le chiavi host SSH, se
deprovision+user
: esegue tutti gli elementi indeprovision
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
, String
o 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
, dsa
e 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
: MD52a
:Pesce palla5
: SHA-2566
: 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 ntfs
ResourceDisk.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,nosuid
ad 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.
Sistema operativo. 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.
Sistema operativo. 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 systemd
attualmente . 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
pern
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: