Problémy s používáním rozšíření virtuálních počítačů v linuxových systémech Azure Virtual Machines s podporou Pythonu 3
Poznámka
Microsoft doporučuje uživatelům, aby ve svých systémech osvojili Python 3.x , pokud vaše úloha nevyžaduje podporu Pythonu 2.x . Mezi příklady tohoto požadavku patří starší verze skriptů pro správu nebo rozšíření, jako jsou 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 schopnosti přijímat aktualizace zabezpečení. Vzhledem k tomu, že se produkty, včetně některých uvedených rozšíření, aktualizují s podporou Pythonu 3.8 , měli byste python 2.x přestat používat.
Některé distribuce Linuxu 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ší verzi
/usr/bin/python
vstupního bodu
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 existoval starší /usr/bin/python
vstupní bod. V opačném případě může nasazení rozšíření selhat.
Mezi schválené distribuce Linuxu patří Ubuntu Server 20.04 LTS a Ubuntu Pro 20.04 LTS.
Mezi ovlivněná rozšíření virtuálních počítačů patří Azure Disk Encryption, Log Analytics, přístup k virtuálním počítačům (používaný k resetování hesla) a diagnostika 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é.
Řešení
Před nasazením rozšíření ve známých ovlivněných scénářích popsaných výše v souhrnu zvažte tato obecná doporučení:
Před nasazením rozšíření obnovte
/usr/bin/python
symlink pomocí metody poskytované 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í je pro zákazníky Azure a ve službě Azure Stack se nepodporuje:
- Pokud jste už nasadili instanci, u které dochází k tomuto problému, pomocí funkce Spustit příkaz v okně virtuálního počítače spusťte výše uvedené příkazy. Samotné rozšíření příkazu Spustit není přechodem na Python 3.8 ovlivněno.
Pokud nasazujete novou instanci a potřebujete nastavit rozšíření při zřizování, použijte k instalaci výše uvedených balíčků uživatelská data 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 na virtuálních počítačích, můžete podporu rozšíření při zřizování zakázat:
REST API
Zakázání a povolení rozšíření, když můžete nasadit virtuální počítač s touto vlastností:
"osProfile": { "allowExtensionOperations": false },
Další kroky
Další informace najdete v tématu Další změny základního systému od verze 18.04 LTS – Python 3 ve výchozím nastavení .
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro