Aracılığıyla paylaş


Python 3 özellikli Linux Azure Sanal Makineler sistemlerinde VM uzantılarını kullanma sorunları

Not

İş yükünüz Python 2.x desteği gerektirmediği sürece Microsoft, kullanıcıları sistemlerinde Python 3.x'i benimsemeye teşvik eder. Bu gereksinime örnek olarak eski yönetim betikleri veya Azure Disk Şifrelemesi ve Azure İzleyici gibi uzantılar verilebilir.

Python 2.x'i üretime yüklemeden önce Python 2.x'in uzun süreli desteği, özellikle de güvenlik güncelleştirmelerini alabilmeleri konusunu göz önünde bulundurun. Bahsedilen uzantılardan bazıları da dahil olmak üzere , Python 3.8 desteğiyle güncelleştirilen ürünler olarak Python 2.x'in kullanımını sona erdirmelisiniz.

Bazı Linux dağıtımları Python 3.8'e geçiş yaptı ve Python için eski /usr/bin/python giriş noktasını tamamen kaldırdı. Bu geçiş, şu iki koşulla belirli sanal makine (VM) uzantılarının kullanıma uygun, otomatik dağıtımını etkiler:

  • Python 3.x desteğine geçiş yapmaya devam eden uzantılar
  • Eski /usr/bin/python giriş noktasını kullanan uzantılar

Python 3.x'e geçen Linux dağıtım kullanıcıları, bu uzantıları vm'lerine dağıtmaya çalışmadan önce eski /usr/bin/python giriş noktasının mevcut olduğundan emin olmalıdır. Aksi takdirde uzantı dağıtımı başarısız olabilir.

  • Etkilenen onaylı Linux dağıtımları arasında Ubuntu Server 20.04 LTS ve Ubuntu Pro 20.04 LTS bulunur.

  • Etkilenen VM Uzantıları Azure Disk Şifrelemesi, Log Analytics, VM Erişimi (Parola Sıfırlama için kullanılır) ve Konuk Tanılama (ek performans sayaçları için kullanılır) içerir.

Ubuntu 18.04 LTS'den Ubuntu 20.04 LTS'ye yükseltme gibi yerinde yükseltmeler, symlink'i /usr/bin/python korumalı ve etkilenmeden kalmalıdır.

Çözüm

Daha önce Özet bölümünde açıklanan bilinen etkilenen senaryolarda uzantıları dağıtmadan önce bu genel önerileri göz önünde bulundurun:

  1. Uzantıyı dağıtmadan önce Linux dağıtım satıcısı tarafından /usr/bin/python sağlanan yöntemini kullanarak symlink'i yeniden devreye getirin.

    • Örneğin, Python 2.7 için şunu kullanın: sudo apt update && sudo apt install python-is-python2
  2. Bu öneri Azure müşterilerine yöneliktir ve Azure Stack'te desteklenmez:

    • Bu sorunu gösteren bir örneği zaten dağıttıysanız, yukarıda belirtilen komutları çalıştırmak için VM dikey penceresindeki Çalıştır komut işlevini kullanın. Komut uzantısını çalıştır, Python 3.8'e geçişten etkilenmez.
  3. Yeni bir örnek dağıtıyorsanız ve sağlama zamanında bir uzantı ayarlamanız gerekiyorsa, yukarıda belirtilen paketleri yüklemek için cloud-init kullanıcı verilerini kullanın.

    Örneğin, Python 2.7 için:

    # 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. Kuruluşunuzun ilke yöneticileri uzantıların VM'lerde dağıtılmaması gerektiğini belirlerse, sağlama zamanında uzantı desteğini devre dışı bırakabilirsiniz:

    • REST API

      Bu özellik ile vm dağıtabileceğiniz uzantıları devre dışı bırakmak ve etkinleştirmek için:

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

Sonraki adımlar

Ek bilgi için lütfen varsayılan olarak 18.04 LTS - Python 3'ten bu yana yapılan diğer temel sistem değişiklikleri bölümüne bakın.