Problémy s používáním rozšíření virtuálních počítačů v systémech Linux Azure Virtual Machines s podporou Pythonu 3
Poznámka:
Microsoft doporučuje uživatelům používat Python 3.x ve svých systémech, pokud vaše úloha nevyžaduje podporu Pythonu 2.x . Příkladem tohoto požadavku můžou být starší skripty pro správu nebo rozšíření, jako je Azure Disk Encryption a Azure Monitor.
Před instalací Pythonu 2.x v produkčním prostředí zvažte otázku dlouhodobé podpory Pythonu 2.x, zejména jejich schopnost přijímat aktualizace zabezpečení. Jako produkty, včetně některého z uvedených rozšíření, aktualizujte pomocí podpory Pythonu 3.8 , byste měli přestat používat Python 2.x.
Některé linuxové distribuce přešly na Python 3.8 a úplně odebraly starší /usr/bin/python
vstupní bod pro Python. Tento přechod má vliv na předefinované automatizované nasazení určitých rozšíření virtuálních počítačů s těmito dvěma podmínkami:
- Rozšíření, která stále přecházejí na podporu Pythonu 3.x
- Rozšíření, která používají starší vstupní
/usr/bin/python
bod
Uživatelé distribuce Linuxu, kteří přešli na Python 3.x , musí před pokusem o nasazení těchto rozšíření do svých virtuálních počítačů zajistit, aby starší vstupní /usr/bin/python
bod existoval. Jinak nasazení rozšíření může selhat.
Doporučené distribuce Linuxu, které jsou ovlivněny, zahrnují Ubuntu Server 20.04 LTS a Ubuntu Pro 20.04 LTS.
Ovlivněná rozšíření virtuálních počítačů zahrnují Azure Disk Encryption, Log Analytics, přístup k virtuálnímu počítači (používá se pro resetování hesla) a diagnostiku hosta (používá se pro další čítače výkonu).
Místní upgrady, jako je upgrade z Ubuntu 18.04 LTS na Ubuntu 20.04 LTS, by měly zachovat /usr/bin/python
symlink a zůstat nedotčené.
Rozlišení
Před nasazením rozšíření ve známých scénářích popsaných v souhrnu zvažte tato obecná doporučení:
Před nasazením rozšíření znovu spusťte
/usr/bin/python
symlink pomocí metody poskytnuté dodavatelem distribuce Linuxu.- Například pro Python 2.7 použijte:
sudo apt update && sudo apt install python-is-python2
- Například pro Python 2.7 použijte:
Toto doporučení se doporučuje pro zákazníky Azure a není podporované ve službě Azure Stack:
- Pokud jste už nasadili instanci, která tento problém vykazuje, spusťte výše uvedené příkazy pomocí funkce příkazu Spustit v okně virtuálního počítače. Samotné rozšíření příkazu Spustit nemá vliv na přechod na Python 3.8.
Pokud nasazujete novou instanci a potřebujete nastavit rozšíření v době zřizování, nainstalujte balíčky uvedené výše pomocí uživatelských dat cloud-init .
Například pro 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
Pokud správci zásad vaší organizace zjistí, že rozšíření by se neměla nasazovat ve virtuálních počítačích, můžete v době zřizování zakázat podporu rozšíření:
REST API
Pokud chcete zakázat a povolit rozšíření, když můžete nasadit virtuální počítač s touto vlastností:
"osProfile": { "allowExtensionOperations": false },
Další kroky
Další informace najdete v dalších změnách základního systému od verze 18.04 LTS – Python 3.