Megosztás a következőn keresztül:


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:

  1. 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
  2. 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.
  3. 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
    
  4. 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.