Menggunakan Ekstensi Skrip Kustom Azure Versi 2 dengan komputer virtual Linux
Ekstensi Skrip Kustom Versi 2 mengunduh dan menjalankan skrip pada mesin virtual (VM) Azure. Gunakan ekstensi ini untuk konfigurasi pasca-penyebaran, penginstalan perangkat lunak, atau tugas konfigurasi atau manajemen lainnya. Anda dapat mengunduh skrip dari Azure Storage atau lokasi internet lain yang dapat diakses, atau Anda dapat memberikan skrip atau perintah ke runtime bahasa umum ekstensi.
Ekstensi Skrip Kustom terintegrasi dengan templat Azure Resource Manager. Anda juga dapat menjalankannya dengan menggunakan Azure CLI, Azure PowerShell, atau AZURE Virtual Machines REST API.
Artikel ini menjelaskan cara menggunakan Ekstensi Skrip Kustom dari Azure CLI, dan cara menjalankan ekstensi dengan menggunakan templat Azure Resource Manager. Artikel ini juga memberikan langkah-langkah pemecahan masalah untuk sistem Linux.
Ada dua versi Ekstensi Skrip Kustom:
- Versi 1: Microsoft.OSTCExtensions.CustomScriptForLinux
- Versi 2: Microsoft.Azure.Extensions.CustomScript
Gunakan Versi 2 untuk penyebaran baru dan yang sudah ada. Versi baru dimaksudkan untuk menjadi pengganti drop-in. Migrasi ini semudah mengubah nama dan versi. Anda tidak perlu mengubah konfigurasi ekstensi.
Prasyarat
Distribusi Linux yang didukung
Distribusi | 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+, 9.x+ | 8.6+, 9.x+ |
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+ |
Lokasi skrip
Anda dapat mengatur ekstensi untuk menggunakan info mandat Azure Blob Storage Anda sehingga dapat mengakses Azure Blob Storage. Lokasi skrip dapat berada di mana saja, selama mesin virtual dapat merutekan ke titik akhir tersebut, misalnya GitHub atau server file internal.
Konektivitas internet
Untuk mengunduh skrip secara eksternal, seperti dari GitHub atau Azure Storage, Anda perlu membuka port firewall atau grup keamanan jaringan (NSG) lainnya. Misalnya, jika skrip terletak di Azure Storage, Anda dapat mengizinkan akses dengan menggunakan tag layanan Azure NSG untuk Storage.
Meskipun skrip ada di server lokal, Anda mungkin masih perlu membuka port firewall dan NSG lainnya.
Tips
- Tingkat kegagalan tertinggi untuk ekstensi ini adalah karena kesalahan sintaks dalam skrip. Verifikasi bahwa skrip berjalan tanpa kesalahan. Masukkan lebih banyak pengelogan ke dalam skrip untuk membuatnya lebih mudah menemukan kegagalan.
- Tulis skrip yang idempoten, jadi jika skrip dijalankan lagi beberapa kali secara tidak sengaja, hal tersebut tidak akan menyebabkan perubahan sistem.
- Pastikan skrip tidak memerlukan input pengguna saat dijalankan.
- Skrip diizinkan untuk dijalankan selama 90 menit. Apa pun yang lebih lama akan mengakibatkan kegagalan penyediaan ekstensi.
- Jangan menempatkan reboot di dalam skrip. Memulai ulang akan menyebabkan masalah pada ekstensi lain yang sedang dipasang, dan ekstensi tidak akan berlanjut setelah reboot.
- Jika Anda memiliki skrip yang akan menyebabkan reboot sebelum memasang aplikasi dan menjalanan skrip, jadwalkan reboot dengan menggunakan pekerjaan cron atau menggunakan alat seperti DSC, Chef, atau ekstensi Puppet.
- Tidak disarankan untuk menjalankan skrip yang akan menyebabkan penghentian atau pembaruan Agen Linux Azure. Hal ini dapat membuat ekstensi berada dalam status transisi dan menyebabkan waktu habis.
- Ekstensi hanya akan menjalankan skrip satu kali. Jika Anda ingin menjalankan skrip di setiap startup, Anda dapat menggunakan gambar cloud-init dan menggunakan modul Scripts Per Boot. Atau, Anda dapat menggunakan skrip untuk membuat unit layanan systemd.
- Anda hanya dapat memiliki satu versi ekstensi yang diterapkan ke mesin virtual. Untuk menjalankan skrip kustom kedua, perbarui ekstensi yang ada dengan konfigurasi baru. Atau, Anda dapat menghapus Ekstensi Skrip Kustom dan menerapkannya kembali dengan skrip yang diperbarui
- Jika ingin menjadwalkan kapan skrip akan berjalan, Anda harus menggunakan ekstensi untuk membuat pekerjaan cron.
- Saat skrip berjalan, Anda hanya akan melihat status ekstensi dalam transisi dari portal Microsoft Azure atau CLI. Jika ingin pembaruan status yang lebih sering dari skrip yang sedang berjalan, buat solusi Anda sendiri.
- Ekstensi Skrip Kustom tidak mendukung server proxy secara native. Namun, Anda dapat menggunakan alat transfer file, seperti
Curl
, yang mendukung server proksi dalam skrip Anda. - Waspadai lokasi direktori non-default yang mungkin diandalkan oleh skrip atau perintah Anda. Memiliki logika untuk menangani situasi ini.
Skema ekstensi
Konfigurasi Ekstensi Skrip Kustom menentukan hal-hal seperti lokasi skrip dan perintah yang akan dijalankan. Anda dapat menyimpan konfigurasi ini dalam file konfigurasi, menentukan file pada baris perintah, atau menentukan file dalam templat Azure Resource Manager.
Anda dapat menyimpan data sensitif dalam konfigurasi yang dilindungi, yang dienkripsi dan hanya didekripsi pada VM target. Konfigurasi yang dilindungi berguna saat perintah eksekusi menyertakan rahasia seperti kata sandi. Berikut contohnya:
{
"name": "config-app",
"type": "Extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2019-03-01",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"typeHandlerVersion": "2.1",
"autoUpgradeMinorVersion": true,
"settings": {
"skipDos2Unix":false,
"timestamp":123456789
},
"protectedSettings": {
"commandToExecute": "<command-to-execute>",
"script": "<base64-script-to-execute>",
"storageAccountName": "<storage-account-name>",
"storageAccountKey": "<storage-account-key>",
"fileUris": ["https://.."],
"managedIdentity" : "<managed-identity-identifier>"
}
}
}
Catatan
Properti managedIdentity
tidak boleh digunakan bersama dengan properti storageAccountName
atau storageAccountKey
.
Nilai properti
Nama | Nilai atau contoh | Jenis Data |
---|---|---|
apiVersion | 2019-03-01 |
date |
penerbit | Microsoft.Azure.Extensions |
string |
jenis | CustomScript |
string |
typeHandlerVersion | 2.1 |
int |
fileUris | https://github.com/MyProject/Archive/MyPythonScript.py |
array |
commandToExecute | python MyPythonScript.py \<my-param1> |
string |
skrip | IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo= |
string |
skipDos2Unix | false |
Boolean |
rentang waktu | 123456789 |
bilangan bulat 32-bit |
storageAccountName | examplestorageacct |
string |
storageAccountKey | TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== |
string |
managedIdentity | { } atau { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" } atau { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" } |
Objek JSON |
Detail nilai properti
Properti | Opsional atau diperlukan | Detail |
---|---|---|
apiVersion | Tidak berlaku | Anda dapat menemukan versi API terbaru dengan menggunakan Penjelajah Sumber Daya atau dengan menggunakan perintah az provider list -o json di Azure CLI. |
fileUris | Opsional | URL untuk file yang akan diunduh. |
commandToExecute | Diperlukan jika script tidak diatur |
Skrip titik masuk untuk dijalankan. Gunakan bidang ini sebagai ganti script jika perintah Anda berisi rahasia seperti kata sandi. |
skrip | Diperlukan jika commandToExecute tidak diatur |
Skrip yang dikodekan Base64 dan secara opsional gzip dijalankan oleh /bin/sh . |
skipDos2Unix | Opsional | Atur nilai ini ke false jika Anda ingin melewati konversi dos2unix dari URL fil berbasis skip atau skrip. |
rentang waktu | Opsional | Ubah nilai ini hanya untuk memicu tayangan ulang skrip. Setiap nilai bilangan bulat dapat diterima, asalkan berbeda dari nilai sebelumnya. |
storageAccountName | Opsional | Nama akun penyimpanan. Jika Anda menentukan info masuk penyimpanan, semua nilai fileUris harus merupakan URL untuk blob Azure. |
storageAccountKey | Opsional | Kunci akses akun penyimpanan. |
managedIdentity | Opsional | Identitas terkelola untuk mengunduh file. Nilainya adalah clientId (opsional, string), yang merupakan ID klien dari identitas terkelola, dan objectId (opsional, string), yang merupakan ID objek dari identitas terkelola. |
Pengaturan publik dikirim dalam teks yang jelas ke VM tempat skrip berjalan. Pengaturan yang dilindungi dienkripsi melalui kunci yang hanya diketahui oleh Azure dan VM. Pengaturan disimpan di mesin virtual selagi dikirimkan. Artinya, jika pengaturan dienkripsi, mereka disimpan sebagai dienkripsi di mesin virtual. Sertifikat yang digunakan untuk mendekripsi nilai yang dienkripsi disimpan di mesin virtual. Sertifikat juga digunakan untuk mendekripsi pengaturan, jika perlu, pada waktu proses.
Menggunakan pengaturan publik mungkin berguna untuk penelusuran kesalahan, tetapi kami sangat menyarankan Anda menggunakan pengaturan yang dilindungi.
Anda dapat mengatur nilai berikut di pengaturan publik atau yang dilindungi. Ekstensi menolak konfigurasi apa pun di mana nilai-nilai ini diatur dalam pengaturan publik dan terlindungi.
commandToExecute
script
fileUris
Properti: skipDos2Unix
Versi Ekstensi Skrip Kustom sebelumnya, , Microsoft.OSTCExtensions.CustomScriptForLinux
secara otomatis mengonversi file DOS ke file UNIX dengan menerjemahkan \r\n
ke \n
. Terjemahan ini masih ada, dan aktif secara default. Konversi ini diterapkan ke semua file yang diunduh dari fileUris
atau pengaturan skrip berdasarkan salah satu kriteria berikut:
- Ekstensi ini .sh, .txt, .py, atau .pl. Pengaturan skrip selalu cocok dengan kriteria ini karena diasumsikan sebagai eksekusi skrip dengan /bin/sh. Pengaturan skrip disimpan sebagai script.sh pada VM.
- File dimulai dengan
#!
.
Nilai defaultnya adalah false
, yang berarti konversi dos2unix benar-benar dijalankan. Anda dapat melewati konversi dos2unix dengan mengatur skipDos2Unix
ke true
:
{
"fileUris": ["<url>"],
"commandToExecute": "<command-to-execute>",
"skipDos2Unix": true
}
Properti: skrip
Ekstensi Skrip Kustom mendukung eksekusi skrip yang ditentukan pengguna. Pengaturan skrip menggabungkan commandToExecute
dan fileUris
menjadi satu pengaturan. Alih-alih harus menyiapkan file untuk diunduh dari Azure Storage atau gist GitHub, Anda dapat mengodekan skrip sebagai pengaturan. Anda dapat menggunakan skrip untuk mengganti commandToExecute
dan fileUris
.
Berikut adalah persyaratannya:
- Skrip harus dikodekan sebagai Base64.
- Skrip secara opsional dapat di-gzip.
- Anda dapat menggunakan pengaturan skrip di pengaturan publik atau yang dilindungi.
- Ukuran maksimum data parameter skrip adalah 256 KB. Jika skrip melebihi ukuran ini, skrip tidak berjalan.
Misalnya, skrip berikut disimpan ke file /script.sh/:
#!/bin/sh
echo "Creating directories ..."
mkdir /data
chown user:user /data
mkdir /appdata
chown user:user /appdata
Anda akan membangun pengaturan skrip Ekstensi Skrip Kustom yang benar dengan mengambil output dari perintah berikut:
cat script.sh | base64 -w0
{
"script": "IyEvYmluL3NoCmVjaG8gIlVwZGF0aW5nIHBhY2thZ2VzIC4uLiIKYXB0IHVwZGF0ZQphcHQgdXBncmFkZSAteQo="
}
Dalam kebanyakan kasus, skrip secara opsional dapat dimasukkan ke gzip untuk lebih mengurangi ukuran. Ekstensi Skrip Kustom secara otomatis mendeteksi penggunaan kompresi gzip.
cat script | gzip -9 | base64 -w 0
Ekstensi Skrip Kustom menggunakan algoritma berikut untuk menjalankan skrip:
- Tegaskan bahwa panjang nilai skrip tidak melebihi 256 KB.
- Base64 mendekode nilai skrip.
- Cobalah untuk mengeluarkan nilai yang dikodekan Base64 dari gzip.
- Tulis nilai yang didekodekan dan didekompresi secara opsional ke disk: /var/lib/waagent/custom-script/#/script.sh.
- Jalankan skrip dengan menggunakan
_/bin/sh -c /var/lib/waagent/custom-script/#/script.sh
.
Properti: managedIdentity
Catatan
Properti ini harus ditentukan dalam pengaturan yang dilindungi saja.
Ekstensi Skrip Kustom, versi 2.1 dan yang lebih baru, mendukung identitas terkelola untuk mengunduh file dari URL yang disediakan dalam fileUris
pengaturan. Pendekatan ini memungkinkan Ekstensi Skrip Kustom untuk mengakses blob atau kontainer privat Azure Storage tanpa pengguna harus meneruskan rahasia seperti token tanda tangan akses bersama (SAS) atau kunci akun penyimpanan.
Untuk menggunakan fitur ini, tambahkan identitas yang ditetapkan sistem atau ditetapkan pengguna ke VM atau Virtual Machine Scale Set tempat Ekstensi Skrip Kustom diharapkan berjalan. Kemudian berikan akses identitas terkelola ke kontainer atau blob Azure Storage.
Untuk menggunakan identitas yang ditetapkan sistem pada VM target atau Virtual Machine Scale Set, atur managedidentity
ke objek JSON kosong.
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : {}
}
Untuk menggunakan identitas yang ditetapkan pengguna pada VM target atau Virtual Machine Scale Set, konfigurasikan managedidentity
dengan ID klien atau ID objek identitas terkelola.
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" }
}
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.sh"],
"commandToExecute": "sh script1.sh",
"managedIdentity" : { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" }
}
Catatan
Properti managedIdentity
tidak boleh digunakan bersama dengan properti storageAccountName
atau storageAccountKey
.
Penyebaran templat
Anda dapat menyebarkan ekstensi mesin virtual Azure dengan menggunakan templat Azure Resource Manager. Skema JSON yang dirinci di bagian sebelumnya dapat digunakan dalam templat Azure Resource Manager untuk menjalankan Ekstensi Skrip Kustom selama penyebaran templat. Anda dapat menemukan contoh templat yang menyertakan Ekstensi Skrip Kustom di GitHub.
{
"name": "config-app",
"type": "extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2019-03-01",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"typeHandlerVersion": "2.1",
"autoUpgradeMinorVersion": true,
"settings": {
},
"protectedSettings": {
"commandToExecute": "sh hello.sh <param2>",
"fileUris": ["https://github.com/MyProject/Archive/hello.sh"
]
}
}
}
Catatan
Nama properti ini peka huruf besar/kecil. Untuk menghindari masalah penyebaran, gunakan nama seperti yang ditunjukkan di sini.
Azure CLI
Saat Anda menggunakan Azure CLI untuk menjalankan Ekstensi Skrip Kustom, buat file atau file konfigurasi. Minimal, file konfigurasi harus berisi commandToExecute
. az vm extension set
Perintah mengacu pada file konfigurasi:
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM --name customScript \
--publisher Microsoft.Azure.Extensions \
--protected-settings ./script-config.json
Atau, Anda dapat menentukan pengaturan dalam perintah sebagai string berformat JSON. Pendekatan ini memungkinkan konfigurasi ditentukan selama eksekusi dan tanpa file konfigurasi terpisah.
az vm extension set \
--resource-group exttest \
--vm-name exttest \
--name customScript \
--publisher Microsoft.Azure.Extensions \
--protected-settings '{"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],"commandToExecute": "./config-music.sh"}'
Contoh: Konfigurasi publik dengan file skrip
Contoh ini menggunakan file skrip berikut bernama script-config.json:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"],
"commandToExecute": "./config-music.sh"
}
Buat file skrip dengan menggunakan editor teks pilihan Anda atau dengan menggunakan perintah CLI berikut:
cat <<EOF > script-config.json { "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"], "commandToExecute": "./config-music.sh" } EOF
Jalankan perintah berikut:
az vm extension set \ --resource-group myResourceGroup \ --vm-name myVM --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings ./script-config.json
Contoh: Konfigurasi publik tanpa file skrip
Contoh ini menggunakan konten berformat JSON berikut:
{
"commandToExecute": "apt-get -y update && apt-get install -y apache2"
}
Jalankan perintah berikut:
az vm extension set \
--resource-group tim0329vmRG \
--vm-name tim0329vm --name customScript \
--publisher Microsoft.Azure.Extensions \
--settings '{"commandToExecute": "apt-get -y update && apt-get install -y apache2"}'
Contoh: File konfigurasi publik dan dilindungi
Gunakan file konfigurasi publik untuk menentukan URI file skrip:
{
"fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"]
}
Gunakan file konfigurasi yang dilindungi untuk menentukan perintah yang akan dijalankan:
{
"commandToExecute": "./config-music.sh"
}
Buat file konfigurasi publik dengan menggunakan editor teks pilihan Anda atau dengan menggunakan perintah CLI berikut:
cat <<EOF > script-config.json { "fileUris": ["https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"] } EOF
Buat file konfigurasi yang dilindungi dengan menggunakan editor teks pilihan Anda atau dengan menggunakan perintah CLI berikut:
cat <<EOF > protected-config.json { "commandToExecute": "./config-music.sh" } EOF
Jalankan perintah berikut:
az vm extension set \ --resource-group myResourceGroup \ --vm-name myVM \ --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings ./script-config.json \ --protected-settings ./protected-config.json
Virtual Machine Scale Sets
Jika Anda menyebarkan Ekstensi Skrip Kustom dari portal Azure, Anda tidak memiliki kontrol atas kedaluwarsa token SAS untuk mengakses skrip di akun penyimpanan Anda. Penyebaran awal berfungsi, tetapi ketika token SAS akun penyimpanan kedaluwarsa, operasi penskalaan berikutnya gagal karena Ekstensi Skrip Kustom tidak dapat lagi mengakses akun penyimpanan.
Kami menyarankan agar Anda menggunakan PowerShell, Azure CLI, atau templat Azure Resource Manager saat Anda menyebarkan Ekstensi Skrip Kustom pada Set Skala Komputer Virtual. Dengan cara ini, Anda dapat memilih untuk menggunakan identitas terkelola atau memiliki kontrol langsung atas kedaluwarsa token SAS untuk mengakses skrip di akun penyimpanan Anda selama yang Anda butuhkan.
Pemecahan Masalah
Saat Ekstensi Skrip Kustom berjalan, skrip dibuat atau diunduh ke direktori yang mirip dengan contoh berikut. Output perintah juga disimpan ke dalam direktori ini di stdout
dan file stderr
.
sudo ls -l /var/lib/waagent/custom-script/download/0/
Untuk memecahkan masalah, pertama-tama periksa log Agen Linux dan pastikan bahwa ekstensi berjalan:
sudo cat /var/log/waagent.log
Cari eksekusi ekstensi. Ini terlihat seperti:
2018/04/26 17:47:22.110231 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] [Enable] current handler state is: notinstalled
2018/04/26 17:47:22.306407 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Download, message=Download succeeded, duration=167
2018/04/26 17:47:22.339958 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Initialize extension directory
2018/04/26 17:47:22.368293 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Update settings file: 0.settings
2018/04/26 17:47:22.394482 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Install extension [bin/custom-script-shim install]
2018/04/26 17:47:23.432774 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Install, message=Launch command succeeded: bin/custom-script-shim install, duration=1007
2018/04/26 17:47:23.476151 INFO [Microsoft.Azure.Extensions.customScript-2.0.6] Enable extension [bin/custom-script-shim enable]
2018/04/26 17:47:24.516444 INFO Event: name=Microsoft.Azure.Extensions.customScript, op=Enable, message=Launch command succeeded: bin/custom-sc
Dalam output sebelumnya:
Enable
adalah saat perintah mulai berjalan.Download
berkaitan dengan pengunduhan paket Ekstensi Skrip Kustom dari Azure, bukan file skrip yang ditentukan dalamfileUris
.
Ekstensi Skrip Azure menghasilkan log, yang dapat Anda temukan di sini:
sudo cat /var/log/azure/custom-script/handler.log
Carilah eksekusi individu. Ini terlihat seperti:
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=start
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=pre-check
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="comparing seqnum" path=mrseq
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="seqnum saved" path=mrseq
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="reading configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="read configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validating json schema"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="json schema valid"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="parsing configuration json"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="parsed configuration json"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validating configuration logically"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="validated configuration"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="creating output directory" path=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="created output directory"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 files=1
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 file=0 event="download start"
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 file=0 event="download complete" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executing command" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executing protected commandToExecute" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event="executed command" output=/var/lib/waagent/custom-script/download/0
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=enabled
time=2018-04-26T17:47:23Z version=v2.0.6/git@1008306-clean operation=enable seq=0 event=end
Di sini Anda dapat melihat:
- Perintah
enable
yang memulai log ini. - Pengaturan diteruskan ke ekstensi.
- Ekstensi yang mengunduh file dan hasil tindakan tersebut.
- Perintah sedang dijalankan dan hasilnya.
Anda juga dapat mengambil status eksekusi Ekstensi Skrip Kustom termasuk argumen aktual yang diteruskan sebagai commandToExecute
menggunakan Azure CLI:
az vm extension list -g myResourceGroup --vm-name myVM
Hasilnya akan terlihat seperti teks berikut:
[
{
"autoUpgradeMinorVersion": true,
"forceUpdateTag": null,
"id": "/subscriptions/subscriptionid/resourceGroups/rgname/providers/Microsoft.Compute/virtualMachines/vmname/extensions/customscript",
"resourceGroup": "rgname",
"settings": {
"commandToExecute": "sh script.sh > ",
"fileUris": [
"https://catalogartifact.azureedge.net/publicartifacts/scripts/script.sh",
"https://catalogartifact.azureedge.net/publicartifacts/scripts/script.sh"
]
},
"tags": null,
"type": "Microsoft.Compute/virtualMachines/extensions",
"typeHandlerVersion": "2.0",
"virtualMachineExtensionType": "CustomScript"
},
{
"autoUpgradeMinorVersion": true,
"forceUpdateTag": null,
"id": "/subscriptions/subscriptionid/resourceGroups/rgname/providers/Microsoft.Compute/virtualMachines/vmname/extensions/OmsAgentForLinux",
"instanceView": null,
"location": "eastus",
"name": "OmsAgentForLinux",
"protectedSettings": null,
"provisioningState": "Succeeded",
"publisher": "Microsoft.EnterpriseCloud.Monitoring",
"resourceGroup": "rgname",
"settings": {
"workspaceId": "workspaceid"
},
"tags": null,
"type": "Microsoft.Compute/virtualMachines/extensions",
"typeHandlerVersion": "1.0",
"virtualMachineExtensionType": "OmsAgentForLinux"
}
]
Masalah sintaksis Azure CLI
Azure CLI dapat berjalan di beberapa lingkungan shell, tetapi dengan sedikit variasi format. Jika Anda mendapatkan hasil yang tidak diharapkan dengan perintah Azure CLI, lihat Cara berhasil menggunakan Azure CLI.
Langkah berikutnya
Untuk melihat kode, masalah saat ini, dan versi, lihat custom-script-extension-linux.