Masalah saat menggunakan ekstensi VM di sistem Azure Virtual Machines Linux yang mengaktifkan Python 3
Catatan
Microsoft mendorong pengguna untuk mengadopsi Python 3.x dalam sistem mereka kecuali beban kerja Anda memerlukan dukungan Python 2.x. Contoh persyaratan ini mungkin mencakup skrip administrasi lama, atau ekstensi seperti Azure Disk Encryption dan Azure Monitor.
Sebelum memasang Python 2.x dalam produksi, pertimbangkan pertanyaan tentang dukungan jangka panjang Python 2.x, terutama kemampuan mereka untuk menerima pembaruan keamanan. Sebagai produk, termasuk beberapa ekstensi yang disebutkan, pembaruan dengan dukungan Python 3.8, Anda harus menghentikan penggunaan Python 2.x.
Beberapa distribusi Linux telah beralih ke Python 3.8 dan menghapus entrypoint warisan /usr/bin/python
untuk semua Python. Transisi ini berdampak pada penyebaran otomatis ekstensi komputer virtual (VM) tertentu yang siap pakai dengan dua kondisi berikut:
- Ekstensi yang masih bertransisi ke dukungan Python 3.x
- Ekstensi yang menggunakan entrypoint warisan
/usr/bin/python
Pengguna distribusi Linux yang telah beralih ke Python 3.x harus memastikan /usr/bin/python
entripoint warisan ada sebelum mencoba untuk menyebarkan ekstensi tersebut ke VM mereka. Jika tidak, penyebaran ekstensi mungkin gagal.
Distribusi Linux yang didukung yang terpengaruh termasuk Ubuntu Server 20.04 LTS dan Ubuntu Pro 20.04 LTS.
Ekstensi VM yang terpengaruh termasuk Azure Disk Encryption, Analitik Log, Akses VM (digunakan untuk Atur Ulang Sandi), dan Diagnostik Tamu (digunakan untuk penghitung kinerja tambahan).
Peningkatan di tempat, seperti peningkatan dari Ubuntu 18.04 LTS ke Ubuntu 20.04 LTS, harus mempertahankan symlink /usr/bin/python
, dan tetap tidak terpengaruh.
Resolusi
Pertimbangkan rekomendasi umum ini sebelum menerapkan ekstensi dalam skenario yang diketahui terpengaruh yang dijelaskan sebelumnya dalam Ringkasan:
Sebelum menyebarkan ekstensi, kembalikan symlink
/usr/bin/python
dengan menggunakan metode yang disediakan vendor distribusi Linux.- Misalnya, untuk Python 2.7, gunakan:
sudo apt update && sudo apt install python-is-python2
- Misalnya, untuk Python 2.7, gunakan:
Rekomendasi ini untuk pelanggan Azure dan tidak didukung di Azure Stack:
- Jika Anda telah menyebarkan instans yang menunjukkan masalah ini, gunakan fungsi perintah Jalankan di bilah VM untuk menjalankan perintah yang disebutkan di atas. Ekstensi perintah Jalankan itu sendiri tidak terpengaruh oleh transisi ke Python 3.8.
Jika Anda menyebarkan instans baru, dan perlu mengatur ekstensi pada waktu provisi, gunakan data pengguna cloud-init untuk menginstal paket yang disebutkan di atas.
Misalnya, untuk 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
Jika administrator kebijakan organisasi menentukan bahwa ekstensi tidak boleh digunakan di VM, Anda dapat menonaktifkan dukungan ekstensi pada waktu penyediaan:
REST API
Untuk menonaktifkan dan mengaktifkan ekstensi saat Anda dapat menerapkan VM dengan properti ini:
"osProfile": { "allowExtensionOperations": false },
Langkah berikutnya
Silakan lihat Perubahan sistem dasar lainnya sejak 18.04 LTS - Python 3 secara default untuk informasi tambahan.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk