Delen via


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:

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