Problemen met het gebruik van VM-extensies in Linux Azure Virtual Machines-systemen met Python 3
Notitie
Microsoft moedigt gebruikers aan python 3.x in hun systemen te gebruiken, tenzij voor uw workload ondersteuning voor Python 2.x is vereist. Voorbeelden van deze vereiste zijn verouderde beheerscripts of extensies zoals Azure Disk Encryption en Azure Monitor.
Voordat u Python 2.x in productie installeert, moet u rekening houden met de kwestie van langetermijnondersteuning van Python 2.x, met name de mogelijkheid om beveiligingsupdates te ontvangen. Als producten, waaronder een aantal van de genoemde extensies, worden bijgewerkt met ondersteuning voor Python 3.8 , moet u het gebruik van Python 2.x stopzetten.
Sommige Linux-distributies zijn overgestapt naar Python 3.8 en hebben het verouderde /usr/bin/python
invoerpunt voor Python helemaal verwijderd. Deze overgang is van invloed op de out-of-the-box geautomatiseerde implementatie van bepaalde extensies voor virtuele machines (VM's) met de volgende twee voorwaarden:
- Extensies die nog steeds worden overgezet naar Ondersteuning voor Python 3.x
- Extensies die gebruikmaken van het verouderde
/usr/bin/python
invoerpunt
Linux-distributiegebruikers die zijn overgestapt naar Python 3.x , moeten ervoor zorgen dat het verouderde /usr/bin/python
toegangspunt bestaat voordat ze deze extensies op hun VM's implementeren. Anders kan de implementatie van de extensie mislukken.
Goedgekeurde Linux-distributies die worden beïnvloed zijn Ubuntu Server 20.04 LTS en Ubuntu Pro 20.04 LTS.
De betrokken VM-extensies zijn Onder andere Azure Disk Encryption, Log Analytics, VM-toegang (gebruikt voor wachtwoordherstel) en Gastdiagnose (gebruikt voor aanvullende prestatiemeteritems).
In-place upgrades, zoals een upgrade van Ubuntu 18.04 LTS naar Ubuntu 20.04 LTS, moeten de /usr/bin/python
symlink behouden en niet worden beïnvloed.
Oplossing
Houd rekening met deze algemene aanbevelingen voordat u extensies implementeert in de bekende scenario's die eerder zijn beschreven in de Samenvatting:
Voordat u de extensie implementeert, moet u de
/usr/bin/python
symlink opnieuw voltooien met behulp van de methode van de linux-distributieleverancier.- Gebruik bijvoorbeeld voor Python 2.7:
sudo apt update && sudo apt install python-is-python2
- Gebruik bijvoorbeeld voor Python 2.7:
Deze aanbeveling is voor Azure-klanten en wordt niet ondersteund in Azure Stack:
- Als u al een exemplaar hebt geïmplementeerd dat dit probleem vertoont, gebruikt u de functionaliteit van de opdracht Uitvoeren op de vm-blade om de hierboven genoemde opdrachten uit te voeren. De opdrachtextensie Uitvoeren zelf wordt niet beïnvloed door de overgang naar Python 3.8.
Als u een nieuw exemplaar implementeert en een extensie moet instellen tijdens het inrichten, gebruikt u cloud-init-gebruikersgegevens om de hierboven genoemde pakketten te installeren.
Bijvoorbeeld voor 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
Als de beleidsbeheerders van uw organisatie bepalen dat extensies niet moeten worden geïmplementeerd in VM's, kunt u ondersteuning voor extensies uitschakelen tijdens het inrichten:
REST-API
Extensies uitschakelen en inschakelen wanneer u een VM met deze eigenschap kunt implementeren:
"osProfile": { "allowExtensionOperations": false },
Volgende stappen
Raadpleeg Standaard andere wijzigingen in het basissysteem sinds 18.04 LTS - Python 3 voor meer informatie.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor