Jalankan skrip di mesin virtual Linux Anda dengan menggunakan tindakan Run Command
Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel
Fitur Run Command menggunakan agen komputer virtual (VM) untuk menjalankan skrip shell dalam Azure Linux VM. Anda dapat menggunakan skrip ini untuk manajemen komputer atau aplikasi umum. Skrip tersebut dapat membantu Anda dengan cepat mendiagnosis dan memulihkan akses komputer virtual dan masalah jaringan, dan membuat komputer virtual kembali ke kondisi yang baik.
Keuntungan
Anda dapat mengakses komputer virtual Anda dengan berbagai cara. Run Command dapat menjalankan skrip pada komputer virtual Anda dari jarak jauh dengan menggunakan agen komputer virtual. Anda menggunakan Run Command melalui portal Azure, REST API, atau Azure CLI untuk komputer virtual Linux.
Kemampuan ini berguna dalam semua skenario di mana Anda ingin menjalankan skrip di dalam komputer virtual. Ini adalah satu-satunya cara untuk memecahkan masalah dan memulihkan mesin virtual yang tidak membuka port RDP atau SSH karena konfigurasi pengguna jaringan atau administratif.
Prasyarat
Linux Distro didukung
Linux Distro | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
Debian | 10+ | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Tidak Didukung |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Tidak Didukung |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+ | 8.6+, 9.0+ |
Rocky Linux | 9.x+ | 9.x+ |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu | 18.04+, 20.04+, 22.04+ | 20.04+, 22.04+ |
Batasan
Batasan berikut berlaku saat Anda menggunakan Run Command:
- Output dibatasi hingga 4.096 byte terakhir.
- Waktu minimum untuk menjalankan skrip adalah sekitar 20 detik.
- Skrip berjalan secara default sebagai pengguna yang ditinggikan di Linux.
- Anda dapat menjalankan satu skrip saat ini.
- Skrip yang meminta informasi (mode interaktif) tidak didukung.
- Anda tidak dapat membatalkan skrip yang sedang berjalan.
- Waktu maksimum yang dapat dijalankan skrip adalah 90 menit. Setelah itu, skrip akan kehabisan waktu.
- Konektivitas keluar dari VM diperlukan untuk mengembalikan hasil skrip.
Catatan
Agar berfungsi dengan benar, Jalankan Perintah memerlukan konektivitas (port 443) ke alamat IP publik Azure. Jika ekstensi tidak memiliki akses ke titik akhir ini, skrip mungkin berhasil berjalan tetapi tidak mengembalikan hasilnya. Jika Anda memblokir lalu lintas di komputer virtual, Anda dapat menggunakan tag layanan untuk mengizinkan lalu lintas ke alamat IP publik Azure dengan menggunakan tag AzureCloud
.
Perintah yang tersedia
Tabel ini menunjukkan daftar perintah yang tersedia untuk komputer virtual Linux. Anda dapat menggunakan perintah RunShellScript untuk menjalankan skrip kustom apa pun yang Anda inginkan. Saat Anda menggunakan Azure CLI atau PowerShell untuk menjalankan perintah, nilai yang Anda berikan untuk parameter --command-id
atau -CommandId
harus salah satu dari nilai yang tercantum berikut ini. Saat Anda menentukan nilai yang bukan perintah yang tersedia, Anda menerima kesalahan ini:
The entity was not found in this Azure location
Nama | Keterangan |
---|---|
RunShellScript | Menjalankan skrip shell Linux. |
ifconfig | Mendapatkan konfigurasi semua antarmuka jaringan. |
Azure CLI
Contoh berikut menggunakan perintah az vm run-command untuk menjalankan skrip shell pada komputer virtual Azure Linux.
az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"
Catatan
Untuk menjalankan perintah sebagai pengguna lain, masukkan sudo -u
untuk menentukan akun pengguna.
Portal Azure
Buka VM di portal Azure dan pilih Jalankan perintah di menu sebelah kiri, pada bagian Operasi. Anda melihat daftar perintah yang tersedia untuk dijalankan pada komputer virtual.
Pilih perintah untuk dijalankan. Beberapa perintah mungkin memiliki parameter input opsional atau wajib. Untuk perintah tersebut, parameter disajikan sebagai bidang teks bagi Anda untuk memberikan nilai input. Untuk setiap perintah, Anda dapat melihat skrip yang sedang dijalankan dengan memperluas Lihat skrip. RunShellScript berbeda dari perintah lainnya, karena memungkinkan Anda untuk menyediakan skrip khusus Anda sendiri.
Catatan
Perintah bawaan tidak dapat diedit.
Setelah Anda memilih perintah, pilih Jalankan untuk menjalankan skrip. Setelah skrip selesai, ia mengembalikan output dan kesalahan apa pun di jendela output. Tangkapan layar berikut menunjukkan contoh output dari menjalankan perintah ifconfig.
PowerShell
Contoh berikut menggunakan cmdlet Invoke-AzVMRunCommand untuk menjalankan skrip PowerShell di komputer virtual Azure. Cmdlet meminta skrip yang direferensikan dalam parameter -ScriptPath
menjadi lokal di mana cmdlet dijalankan.
Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}
Membatasi akses ke Run Command
Mencantumkan perintah jalankan atau memperlihatkan detail perintah memerlukan Microsoft.Compute/locations/runCommands/read
izin pada tingkat Langganan. Peran Pembaca bawaan dan tingkat yang lebih tinggi memiliki izin ini.
Menjalankan perintah memerlukan izin Microsoft.Compute/virtualMachines/runCommands/write
. Peran Kontributor Komputer Virtual dan tingkat yang lebih tinggi memiliki izin ini.
Anda dapat menggunakan salah satu peran bawaan atau membuat peran kustom untuk menggunakan Run Command.
Pemecahan masalah Action Run Command Linux
Saat memecahkan masalah perintah eksekusi tindakan untuk lingkungan Linux, lihat file log handler yang biasanya terletak di direktori berikut: /var/log/azure/run-command-handler/handler.log
untuk detail lebih lanjut.
Masalah umum
Log perintah eksekusi tindakan Linux memiliki beberapa perbedaan penting dibandingkan dengan perintah eksekusi tindakan log Windows:
- Nomor urut dilaporkan dengan setiap baris log sebagai 'seq=#'
- Tidak akan ada baris yang berisi
Awaiting completion...
karena ini akan dalam tindakan menjalankan perintah Windows saja. - Baris
Command existed with code: #
ini juga hanya ada dalam perintah eksekusi tindakan pengelogan Windows.
Penghapusan Perintah Eksekusi Tindakan
Jika perlu menghapus ekstensi Linux perintah eksekusi tindakan Anda, lihat langkah-langkah di bawah ini untuk Azure PowerShell dan CLI:
Ganti rgname dan vmname dengan nama grup sumber daya dan nama komputer virtual yang relevan dalam contoh penghapusan berikut.
Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname
Catatan
Saat Anda menerapkan Perintah Jalankan lagi, ekstensi akan diinstal secara otomatis. Anda dapat menggunakan perintah penghapusan ekstensi untuk memecahkan masalah apa pun yang terkait dengan ekstensi.
Langkah berikutnya
Untuk mempelajari tentang cara lain menjalankan skrip dan perintah dari jarak jauh di komputer virtual Anda, lihat Menjalankan skrip di komputer virtual Linux Anda.