Problemi relativi all'uso delle estensioni vm nei sistemi Linux Macchine virtuali linux abilitati per Python 3
Nota
Microsoft incoraggia gli utenti ad adottare Python 3.x nei propri sistemi, a meno che il carico di lavoro non richieda il supporto di Python 2.x . Esempi di questo requisito possono includere script di amministrazione legacy o estensioni, ad esempio Crittografia dischi di Azure e Monitoraggio di Azure.
Prima di installare Python 2.x nell'ambiente di produzione, considerare la questione del supporto a lungo termine di Python 2.x, in particolare la possibilità di ricevere gli aggiornamenti della sicurezza. Come prodotti, tra cui alcune delle estensioni indicate, eseguire l'aggiornamento con il supporto di Python 3.8 , è consigliabile interrompere l'uso di Python 2.x.
Alcune distribuzioni di Linux sono state spostate in Python 3.8 e hanno rimosso completamente il punto di ingresso legacy /usr/bin/python
per Python. Questa transizione influisce sulla distribuzione automatizzata predefinita di determinate estensioni di macchina virtuale (VM) con queste due condizioni:
- Estensioni ancora in fase di transizione al supporto di Python 3.x
- Estensioni che usano il punto di ingresso legacy
/usr/bin/python
Gli utenti della distribuzione Linux che hanno eseguito la transizione a Python 3.x devono assicurarsi che il punto di ingresso legacy /usr/bin/python
esista prima di tentare di distribuire tali estensioni nelle macchine virtuali. In caso contrario, la distribuzione dell'estensione potrebbe non riuscire.
Le distribuzioni linux approvate interessate includono Ubuntu Server 20.04 LTS e Ubuntu Pro 20.04 LTS.
Le estensioni macchina virtuale interessate includono Crittografia dischi di Azure, Analitica di log, accesso alle macchine virtuali (usato per la reimpostazione della password) e Diagnostica guest (usata per contatori delle prestazioni aggiuntivi).
Gli aggiornamenti sul posto, ad esempio l'aggiornamento da Ubuntu 18.04 LTS a Ubuntu 20.04 LTS, devono mantenere il /usr/bin/python
collegamento simbolico e rimanere invariati.
Risoluzione
Prendere in considerazione queste raccomandazioni generali prima di distribuire le estensioni negli scenari interessati noti descritti in precedenza nel riepilogo:
Prima di distribuire l'estensione, ripristinare il
/usr/bin/python
collegamento simbolico usando il metodo fornito dal fornitore della distribuzione Linux.- Ad esempio, per Python 2.7, usare:
sudo apt update && sudo apt install python-is-python2
- Ad esempio, per Python 2.7, usare:
Questo consiglio è per i clienti di Azure e non è supportato in Azure Stack:
- Se è già stata distribuita un'istanza che presenta questo problema, usare la funzionalità Esegui comando nel pannello macchina virtuale per eseguire i comandi indicati in precedenza. L'estensione esegui comando non è interessata dalla transizione a Python 3.8.
Se si distribuisce una nuova istanza ed è necessario impostare un'estensione in fase di provisioning, usare i dati utente di cloud-init per installare i pacchetti indicati in precedenza.
Ad esempio, per Python 2.7:
# create cloud-init config cat > cloudinitConfig.json <<EOF #cloud-config package_update: true runcmd: - sudo apt update - sudo apt install python-is-python2 EOF # create VM az vm create \ --resource-group <resourceGroupName> \ --name <vmName> \ --image <Ubuntu 20.04 Image URN> \ --admin-username azadmin \ --ssh-key-value "<sshPubKey>" \ --custom-data ./cloudinitConfig.json
Se gli amministratori dei criteri dell'organizzazione determinano che le estensioni non devono essere distribuite nelle macchine virtuali, è possibile disabilitare il supporto delle estensioni in fase di provisioning:
REST API
Per disabilitare e abilitare le estensioni quando è possibile distribuire una macchina virtuale con questa proprietà:
"osProfile": { "allowExtensionOperations": false },
Passaggi successivi
Per altre informazioni, vedere Altre modifiche del sistema di base dalla versione 18.04 LTS - Python 3 per impostazione predefinita .