Sdílet prostřednictvím


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í:

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