Dela via


Problem med att använda VM-tillägg i Python 3-aktiverade Linux Azure Virtual Machines-system

Kommentar

Microsoft uppmuntrar användare att använda Python 3.x i sina system om inte din arbetsbelastning kräver Python 2.x-stöd . Exempel på detta krav kan vara äldre administrationsskript eller tillägg som Azure Disk Encryption och Azure Monitor.

Innan du installerar Python 2.x i produktion bör du överväga frågan om långsiktigt stöd för Python 2.x, särskilt deras möjlighet att ta emot säkerhetsuppdateringar. Som produkter, inklusive vissa av tilläggen som nämns, uppdateras med Python 3.8-stöd bör du avbryta användningen av Python 2.x.

Vissa Linux-distributioner har övergått till Python 3.8 och tagit bort den äldre /usr/bin/python startpunkten för Python helt och hållet. Den här övergången påverkar den färdiga automatiserade distributionen av vissa tillägg för virtuella datorer (VM) med följande två villkor:

  • Tillägg som fortfarande övergår till Python 3.x-stöd
  • Tillägg som använder den äldre /usr/bin/python startpunkten

Linux-distributionsanvändare som har övergått till Python 3.x måste se till att den äldre /usr/bin/python startpunkten finns innan de försöker distribuera dessa tillägg till sina virtuella datorer. Annars kan tilläggsdistributionen misslyckas.

  • Godkända Linux-distributioner som påverkas är Ubuntu Server 20.04 LTS och Ubuntu Pro 20.04 LTS.

  • Berörda VM-tillägg inkluderar Azure Disk Encryption, Log Analytics, VM Access (används för lösenordsåterställning) och Gästdiagnostik (används för ytterligare prestandaräknare).

Uppgraderingar på plats, till exempel uppgradering från Ubuntu 18.04 LTS till Ubuntu 20.04 LTS, bör behålla symlinken /usr/bin/python och förbli opåverkad.

Åtgärd

Tänk på dessa allmänna rekommendationer innan du distribuerar tillägg i de kända scenarier som beskrivs tidigare i sammanfattningen:

  1. Innan du distribuerar tillägget återställer du /usr/bin/python symlinken med hjälp av den Linux-distributionsleverantör som tillhandahålls.

    • För Python 2.7 använder du till exempel:sudo apt update && sudo apt install python-is-python2
  2. Den här rekommendationen gäller för Azure-kunder och stöds inte i Azure Stack:

    • Om du redan har distribuerat en instans som uppvisar det här problemet använder du kör-kommandofunktionen på bladet VM för att köra kommandona som nämns ovan. Själva kommandotillägget Kör påverkas inte av övergången till Python 3.8.
  3. Om du distribuerar en ny instans och behöver ange ett tillägg vid etableringstillfället använder du cloud-init-användardata för att installera paketen som nämns ovan.

    Till exempel för 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. Om organisationens principadministratörer fastställer att tillägg inte ska distribueras på virtuella datorer kan du inaktivera tilläggsstöd vid etableringstillfället:

    • REST-API

      Inaktivera och aktivera tillägg när du kan distribuera en virtuell dator med den här egenskapen:

        "osProfile": {
          "allowExtensionOperations": false
        },
      

Nästa steg

Mer information finns i Andra grundläggande systemändringar sedan 18.04 LTS – Python 3 som standard.