VM Uygulamaları, Azure İşlem Galerisi'nde (eski adıyla Paylaşılan Görüntü Galerisi) sanal makineleriniz için uygulamaların yönetimini, paylaşımını ve genel dağıtımını kolaylaştıran bir kaynak türüdür.
Bu makalede zaten bir Azure İşlem Galerisi'niz olduğu varsayılır. Henüz bir galeriniz yoksa, önce bir galeri oluşturun. Daha fazla bilgi edinmek için bkz . Kaynakları depolamak ve paylaşmak için galeri oluşturma.
Depolama hesabının genel düzeyde erişime sahip olduğundan emin olun veya diğer kısıtlama düzeyleri dağıtımlarda başarısız olduğundan okuma ayrıcalığına sahip bir SAS URI'sini kullanın. Henüz bir SAS URI'niz yoksa hızla bir SAS URI'sini oluşturmak için Depolama Gezgini kullanabilirsiniz.
PowerShell kullanıyorsanız Az.Storage modülünün 3.11.0 sürümünü kullanıyor olmanız gerekir.
VM uygulama tanımınızı ve sürümünüzü oluşturmak için aşağıdan bir seçenek belirleyin:
- Azure portalına gidin, ardından Azure İşlem Galerisi'ni arayın ve seçin.
- Listeden kullanmak istediğiniz galeriyi seçin.
- Galerinizin sayfasında, sayfanın üst kısmından Ekle'yi seçin ve ardından açılan listeden VM uygulama tanımı'nı seçin. VM uygulama tanımı oluştur sayfası açılır.
- Temel Bilgiler sekmesinde, uygulamanız için bir ad girin ve uygulamanın Linux veya Windows çalıştıran VM'ler için olup olmadığını seçin.
- VM uygulama tanımınız için aşağıdaki isteğe bağlı ayarlardan birini belirtmek istiyorsanız Yayımlama seçenekleri sekmesini seçin:
- VM uygulama tanımının açıklaması.
- Kullanım süresi sonu tarihi
- Eula bağlantısı
- Gizlilik bildiriminin URI'sini
- Sürüm notları için URI
- İşiniz bittiğinde Gözden geçir ve oluştur'u seçin.
- Doğrulama tamamlandığında, tanımın dağıtılmalarını sağlamak için Oluştur'u seçin.
- Dağıtım tamamlandıktan sonra Kaynağa git'i seçin.
- Uygulamanın sayfasında VM uygulaması sürümü oluştur'u seçin. VM Uygulama Sürümü Oluştur sayfası açılır.
- 1.0.0 gibi bir sürüm numarası girin.
- Uygulama paketinizi karşıya yüklediğiniz bölgeyi seçin.
- Kaynak uygulama paketi'nin altında Gözat'ı seçin. Depolama hesabını ve ardından paketinizin bulunduğu kapsayıcıyı seçin. Listeden paketi seçin ve işiniz bittiğinde seç'i seçin. Alternatif olarak, tercih ederseniz SAS URI'sini bu alana yapıştırabilirsiniz.
- Yükleme betiğini yazın. Ayrıca Kaldır betiğini ve Güncelleştirme betiğini de sağlayabilirsiniz. Betikleri oluşturma hakkında bilgi için bkz. Genel Bakış .
- Depolama hesabına yüklenmiş varsayılan bir yapılandırma dosyanız varsa, bunu Varsayılan yapılandırma'da seçebilirsiniz.
- Vm oluştururken bu sürümün en son sürüm olarak görünmesini istemiyorsanız En son sürümden dışla'yı seçin.
- Kullanım süresi sonu tarihi için, bu sürümün ne zaman kullanımdan kaldırılacağına karar vermek için gelecekte bir tarih seçin. Otomatik olarak silinmez veya kaldırılmaz, yalnızca kendi izlemeniz içindir.
- Bu sürümü başka bölgelere çoğaltmak için Çoğaltma sekmesini seçin ve daha fazla bölge ekleyin ve bölge başına çoğaltma sayısında değişiklik yapın. Sürümünüzün oluşturulduğu özgün bölge listede olmalıdır ve kaldırılamaz.
- Değişiklik yapmayı bitirdiğinizde, sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin.
- Doğrulama başarılı olarak gösterildiğinde, VM uygulama sürümünüzü dağıtmak için Oluştur'u seçin.
Artık portalı kullanarak bir VM oluşturabilir ve VM uygulamasını buna dağıtabilirsiniz. VM'yi her zamanki gibi oluşturun ve Gelişmiş sekmesinin altında Yüklenecek VM uygulamasını seçin'i seçin.
Listeden VM uygulamasını seçin ve ardından sayfanın alt kısmındaki Kaydet'i seçin.
Yüklenecek birden fazla VM uygulamanız varsa, Gelişmiş sekmesinde her VM uygulaması için yükleme sırasını ayarlayabilirsiniz.
Vm uygulamasını şu anda çalışan VM'lere de dağıtabilirsiniz. Portalda VM ayrıntılarını görüntülerken soldaki menüde Ayarlar'ın altında Uzantılar + uygulamalar seçeneğini belirleyin.
VM uygulamaları'nı ve ardından Uygulama ekle'yi seçerek VM uygulamanızı ekleyin.
Listeden VM uygulamasını seçin ve ardından sayfanın alt kısmındaki Kaydet'i seçin.
VM uygulamasının durumunu göstermek için Uzantılar + uygulamalar sekmesine/ayarlarına gidin ve VMAppExtension durumunu denetleyin:
VMSS'nin VM uygulama durumunu göstermek için VMSS sayfasına gidin, Örnekler'e gidin, bunlardan birini seçin ve ardından VMAppExtension'a gidin:
VM uygulamaları için Azure CLI sürüm 2.30.0 veya üzeri gerekir.
az sig gallery-application create komutunu kullanarak VM uygulama tanımını oluşturun. Bu örnekte, Linux tabanlı VM'ler için myApp adlı bir VM uygulama tanımı oluşturuyoruz.
az sig gallery-application create \
--application-name myApp \
--gallery-name myGallery \
--resource-group myResourceGroup \
--os-type Linux \
--location "East US"
az sig gallery-application version create komutunu kullanarak bir VM uygulama sürümü oluşturun. Sürüm için izin verilen karakterler sayı ve noktadır. Sayılar 32 bitlik bir tamsayı aralığında olmalıdır. Biçim: MajorVersion.MinorVersion.Düzeltme eki.
Parametrelerin değerlerini kendi değerlerinizle değiştirin.
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>"\
az vm application set komutunu kullanarak vm uygulamasını mevcut bir VM'ye ayarlayın ve parametrelerin değerlerini kendi vm'nizle değiştirin.
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
Vm'de birden çok uygulama ayarlamak için:
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
VMSS'ye uygulama eklemek için az vmss application set komutunu kullanın:
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
VMSS'ye birden çok uygulama eklemek için:
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
Uygulama VM dağıtım durumunu doğrulamak için az vm get-instance-view komutunu kullanın:
az vm get-instance-view -g myResourceGroup -n myVM --query "instanceView.extensions[?name == 'VMAppExtension']"
Uygulama VMSS dağıtım durumunu doğrulamak için az vmss get-instance-view komutunu kullanın:
az vmss get-instance-view --ids (az vmss list-instances -g myResourceGroup -n myVmss --query "[*].id" -o tsv) --query "[*].extensions[?name == 'VMAppExtension']"
Not
Yukarıdaki VMSS dağıtım durumu komutu, sonuçla birlikte örnek kimliğini listelemez. Her örnekte uzantının durumuyla örnek kimliğini göstermek için bazı ek betikler gereklidir. PowerShell söz dizimini içeren aşağıdaki VMSS CLI örneğine bakın:
$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']"
}
kullanarak New-AzGalleryApplication
VM uygulama tanımını oluşturun. Bu örnekte myGallery Azure İşlem Galerisi'nde myGallery kaynak grubunda myApp adlı bir Linux uygulaması oluşturuyoruz ve vm uygulamasının kısa bir açıklamasını kendi kullanımım için verdim. Değerleri gerektiği gibi değiştirin.
$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."
kullanarak New-AzGalleryApplicationVersion
uygulamanızın bir sürümünü oluşturun. Sürüm için izin verilen karakterler sayı ve noktadır. Sayılar 32 bitlik bir tamsayı aralığında olmalıdır. Biçim: MajorVersion.MinorVersion.Düzeltme eki.
Bu örnekte 1.0.0 sürüm numarası oluşturacağız. Değişkenlerin değerlerini gerektiği gibi değiştirin.
$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" `
Uygulamayı mevcut bir VM'ye eklemek için uygulama sürümünü alın ve bunu kullanarak VM uygulama sürümü kimliğini alın. Uygulamayı VM yapılandırmasına eklemek için kimliğini kullanın.
$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
Uygulamayı VMSS'ye eklemek için:
$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
Uygulamanın başarılı olduğunu doğrulayın:
$rgName = "myResourceGroup"
$vmName = "myVM"
$result = Get-AzVM -ResourceGroupName $rgName -VMName $vmName -Status
$result.Extensions | Where-Object {$_.Name -eq "VMAppExtension"} | ConvertTo-Json
VMSS'yi doğrulamak için:
$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
Uygulama tanımını oluşturun.
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"
}
}
Alan Adı |
Açıklama |
Sınırlamalar |
Adı |
Galerideki VM Uygulaması için benzersiz bir ad |
En fazla 117 karakter uzunluğunda. İzin verilen karakterler büyük veya küçük harf, rakam, kısa çizgi(-), nokta (.), alt çizgi (_) şeklindedir. Adların nokta(.) ile bitmesi yasaktır. |
supportedOSType |
Bunun bir Windows veya Linux uygulaması olup olmadığı |
"Windows" veya "Linux" |
endOfLifeDate |
Uygulama için gelecekteki bir kullanım ömrü sonu tarihi. Bunun yalnızca başvuru amaçlı olduğunu ve uygulanmamış olduğunu unutmayın. |
Geçerli gelecek tarih |
BIR VM uygulama sürümü oluşturun.
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"
}
}
Alan Adı |
Açıklama |
Sınırlamalar |
konum |
VM Uygulaması sürümü için kaynak konum |
Geçerli Azure bölgesi |
mediaLink |
Uygulama sürümü paketini içeren URL |
Geçerli ve mevcut depolama url'si |
defaultConfigurationLink |
isteğe bağlı. Dağıtım zamanında geçersiz kılınabilecek varsayılan yapılandırmayı içeren URL. |
Geçerli ve mevcut depolama url'si |
Yükleme |
Uygulamayı yüklemek için komut |
Verilen işletim sistemi için geçerli komut |
Kaldır |
Uygulamayı kaldırma komutu |
Verilen işletim sistemi için geçerli komut |
Güncelleştir |
isteğe bağlı. Uygulamayı güncelleştirme komutu. Belirtilmezse ve bir güncelleştirme gerekiyorsa, eski sürüm kaldırılır ve yenisi yüklenir. |
Verilen işletim sistemi için geçerli komut |
targetRegions/name |
Çoğaltılması gereken bölgenin adı |
Azure bölgesini doğrulama |
targetRegions/regionalReplicaCount |
isteğe bağlı. Oluşturulacak bölgedeki çoğaltma sayısı. Varsayılan değer 1'tir. |
1 ile 3 arasında tamsayı (dahil) |
endOfLifeDate |
Uygulama sürümü için gelecekteki bir kullanım süresi sonu tarihi. Bunun yalnızca müşteri başvurusuna yönelik olduğunu ve uygulanmamış olduğunu unutmayın. |
Geçerli gelecek tarih |
excludeFromLatest |
Belirtilirse, bu sürüm en son sürüm için dikkate alınmaz. |
Doğru veya yanlış |
VM'ye VM uygulama sürümü eklemek için, VM'de PUT gerçekleştirin.
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}"
}
VM uygulamasını tekdüzen ölçek kümesine uygulamak için:
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}"
}
Alan Adı |
Açıklama |
Sınırlamalar |
sıralama |
isteğe bağlı. Uygulamaların dağıtılma sırası. Aşağıya bakın. |
Tamsayıyı doğrulama |
packageReferenceId |
Galeri uygulaması sürümüne başvuru |
Geçerli uygulama sürümü başvurusu |
configurationReference |
isteğe bağlı. Bu dağıtım için yapılandırmayı içeren bir depolama blobunun tam URL'si. Bu, daha önce defaultConfiguration için sağlanan tüm değerleri geçersiz kılar. |
Geçerli depolama blobu başvurusu |
treatFailureAsDeploymentFailure |
isteğe bağlı. VM Uygulaması için sağlama durumu. False olarak ayarlandığında sağlama durumu, uygulama dağıtımı hatasından bağımsız olarak her zaman 'başarılı' olarak gösterilir. |
Doğru veya Yanlış |
Sipariş alanı, uygulamalar arasındaki bağımlılıkları belirtmek için kullanılabilir. Sipariş kuralları şunlardır:
Büyük/küçük harf durumu |
Anlamı Yükle |
Hata Anlamı |
Sipariş belirtilmedi |
Sıralanmamış uygulamalar, sıralı uygulamalardan sonra yüklenir. Sıralanmamış uygulamalar arasında yükleme sırasının garantisi yoktur. |
Sıralı veya sırasız olması durumunda diğer uygulamaların yükleme hataları, sıralanmamış uygulamaların yüklenmesini etkilemez. |
Yinelenen sipariş değerleri |
Uygulama, aynı sırayla diğer uygulamalara göre herhangi bir sırayla yüklenir. Aynı siparişe sahip tüm uygulamalar, düşük siparişlere sahip olanlardan sonra ve daha yüksek siparişlere sahip olanlardan önce yüklenir. |
Daha düşük bir sıralamaya sahip önceki bir uygulama yüklenemezse, bu siparişe sahip hiçbir uygulama yüklenmez. Bu siparişe sahip herhangi bir uygulama yüklenemezse, daha yüksek bir sipariş yüklemesine sahip uygulama yoktur. |
Artan siparişler |
Uygulama, düşük siparişlere sahip olanlardan sonra ve daha yüksek siparişlere sahip olanlardan önce yüklenir. |
Daha düşük bir sıralamaya sahip önceki bir uygulama yüklenemezse, bu uygulama yüklenmez. Bu uygulama yüklenemezse, daha yüksek sıralı bir uygulama yüklenmez. |
Yanıt, tam VM modelini içerir. İlgili bölümler aşağıdadır.
{
"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=}"
}
]
}
VM uygulamaları henüz VM'ye yüklenmediyse, değer boş olur.
VM örneği görünümünün sonucunu almak için:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/virtualMachines/\<**VMName**\>/instanceView?api-version=2019-03-01
Sonuç şuna benzer:
{
...
"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}
"
}
]
}
...
]
}
VM Uygulaması durumu, örnek görünümündeki VM Uygulaması uzantısının sonucunun durum iletisindedir.
VMSS Uygulamasının durumunu almak için:
GET
/subscriptions/\<**subscriptionId**\>/resourceGroups/\<**resourceGroupName**\>/providers/Microsoft.Compute/ virtualMachineScaleSets/\<**VMSSName**\>/virtualMachines/<**instanceId**>/instanceView?api-version=2019-03-01
Çıktı, önceki VM örneğine benzer.