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:
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
- För Python 2.7 använder du till exempel:
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.
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
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.