Problemen met het gebruik van VM-extensies in Linux Azure Virtual Machines-systemen met 3-functionaliteit voor Linux
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 vraag over langetermijnondersteuning van Python 2.x, met name de mogelijkheid om beveiligingsupdates te ontvangen. Als producten, waaronder een deel van de extensie, worden bijgewerkt met python 3.8-ondersteuning , moet u het gebruik van Python 2.x stoppen.
Sommige Linux-distributies zijn overgestapt op Python 3.8 en hebben het verouderde /usr/bin/python
toegangspunt voor Python helemaal verwijderd. Deze overgang heeft invloed op de out-of-the-box, geautomatiseerde implementatie van bepaalde extensies voor virtuele machines (VM's) met deze twee voorwaarden:
- Extensies die nog steeds overschakelen naar ondersteuning voor Python 3.x
- Extensies die gebruikmaken van het verouderde
/usr/bin/python
toegangspunt
Linux-distributiegebruikers die zijn overgestapt naar Python 3.x , moeten ervoor zorgen dat het verouderde /usr/bin/python
ingangspunt 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, omvatten Ubuntu Server 20.04 LTS en Ubuntu Pro 20.04 LTS.
Betrokken VM-extensies omvatten Azure Disk Encryption, Log Analytics, VM-toegang (gebruikt voor wachtwoordherstel) en Diagnostische gegevens van gasten (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 blijven ongewijzigd.
Oplossing
Bekijk deze algemene aanbevelingen voordat u extensies implementeert in de bekende scenario's die eerder in de samenvatting zijn beschreven:
Voordat u de extensie implementeert, moet u de
/usr/bin/python
symlink opnieuw voltooien met behulp van de door de leverancier geleverde linux-distributiemethode.- Gebruik bijvoorbeeld voor Python 2.7:
sudo apt update && sudo apt install python-is-python2
- Gebruik bijvoorbeeld voor Python 2.7:
Deze aanbeveling is bedoeld 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 opdrachtfunctionaliteit 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 tijdens het inrichten een extensie moet instellen, 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 op VM's, kunt u ondersteuning voor extensies uitschakelen tijdens het inrichten:
REST-API
Extensies uitschakelen en inschakelen wanneer u een VIRTUELE machine met deze eigenschap kunt implementeren:
"osProfile": { "allowExtensionOperations": false },
Volgende stappen
Raadpleeg andere wijzigingen in het basissysteem sinds 18.04 LTS - Python 3 standaard voor aanvullende informatie.