Virtuálisgép-bővítmények Python 3-kompatibilis Linux Azure-beli virtuális gépeken való használatával kapcsolatos problémák
Feljegyzés
A Microsoft arra ösztönzi a felhasználókat, hogy a Python 3.x-et használják a rendszereikben, kivéve, ha a számítási feladathoz Python 2.x-támogatás szükséges. Ilyen követelmény lehet például az örökölt felügyeleti szkriptek vagy bővítmények, például az Azure Disk Encryption és az Azure Monitor.
Mielőtt éles környezetben telepíti a Python 2.x-et , fontolja meg a Python 2.x hosszú távú támogatásának kérdését, különösen a biztonsági frissítések fogadásának képességét. Mivel a termékek, köztük az említett bővítmények egy része, a Python 3.8-támogatással frissítve, meg kell szüntetnie a Python 2.x használatát.
Egyes Linux-disztribúciók átálltak a Python 3.8-ra, és teljesen eltávolították a Python örökölt /usr/bin/python
belépési pontjait. Ez az áttűnés hatással van bizonyos virtuálisgép-bővítmények beépített, automatizált üzembe helyezésére az alábbi két feltétellel:
- Azok a bővítmények, amelyek továbbra is Python 3.x-támogatásra váltanak
- Az örökölt
/usr/bin/python
belépési pontot használó bővítmények
A Python 3.x-ra áttérő Linux-disztribúciós felhasználóknak meg kell győződniük arról, hogy az örökölt /usr/bin/python
belépési pont létezik, mielőtt megpróbálják üzembe helyezni ezeket a bővítményeket a virtuális gépeiken. Ellenkező esetben a bővítmény üzembe helyezése sikertelen lehet.
Az érintett támogatott Linux-disztribúciók közé tartozik az Ubuntu Server 20.04 LTS és az Ubuntu Pro 20.04 LTS.
Az érintett virtuálisgép-bővítmények közé tartozik az Azure Disk Encryption, a Log Analytics, a virtuálisgép-hozzáférés (jelszó-visszaállításhoz használt) és a vendégdiagnosztika (további teljesítményszámlálókhoz).
A helyszíni frissítéseknek, például az Ubuntu 18.04 LTS-ről az Ubuntu 20.04 LTS-re való frissítésnek meg kell őriznie a /usr/bin/python
symlinket, és változatlanul kell maradnia.
Resolution (Osztás)
Vegye figyelembe ezeket az általános javaslatokat, mielőtt bővítményeket helyez üzembe az összefoglalóban korábban ismertetett ismert forgatókönyvekben:
A bővítmény üzembe helyezése előtt állítsa vissza a
/usr/bin/python
symlinket a Linux disztribúció szállító által biztosított metódusával.- A Python 2.7-hez például használja a következőt:
sudo apt update && sudo apt install python-is-python2
- A Python 2.7-hez például használja a következőt:
Ez a javaslat azure-ügyfeleknek szól, és az Azure Stack nem támogatja:
- Ha már telepített egy példányt, amely ezt a problémát mutatja, a virtuális gép paneljén található Parancs futtatása funkcióval futtassa a fent említett parancsokat. Magát a Futtatás parancsbővítményt nem érinti a Python 3.8-ra való áttérés.
Ha új példányt helyez üzembe, és kiépítéskor be kell állítania egy bővítményt, a cloud-init felhasználói adataival telepítse a fent említett csomagokat.
Például a Python 2.7 esetében:
# 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
Ha a szervezet házirendgazdái úgy ítélik meg, hogy a bővítményeket nem szabad virtuális gépeken üzembe helyezni, letilthatja a bővítménytámogatást a kiépítéskor:
REST API
Bővítmények letiltása és engedélyezése, ha ezzel a tulajdonsággal üzembe helyezhet egy virtuális gépet:
"osProfile": { "allowExtensionOperations": false },
Következő lépések
További információkért tekintse meg a 18.04 LTS – Python 3 alaprendszer-módosításokat.