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:
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
- Örneğin, Python 2.7 için şunu kullanın:
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.
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
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin