Aplikasi Mesin Virtual adalah jenis sumber daya di Azure Compute Gallery (sebelumnya dikenal sebagai Shared Image Gallery) yang menyederhanakan manajemen, berbagi, dan distribusi global aplikasi untuk mesin virtual Anda.
Artikel ini mengasumsikan Anda sudah memiliki Azure Compute Gallery. Jika Anda belum memiliki galeri, buatlah terlebih dahulu. Untuk mempelajari selengkapnya, lihat Membuat galeri untuk menyimpan dan berbagi sumber daya.
Pastikan akun penyimpanan memiliki akses tingkat publik atau menggunakan URI SAS dengan hak istimewa baca, karena tingkat pembatasan lainnya gagal penyebaran. Anda dapat menggunakan Penjelajah Penyimpanan untuk membuat URI SAS dengan cepat jika Anda belum memilikinya.
Jika Anda menggunakan PowerShell, gunakan modul Az.Storage versi 3.11.0.
- Buka portal Microsoft Azure, lalu cari dan pilih Azure Compute Gallery.
- Pilih galeri yang ingin Anda gunakan dari daftar.
- Pada halaman galeri Anda, pilih Tambahkan dari bagian atas halaman, lalu pilih Definisi aplikasi Mesin Virtual dari menu dropdown. Halaman Buat definisi aplikasi VM terbuka.
- Di tab Dasar, masukkan nama untuk aplikasi Anda dan pilih apakah aplikasi tersebut untuk VM yang menjalankan Linux atau Windows.
- Pilih tab Opsi penerbitan jika Anda ingin menentukan salah satu pengaturan opsional berikut untuk definisi aplikasi VM Anda:
- Deskripsi definisi aplikasi VM.
- Tanggal akhir masa pakai
- Link ke Eula
- URI Pernyataan Privasi
- URI untuk catatan rilis
- Setelah selesai, pilih Tinjau + buat.
- Saat validasi selesai, pilih Buat untuk menyebarkan definisi.
- Setelah penyebaran selesai, pilih Buka Sumber daya.
- Pada halaman aplikasi, pilih Buat versi aplikasi Mesin Virtual. Halaman Buat Versi Aplikasi VM terbuka.
- Masukkan nomor versi seperti 1.0.0.
- Pilih wilayah tempat Anda mengunggah paket aplikasi.
- Di bagian Paket aplikasi sumber, pilih Jelajahi. Pilih akun penyimpanan, lalu kontainer tempat paket Anda berada. Pilih paket dari daftar lalu pilih Pilih setelah selesai. Selain itu, Anda dapat menempelkan URI SAS di bidang ini jika diinginkan.
- Ketik Instal skrip. Anda juga dapat memberikan Skrip Copot pemasangan dan Skrip pembaruan. Lihat Ringkasan untuk informasi tentang cara membuat skrip.
- Jika Anda memiliki file konfigurasi default yang diunggah ke akun penyimpanan, Anda dapat memilihnya di Konfigurasi default.
- Pilih Kecualikan dari yang terbaru jika Anda tidak ingin versi ini muncul sebagai versi terbaru saat membuat VM.
- Untuk Tanggal akhir masa pakai, pilih tanggal di masa mendatang untuk melacak kapan versi ini akan dihentikan. Versi tersebut tidak akan dihapus secara otomatis, tetapi hanya digunakan untuk pelacakan Anda sendiri.
- Untuk mereplikasi versi ini ke wilayah lain, pilih tab Replikasi dan tambahkan lebih banyak wilayah dan buat perubahan pada jumlah replika per wilayah. Wilayah asli tempat versi Anda dibuat ada dalam daftar dan tidak dapat dihapus.
- Setelah selesai membuat perubahan, pilih Tinjau + buat di bagian bawah halaman.
- Saat validasi menunjukkan lulus, pilih Buat untuk menyebarkan versi aplikasi Mesin Virtual Anda.
Sekarang Anda dapat membuat VM dan menyebarkan aplikasi VM untuk itu menggunakan portal. Cukup buat VM seperti biasa, dan di bawah tab Tingkat Lanjut, pilih Pilih aplikasi VM untuk diinstal.
Pilih aplikasi VM dari daftar, lalu pilih Simpan di bagian bawah halaman.
Jika Anda memiliki lebih dari satu aplikasi VM untuk diinstal, Anda dapat mengatur urutan instalasi untuk setiap aplikasi VM kembali pada tab Tingkat Lanjut.
Anda juga dapat menyebarkan aplikasi VM ke VM yang sedang berjalan. Pilih opsi Ekstensi + aplikasi di bawah Pengaturan di menu sebelah kiri saat melihat detail VM di portal.
Pilih Aplikasi VM lalu pilih Tambahkan aplikasi untuk menambahkan aplikasi VM Anda.
Pilih aplikasi VM dari daftar, lalu pilih Simpan di bagian bawah halaman.
Untuk menampilkan status aplikasi Mesin Virtual, buka tab/pengaturan Ekstensi + aplikasi dan periksa status VMAppExtension:
Untuk menampilkan status aplikasi Mesin Virtual untuk VMSS, buka halaman VMSS, Instans, pilih salah satunya, lalu buka VMAppExtension:
Aplikasi Mesin Virtual memerlukan Azure CLI versi 2.30.0 atau yang lebih baru.
Buat definisi aplikasi VM menggunakan az sig gallery-application create. Dalam contoh ini, kami membuat definisi aplikasi VM bernama myApp untuk VM berbasis Linux.
az sig gallery-application create \
--application-name myApp \
--gallery-name myGallery \
--resource-group myResourceGroup \
--os-type Linux \
--location "East US"
Buat definisi aplikasi VM menggunakan az sig gallery-application version create. Karakter yang diizinkan untuk versi adalah angka dan titik. Angka harus berada dalam rentang bilangan bulat 32-bit. Format: MajorVersion.MinorVersion.Patch.
Ganti nilai parameter dengan milik Anda sendiri.
az sig gallery-application version create \
--version-name 1.0.0 \
--application-name myApp \
--gallery-name myGallery \
--location "East US" \
--resource-group myResourceGroup \
--package-file-link "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" \
--install-command "mv myApp .\myApp\myApp" \
--remove-command "rm .\myApp\myApp" \
--update-command "mv myApp .\myApp\myApp" \
--default-configuration-file-link "https://<storage account name>.blob.core.windows.net/<container name>/<filename>"\
Set aplikasi VM ke VM yang ada menggunakan set aplikasi az vm dan ganti nilai parameter dengan parameter Anda sendiri.
az vm application set \
--resource-group myResourceGroup \
--name myVM \
--app-version-ids /subscriptions/{subID}/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 \
--treat-deployment-as-failure true
Untuk mengatur beberapa aplikasi pada Mesin Virtual:
az vm application set \
--resource-group myResourceGroup \
--name myVM \
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp2/versions/1.0.1 \
--treat-deployment-as-failure true true
Untuk menambahkan aplikasi ke VMSS, gunakan set aplikasi az vmss:
az vmss application set \
--resource-group myResourceGroup \
--name myVmss \
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 \
--treat-deployment-as-failure true
Untuk menambahkan beberapa aplikasi ke VMSS:
az vmss application set \
--resource-group myResourceGroup \
--name myVmss
--app-version-ids /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp/versions/1.0.0 /subscriptions/{subId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/galleries/myGallery/applications/myApp2/versions/1.0.0 \
--treat-deployment-as-failure true
Untuk memverifikasi status penyebaran Mesin Virtual aplikasi, gunakan az vm get-instance-view:
az vm get-instance-view -g myResourceGroup -n myVM --query "instanceView.extensions[?name == 'VMAppExtension']"
Untuk memverifikasi status penyebaran VMSS aplikasi, gunakan az vmss get-instance-view:
az vmss get-instance-view --ids (az vmss list-instances -g myResourceGroup -n myVmss --query "[*].id" -o tsv) --query "[*].extensions[?name == 'VMAppExtension']"
Catatan
Perintah status penyebaran VMSS di atas tidak mencantumkan ID instans dengan hasilnya. Untuk menampilkan ID instans dengan status ekstensi di setiap instans, diperlukan beberapa skrip tambahan. Lihat contoh VMSS CLI di bawah ini yang berisi sintaks PowerShell:
$ids = az vmss list-instances -g myResourceGroup -n myVmss --query "[*].{id: id, instanceId: instanceId}" | ConvertFrom-Json
$ids | Foreach-Object {
$iid = $_.instanceId
Write-Output "instanceId: $iid"
az vmss get-instance-view --ids $_.id --query "extensions[?name == 'VMAppExtension']"
}
Buat definisi aplikasi VM menggunakan New-AzGalleryApplication
. Dalam contoh ini, kami membuat aplikasi Linux bernama myApp di myGallery Azure Compute Gallery, di grup sumber daya myGallery dan saya telah memberikan deskripsi singkat tentang aplikasi VM yang saya gunakan sendiri. Ganti nilai sesuai kebutuhan.
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
New-AzGalleryApplication `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-Location "East US" `
-Name $applicationName `
-SupportedOSType Linux `
-Description "Backend Linux application for finance."
Buat versi aplikasi Anda menggunakan New-AzGalleryApplicationVersion
. Karakter yang diizinkan untuk versi adalah angka dan titik. Angka harus berada dalam rentang bilangan bulat 32-bit. Format: MajorVersion.MinorVersion.Patch.
Dalam contoh ini, kami membuat nomor versi 1.0.0. Ganti nilai variabel sesuai kebutuhan.
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
$version = "1.0.0"
New-AzGalleryApplicationVersion `
-ResourceGroupName $rgName `
-GalleryName $galleryName `
-GalleryApplicationName $applicationName `
-Name $version `
-PackageFileLink "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" `
-DefaultConfigFileLink "https://<storage account name>.blob.core.windows.net/<container name>/<filename>" `
-Location "East US" `
-Install "mv myApp .\myApp\myApp" `
-Remove "rm .\myApp\myApp" `
Untuk menambahkan aplikasi ke VM yang ada, dapatkan versi aplikasi dan gunakan untuk mendapatkan ID versi aplikasi VM. Gunakan ID untuk menambahkan aplikasi ke konfigurasi VM.
$galleryName = "myGallery"
$rgName = "myResourceGroup"
$applicationName = "myApp"
$version = "1.0.0"
$vmName = "myVM"
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmName
$appVersion = Get-AzGalleryApplicationVersion `
-GalleryApplicationName $applicationName `
-GalleryName $galleryName `
-Name $version `
-ResourceGroupName $rgName
$packageId = $appVersion.Id
$app = New-AzVmGalleryApplication -PackageReferenceId $packageId
Add-AzVmGalleryApplication -VM $vm -GalleryApplication $app -TreatFailureAsDeploymentFailure true
Update-AzVM -ResourceGroupName $rgName -VM $vm
Untuk menambahkan aplikasi ke VMSS:
$vmss = Get-AzVmss -ResourceGroupName $rgname -Name $vmssName
$appVersion = Get-AzGalleryApplicationVersion `
-GalleryApplicationName $applicationName `
-GalleryName $galleryName `
-Name $version `
-ResourceGroupName $rgName
$packageId = $appVersion.Id
$app = New-AzVmssGalleryApplication -PackageReferenceId $packageId
Add-AzVmssGalleryApplication -VirtualMachineScaleSetVM $vmss.VirtualMachineProfile -GalleryApplication $app
Update-AzVmss -ResourceGroupName $rgName -VirtualMachineScaleSet $vmss -VMScaleSetName $vmssName
Verifikasi aplikasi berhasil:
$rgName = "myResourceGroup"
$vmName = "myVM"
$result = Get-AzVM -ResourceGroupName $rgName -VMName $vmName -Status
$result.Extensions | Where-Object {$_.Name -eq "VMAppExtension"} | ConvertTo-Json
Untuk memverifikasi VMSS:
$rgName = "myResourceGroup"
$vmssName = "myVMss"
$result = Get-AzVmssVM -ResourceGroupName $rgName -VMScaleSetName $vmssName -InstanceView
$resultSummary = New-Object System.Collections.ArrayList
$result | ForEach-Object {
$res = @{ instanceId = $_.InstanceId; vmappStatus = $_.InstanceView.Extensions | Where-Object {$_.Name -eq "VMAppExtension"}}
$resultSummary.Add($res) | Out-Null
}
$resultSummary | ConvertTo-Json -Depth 5
Buat definisi aplikasi.
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/galleries/\<**galleryName**\>/applications/\<**applicationName**\>?api-version=2019-03-01
{
"location": "West US",
"name": "myApp",
"properties": {
"supportedOSType": "Windows | Linux",
"endOfLifeDate": "2020-01-01"
}
}
Nama Bidang |
Deskripsi |
Batasan |
nama |
Nama unik untuk Aplikasi VM di dalam galeri |
Panjang maksimum adalah 117 karakter. Karakter yang diizinkan adalah huruf besar atau huruf kecil, digit, tanda hubung (-), titik (.), garis bawah (_). Nama tidak diizinkan untuk diakhiri dengan titik (.). |
supportedOSType |
Apakah ini aplikasi Windows atau Linux |
Windows atau Linux |
endOfLifeDate |
Tanggal akhir kehidupan di masa depan untuk aplikasi. Perhatikan bahwa ini hanya untuk referensi, dan tidak harus diberlakukan. |
Tanggal mendatang yang valid |
Buat versi aplikasi VM.
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/galleries/\<**galleryName**\>/applications/\<**applicationName**\>/versions/\<**versionName**\>?api-version=2019-03-01
{
"location": "$location",
"properties": {
"publishingProfile": {
"source": {
"mediaLink": "$mediaLink",
"defaultConfigurationLink": "$configLink"
},
"manageActions": {
"install": "echo installed",
"remove": "echo removed",
"update": "echo update"
},
"targetRegions": [
{
"name": "$location1",
"regionalReplicaCount": 1
},
{ "name": "$location1" }
]
},
"endofLifeDate": "datetime",
"excludeFromLatest": "true | false"
}
}
Nama Bidang |
Deskripsi |
Batasan |
lokasi |
Lokasi sumber untuk versi Aplikasi VM |
Wilayah Azure yang valid |
mediaLink |
URL yang berisi paket versi aplikasi |
Url penyimpanan yang valid dan sudah ada |
defaultConfigurationLink |
Opsional. Url yang berisi konfigurasi default, yang mungkin diganti pada waktu penyebaran. |
Url penyimpanan yang valid dan sudah ada |
Instal |
Perintah untuk menginstal aplikasi |
Perintah yang valid untuk OS yang diberikan |
Hapus |
Perintah untuk menghapus aplikasi |
Perintah yang valid untuk OS yang diberikan |
Pembaruan |
Opsional. Perintah untuk memperbarui aplikasi. Jika tidak ditentukan dan pembaruan diperlukan, versi lama dihapus dan yang baru diinstal. |
Perintah yang valid untuk OS yang diberikan |
targetRegions/nama |
Nama wilayah yang harus ditiru |
Memvalidasi wilayah Azure |
targetRegions/regionalReplicaCount |
Opsional. Jumlah replika di wilayah ini untuk dibuat. Default ke 1. |
Integer antara 1 dan 3 inklusif |
endOfLifeDate |
Tanggal akhir mendatang untuk versi aplikasi. Perhatikan bahwa ini hanya untuk referensi pelanggan, dan tidak harus diberlakukan. |
Tanggal mendatang yang valid |
excludeFromLatest |
Jika ditentukan, versi ini tidak akan dianggap sebagai yang terbaru. |
Benar atau salah |
Untuk menambahkan versi aplikasi VM ke VM, lakukan PUT pada VM.
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>?api-version=2019-03-01
{
"properties": {
"applicationProfile": {
"galleryApplications": [
{
"order": 1,
"packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version}",
"configurationReference": "{path to configuration storage blob}",
"treatFailureAsDeploymentFailure": false
}
]
}
},
"name": "{vm name}",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
"location": "{vm location}"
}
Untuk menerapkan aplikasi VM ke set skala seragam:
PUT
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/
virtualMachineScaleSets/\<**VMSSName**\>?api-version=2019-03-01
{
"properties": {
"virtualMachineProfile": {
"applicationProfile": {
"galleryApplications": [
{
"order": 1,
"packageReferenceId": "/subscriptions/{subscriptionId}/resourceGroups/<resource group>/providers/Microsoft.Compute/galleries/{gallery name}/applications/{application name}/versions/{version}",
"configurationReference": "{path to configuration storage blob}",
"treatFailureAsDeploymentFailure": false
}
]
}
}
},
"name": "{vm name}",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resource group}/providers/Microsoft.Compute/virtualMachines/{vm name}",
"location": "{vm location}"
}
Nama Bidang |
Deskripsi |
Batasan |
urutan |
Opsional. Urutan di mana aplikasi harus digunakan. Lihat bawah. |
Memvalidasi integer |
packageReferenceId |
Referensi versi aplikasi galeri |
Referensi versi aplikasi yang valid |
configurationReference |
Opsional. Url lengkap blob penyimpanan yang berisi konfigurasi untuk penyebaran ini. Ini akan mengesampingkan nilai apa pun yang disediakan untuk Konfigurasi default sebelumnya. |
Referensi blob penyimpanan yang valid |
treatFailureAsDeploymentFailure |
Opsional. Status provisi untuk Aplikasi Mesin Virtual. Ketika diatur ke false, status provisi akan selalu menampilkan 'berhasil' terlepas dari kegagalan penyebaran aplikasi. |
Benar atau Salah |
Bidang urutan dapat digunakan untuk menentukan dependensi antara aplikasi. Aturan untuk urutan adalah sebagai berikut:
Case |
Arti Instal |
Arti Kegagalan |
Tidak ada urutan yang ditentukan |
Aplikasi yang tidak teratur diinstal setelah aplikasi yang diurutkan. Tidak ada jaminan urutan penginstalan di antara aplikasi yang tidak diurutkan. |
Kegagalan instalasi aplikasi lain, baik itu dipesan atau tidak teratur tidak mempengaruhi instalasi aplikasi yang tidak teratur. |
Nilai urutan duplikat |
Aplikasi diinstal dalam urutan apa pun dibandingkan dengan aplikasi lain dengan urutan yang sama. Semua aplikasi dengan urutan yang sama akan diinstal setelah mereka yang memiliki urutan lebih rendah dan sebelum mereka yang memiliki urutan lebih tinggi. |
Jika aplikasi sebelumnya dengan urutan yang lebih rendah gagal diinstal, tidak ada aplikasi dengan penginstalan pesanan ini. Jika ada aplikasi dengan pesanan ini yang gagal diinstal, tidak ada aplikasi dengan penginstalan pesanan yang lebih tinggi. |
Meningkatkan urutan |
Aplikasi akan diinstal setelah aplikasi dengan urutan yang lebih rendah dan sebelum aplikasi yang memiliki urutan lebih tinggi. |
Jika aplikasi sebelumnya dengan urutan yang lebih rendah gagal diinstal, aplikasi ini tidak akan diinstal. Jika aplikasi ini gagal diinstal, tidak ada aplikasi dengan penginstalan pesanan yang lebih tinggi. |
Respons mencakup model VM lengkap. Berikut ini adalah bagian-bagian yang relevan.
{
"name": "{vm name}",
"id": "{vm id}",
"type": "Microsoft.Compute/virtualMachines",
"location": "{vm location}",
"properties": {
"applicationProfile": {
"galleryApplications": ""
},
"provisioningState": "Updating"
},
"resources": [
{
"name": "VMAppExtension",
"id": "{extension id}",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "centraluseuap",
"properties": "@{autoUpgradeMinorVersion=True; forceUpdateTag=7c4223fc-f4ea-4179-ada8-c8a85a1399f5; provisioningState=Creating; publisher=Microsoft.CPlat.Core; type=VMApplicationManagerLinux; typeHandlerVersion=1.0; settings=}"
}
]
}
Jika aplikasi VM belum diinstal pada VM, nilainya akan kosong.
Untuk mendapatkan hasil tampilan instans Mesin Virtual:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>/instanceView?api-version=2019-03-01
Hasilnya terlihat seperti ini:
{
...
"extensions" [
...
{
"name": "VMAppExtension",
"type": "Microsoft.CPlat.Core.VMApplicationManagerLinux",
"typeHandlerVersion": "1.0.9",
"statuses": [
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"message": "Enable succeeded: {\n \"CurrentState\": [\n {\n \"applicationName\": \"doNothingLinux\",\n \"version\": \"1.0.0\",\n \"result\": \"Install SUCCESS\"\n },\n {
\n \"applicationName\": \"badapplinux\",\n \"version\": \"1.0.0\",\n \"result\": \"Install FAILED Error executing command \u0027exit 1\u0027: command terminated with exit status=1\"\n }\n ],\n \"ActionsPerformed\": []\n}
"
}
]
}
...
]
}
Status Aplikasi VM berada dalam pesan status hasil ekstensi Aplikasi VM dalam tampilan instans.
Untuk mendapatkan status untuk Aplikasi VMSS:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/ virtualMachineScaleSets/\<**VMSSName**\>/virtualMachines/<**instanceId**>/instanceView?api-version=2019-03-01
Outputnya mirip dengan contoh VM sebelumnya.