Jalankan skrip di mesin virtual Linux Anda dengan menggunakan tindakan Run Command

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan rencanakan yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.

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+
CentOS 7.x+, 8.x+ 7.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.

Daftar perintah

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.

Output skrip Run Command

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.