Sdílet prostřednictvím


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

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